背景预研

集成UT需先了解业内常见driven development模式, 参考

1️⃣: TDD(Test-driven development) 强调开发在开发阶段完成红色❤️️>绿色💚>重构流程, 修改失败的红色❤️单元测试改至绿色💚通过、然后在绿色💚的前提下重构简化逻辑, 测试与编码同步面向非开发人员不友好.

2️⃣: BDD(Behavior-Driven Development) 强调业务专家在开发前编写Behavior Script, 开发使用编程语言实现Behavior Script(测试大纲).通过业务专家的行为脚本推动(通过类似[Gherkin]ru软件制作(https://cucumber.io/docs/gherkin/reference/))开发.

3️⃣: ATDD(Acceptance-Test-Driven Development) 强调业务专家、开发人员和测试人员合作编写测试, 基于TDD和BDD. 业务专家BDD制定核心业务功能Behavior Script, 开发完成TDD, 测试完成更高优先级、集成度更高的UI自动化测试.

基于团队内部的基础建设先采用TDD模式, 随着基建的逐步完善慢慢过渡到BDD、ATDD

TDD UT需求(桌面客户端APP):

  • 1.Basic GUI testing 重要程度** 桌面客户端appUT必须能模拟键盘鼠标事件
  • 2.Lightweight
  • 3.支持Cmake生态方便扩展
  • 4.支持GUI扩展, 方便后续在Gui查看UT报表
  • 5.Thread-safety
  • 6.BDD

Catch2 当下C++开源社区较活跃强大的UT, Qt Test 短期集成Qt Test需要使用Qt test Basic GUI相关组件模拟gui操作, 并且兼容Cmake生态后期再集成3方UT.Qt test底层也集成了Catch2

QTest集成

Qmltest Casesignalspy

⏺️ C++

a brief discussion of testing approaches

常见的测试形式与概念:

  • smoke tests(冒烟测试): 以开发视角测试软件是否可以编译、运行时是否崩溃
  • white-box testing(白盒测试): 以开发视角在CI/CD流水线早期阶段, 进行全量代码覆盖率的单元测试
  • black-box testing(黑盒测试): 以用户视角在CI/CD流水线中期阶段, 高功能覆盖率的单元测试
  • regression testing(回归测试): 以用户视角在CI/CD流水线后期阶段, 全量的功能集成测试

总结

客户端测UT主要分为如下几个部分:

1️⃣: smoke test: ctest负责构建、运行相关的测试 2️⃣: white-box testing: Qt Test负责业务、接口相关的逻辑测试 3️⃣: black-box testing: Qt Quick Test负责模拟GUI操作的功能测试 4️⃣: regression testing: (可选暂定为内部的gui测试工具)

运行

  • 命令行运行: 命令行运行需要指定--test-dir

    1️⃣generate: cmake -S . -B build -G "Visual Studio 15 2017" -A Win32

    2️⃣build % install: cmake --build ./build --config Release --target INSTALL

    3️⃣testing: ctest [-VV] -C Debug --test-dir ./build

  • QTcreator: 选择运行完成后自动执行testing

    Alt text

  • VS2017: 批生成勾选上test相关

Alt text

Alt text