UT Intro
背景预研
集成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集成
⏺️ 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-dir1️⃣generate:
cmake -S . -B build -G "Visual Studio 15 2017" -A Win322️⃣build % install:
cmake --build ./build --config Release --target INSTALL3️⃣testing:
ctest [-VV] -C Debug --test-dir ./build -
QTcreator: 选择运行完成后自动执行testing

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


CalvinHxxBlog