《微软的软件测试之道》读书笔记 之 结构测试技术
2014-07-18
我们需要结构测试吗?
微软的一项试验说明了结构测试的在代码覆盖中起到的效果:
超过3000名测试员参与了这项实验,每25人一组,实验结果在所有组中都是一致的。在这项研究中,
- 脚本化测试:根据样式书设计的脚本化测试在被测程序上达到了标称83%的代码覆盖率。
- 探索性测试:然后,实验参与者允许进行每人15分钟,累计5小时的探索性测试。令人惊讶的是,代码覆盖率平均只增加了3个百分点。
- 结构测试:但是,当实验参与者能够分析探测过的(Instrumented)代码的运行结果并使用白盒技术设计测试以后,不到20分钟的时间代码覆盖率就提高到了 91%(这是不使用代码突变或故障注入所能达到的最大实际代码覆盖率)。同时,测试员们也能够更好的从代价和收益的角度解释为什么剩下的9%未覆盖代码是不可测试的。
下图显示了不同测试技术的代码覆盖效果。
图1 不同测试技术的代码覆盖效果
块测试
此书把块测试、决策测试、条件测试、基础路径测试都归入结构测试技术。这里主要讲一下块测试。
块覆盖和语句覆盖
- 语句覆盖测量一个程序在测试过程中被执行过的语句的数量。
- 块覆盖测量无分支的连续语句组的数量。导致控制流程转向分支的条件语句可以包含若干块。
这个看起来似乎只是一个极小的区别,然而,语句测试和块测试的区分是相当重要的。因为相较于语句测试,块测试对控制流程提供了更好的敏感度。
?代码块的计算
块测试小结
块测试是用于单元测试的一种普遍方法:
优势:它非常适合于迅速地评估某函数的基本功能。对于设计用于执行switch/case语句和异常处理程序控制流程的测试来说,它也是一个很有价值的技术。
劣势:然而,块测试是健壮的结构测试中相对较弱的标准,它还可能漏掉控制流程的一些重要的分支。此外,块测试还容易忽略一些潜在的问题,特别是在我们测试的目的只是要提高代码覆盖率而不是要仔细分析被测试代码的情况下。
《微软的软件测试之道》读书笔记 之 结构测试技术
时间: 2024-10-01 06:55:20