一般和界面打交道的测试人员只会用到黑盒测试的方法,因为没有代码阅读的权限。
白盒测试偏向于代码化的测试用例设计,并且将其自并入CICD。
黑盒测试用例设计方法
黑盒测试侧重于从用户的角度验证系统功能是否符合需求,而不关注代码的内部实现。
这里要说明测试方法不是铁板一块,在测试用例设计的过程中通常会涉及多种方法的共用,这一点只能通过经验慢慢消化。
例如:等价类和边界值结合,决策表和错误推测结合等。
-
等价类划分
- 描述:将输入数据划分为多个等价类,选取每个类的代表值作为测试用例,减少测试数量但仍能有效覆盖。
- 适用场景:适用于验证输入的有效性、边界条件等。
-
边界值分析
- 描述:测试数据的边界值,包括上边界、下边界以及临界值。因为错误通常发生在边界附近。
- 适用场景:适用于输入域为连续的情境,如数值范围、数组大小等。
-
决策表测试
- 描述:通过构建决策表,描述输入条件与对应的输出结果,生成测试用例以覆盖不同的决策组合。
- 适用场景:决策表是用来处理多个输入条件与输出结果之间的关系的,特别适用于多条件、多分支的情况,例如表单(多个输入)提交。
-
状态转换测试
- 描述:根据系统的状态机模型,测试不同输入条件下的状态转换,确保系统在不同状态下的行为符合预期。
- 适用场景:状态和状态之间的变化,特别适用于那些有明确状态变化和行为转换的系统。如账户状态、订单状态等。在跨模块,跨组件等状态观测中很重要。
-
因果图法
- 描述:通过构建因果图(条件和结果之间的逻辑关系图),推导出最小的测试用例集。
- 适用场景:因果图适用于复杂的逻辑关系,特别是当多个条件(可能通过与、或的逻辑关系)共同作用时,决定了系统的行为。用于验证系统在特定条件组合下的反应。构建出不同的条件进行结果的验证。
-
错误推测法
- 描述:基于经验和常见的错误模式推测系统可能出错的地方,并针对这些区域设计测试用例。
- 适用场景:适用于系统复杂,历史上有常见错误的情况。异常场景,包括系统不支持,或者系统不确定是否支持的异常构造。
白盒测试用例设计方法
白盒测试侧重于检查程序内部的结构和逻辑实现,要求测试人员了解代码细节。
-
语句覆盖
- 描述:设计测试用例确保程序中的每一条语句都至少执行一次。
- 适用场景:适用于验证每条语句是否都被执行。
-
分支覆盖
- 描述:确保程序中的每一个分支(如 if-else、switch-case 等)都被至少执行一次,以覆盖所有分支路径。
- 适用场景:适用于检查决策语句的执行情况。
-
路径覆盖
- 描述:确保程序中每条可能的执行路径都被至少执行一次。通常比语句覆盖和分支覆盖更全面。
- 适用场景:适用于检查复杂控制流的完整性。
-
条件覆盖
- 描述:确保程序中的每一个条件表达式(如 if 条件语句)在不同的输入下都能执行“真”或“假”路径。
- 适用场景:适用于检查条件语句的执行逻辑。
-
条件判定覆盖
- 描述:结合条件覆盖和分支覆盖,确保每个条件在每个分支路径中都能被验证。
- 适用场景:适用于需要验证条件判定的逻辑复杂性。
-
循环测试
- 描述:通过设计测试用例确保循环语句(如 for、while 等)中的各种情况被覆盖,包括零次、一遍、多遍及无限次循环。
- 适用场景:适用于含有循环的程序段,确保循环边界条件和不同循环次数都能被执行。
-
数据流测试
- 描述:通过检查程序中数据的定义和使用,确保数据的每一个定义点和使用点之间的关系都得到验证。
- 适用场景:适用于涉及复杂数据流和变量作用域的系统。