请列举白盒测试中常用的测试方法,并各给出一个具体例子。
考察说明
考查对白盒测试原理和常用覆盖方法的理解。
回答思路
- 【回答框架 1】白盒测试是一种基于代码内部结构的测试方法,通过设计测试用例来覆盖程序内部的逻辑路径。常用的测试方法包括语句覆盖、判定覆盖、条件覆盖、判定条件覆盖和路径覆盖。
- 【回答框架 2】语句覆盖要求每个可执行语句至少执行一次。例如,对于代码片段:if (a > 1 && b == 0) { x = x / a; } 需要设计测试用例使该语句至少执行一次。
- 【回答框架 3】判定覆盖要求每个判定的真和假分支至少执行一次。例如,对于上述代码,需设计两个用例:一个使条件为真,另一个使条件为假。
- 【回答框架 4】条件覆盖要求每个判定的每个条件的所有可能取值至少出现一次。例如,对条件 a > 1 和 b == 0,需设计用例使 a > 1 为真和假,b == 0 为真和假。
- 【回答框架 5】路径覆盖要求覆盖程序中的所有可能路径。例如,在一个有一个判断的程序中,需要设计用例覆盖判断为真和为假的两条路径。
- 【关键点 1】白盒测试基于代码内部结构设计用例。
- 【关键点 2】语句覆盖是覆盖率最低的覆盖方法。
- 【关键点 3】判定覆盖覆盖每个判断的真假分支。
- 【关键点 4】条件覆盖覆盖每个条件的所有可能取值。
- 【关键点 5】路径覆盖覆盖所有路径,测试成本最高。
- 【易错点 1】条件覆盖不一定覆盖所有判定分支,比如条件组合可能遗漏。
- 【易错点 2】路径覆盖在复杂程序中路径数量可能指数级增长。
- 【易错点 3】白盒测试不能发现代码逻辑之外的错误,如需求错误。