软件构造课程思考4

发布时间 2023-05-22 10:12:36作者: Zzzzzzxz

测试(Test)

测试用例=输入+执行条件+期望结果

写spec->写符合spec的测试用例->写代码执行测试反复修改

TDD(test-driven development)

好的测试用例的特性与好的测试的特性相似

*写测试用例时必须既要考虑有效输入也要考虑无效输入

单元测试

针对软件的最小单元模型展开测试,隔离各个模块,容易定位错误和调试

黑盒测试/白盒测试

黑盒测试:对程序外部表现出来的行为的测试(从spec导出测试用例,不考虑内部实现)

白盒测试:考虑内部实现细节(一般较早执行)

白盒测试一般由开发人员完成,黑盒测试一般由测试人员完成

白盒测试标准:独立/基本路径测试:对程序所有执行路径进行等价类划分,找出有代表性的最简单的路径(例如循环只需执行一次),设计测试用例使每一条基本路径至少被覆盖一次

回归测试

一旦程序被修改,重新执行之前的所有测试

代码覆盖度

函数覆盖、语句覆盖、分支覆盖、条件覆盖、路径覆盖

分支覆盖和条件覆盖:分支覆盖 a && b – true/false 条件覆盖:a True a False b True b False

语句覆盖:只需要让 a && b 语句执行一遍即可

条件覆盖和分支覆盖之间没有包含关系

测试效果:路径覆盖 > 分支覆盖 > 语句覆盖(测试难度也是这个顺序)

*等价类划分(重点)

将被测函数的输入域划分成为等价类,从等价类中导出测试用例

例:乘法计算 BigInteger × BigInteger -> BigInteger 函数,可从正/负角度进行等价类划分,同时考虑边界条件—— 0,1,-1,很小的正整数,很小的负整数,很大的正整数,很大的负整数

(注:等价类划分时,错误数据也要考虑其中)?

BVA(Boundary Value Analysis)边界值分析:是对等价类划分方法的补充

在等价类划分时,将边界作为等价类之一加入考虑