2 软件测试与测试优先的编程
大纲
- 测试用例(Test Case)
- 测试优先编程(TDD)
- 单元测试
- 使用Junit进行自动化单元测试
- 黑盒测试
- 等价类划分
- 边界值分析
- 覆盖度
Testing levels
- 单元测试(Unit testing)
- 集成测试(Integration testing)
- 系统测试(System testing)
两种测试的分类:
- 静态测试(Static)
在程序非运行的情况下。
静态测试更多的是检查源代码的结构、语法以及数据流等等。 - 动态测试(Dynamic)
在程序运行时
测试用例
测试用例:输入+执行条件+期望结果
测试优先编程
- 单元测试:
对软件的最小单元模型开展测试,隔离各个模块,容易定位错误和调试
黑盒测试
黑盒测试:用于检查代码的功能,不关心内部实现细节
-
等价类划分:
将被测函数的输入域划分为等价类,从等价类中导出测试用例
基于的假设是:相似的输入会展示相似的行为。 -
边界值分析:
理由:大量错误发生在输入域的“边界”而非中央。
覆盖分析的两个极端
- 全覆盖(笛卡尔积)
- 覆盖每个取值(至少一次)
每个维度的每个取值至少被测试用例覆盖一次即可。
代码覆盖度
测试效果:路径覆盖>分支覆盖>语句覆盖
测试难度:路径覆盖>分支覆盖>语句覆盖