是什么(What)
单元测试是一种软件测试方法,通过对程序的单个组件进行测试来验证它们的正确性。这些组件通常是函数、方法或类,而单元测试是通过编写测试用例来对这些组件进行测试的。测试用例会输入一些数据或参数,然后比较预期的输出或行为与实际的输出或行为是否一致。
单元:函数、类、方法、功能模块、子系统
为什么要用(Why)
使用单元测试可以帮助开发人员更快地检测和修复代码中的错误,减少后期的调试和修复工作量。单元测试可以提高代码的可靠性、可维护性和可重复性,同时还可以提高代码的质量和可读性。此外,单元测试可以帮助开发人员更好地理解代码的行为和设计,以及如何使用它们。
应用场景(When/Where)
- 对于核心业务逻辑的测试;
- 对于边界条件的测试;
- 对于处理复杂数据结构的测试;
- 对于代码的正确性和性能的测试。
如何使用(How)
基本步骤如下:
- 选择一个单元测试框架,例如 JUnit、PHPUnit 等;
- 编写测试用例,包括输入、输出和预期结果;
- 运行测试用例并分析结果;
- 根据测试结果进行代码修复,并重新运行测试用例,直到所有测试通过为止。
最佳实践
[[单元测试最佳实践]]
测试覆盖率
- 行覆盖(Line Coverage):用于度量被测代码中每一行执行语句是否都被测试到了。
- 分支覆盖(Branch Coverage):用于度量被测代码中每一个代码分支是否都被测试到了。
- 条件覆盖(Condition Coverage):用于度量被测代码的条件中每一个子表达式(true 和 false)是否都被测试到了。
- 路径覆盖(Path Coverage):用于度量被测代码中的每一个代码分支组合是否都被测试到了。
尽管 100% 测试覆盖率不是目标,但核心模块、可重用度高的方法、类的语句覆盖率和分支覆盖率都要达到 100%,而整个系统其他代码尽量达到 70%即可。
参考
单元测试实践
有赞单元测试实践_文化 & 方法_国庆_InfoQ精选文章
Go-怎么做单元测试? - 知乎
https://mp.weixin.qq.com/s/eAptnygPQcQ5Ex8-6l0byA
GitHub - bxcodec/go-clean-arch: Go (Golang) Clean Architecture based on Reading Uncle Bob's Clean Architecture
网友评论