软件测试
目的
通过在编写代码的整个过程中添加测试的检测流程,来减少设计失误、笔误、以及在程序中表现出来的失误。
基本概念
PIE模型
错误分类
Fault:程序中的错误代码
Error:错误代码导致的错误状态
Failure:错误状态表现出来后被感知
测试能够发现的错误只有Failure级别,即表现出来的错误。程序中处于Error和Fault级别的错误单靠测试是无法检测出来。所以这需要开发工程师自己做白盒测试尽量避免Fault的出现。
白盒测试方法
通过白盒测试,希望开发工程师在设计代码编写代码之后,能够自己证明代码是无误的。就像数学题算完之后的检验方法一样。
图覆盖
任何代码都可以用图的方式表示。在测试的时候,将图的每一部分跑一遍,看看能不能得到正确结果的方法就是图覆盖。
控制流生成
程序的控制流,由工作语句、if、while/for、switch组成。也相当与代码逻辑的流程图。
结构化覆盖
节点覆盖/边覆盖,控制流覆盖的一部分
主路径覆盖
简单路径:每个节点在路径中只出现一次。
主路径:最长的简单路径,不是任何简单路径的子集。
生成测试用例,覆盖所有主路径。主路径覆盖可以减少覆盖的工作量
基本路径覆盖
独立路径:路径中含有其他路径中不含有的节点或者边
线性独立路径个数:CC=E-V+2(圈复杂度)
基本路径测试步骤:
生成控制流图
计算圈复杂度