语句覆盖(Statement Coverage):
- 定义:确保测试套件中的每个可执行语句至少执行一次。
- 特点:是最基本的覆盖方法,只关注语句是否被执行,而不关心逻辑或条件。
- 缺点:可能遗漏某些逻辑错误,因为只关注语句执行,不关注条件或判定。
判定覆盖(Decision Coverage)或分支覆盖(Branch Coverage):
- 定义:确保每个判定(分支点)的每个可能结果(真和假)至少发生一次。
- 特点:关注判定(如if-else语句)的每个可能结果是否都被测试到。
- 缺点:虽然比语句覆盖更强,但仍然可能遗漏某些路径,特别是当多个条件组合时。
条件覆盖(Condition Coverage):
- 定义:确保每个条件(在判定中的每个子表达式)的每个可能结果(真和假)至少发生一次。
- 特点:关注判定中的每个条件,确保它们的每个可能结果都被测试到。
- 缺点:虽然测试了每个条件的结果,但可能没有测试到条件的组合。
条件组合覆盖(Multiple Condition Coverage):
- 定义:确保判定中每个条件的每个可能结果组合至少发生一次。
- 特点:这是条件覆盖的扩展,它考虑了条件之间的组合,确保所有可能的组合都被测试到。
- 优点:比条件覆盖更强,能够发现更多逻辑错误。
- 缺点:随着条件数量的增加,测试组合的数量会急剧增加,可能导致测试成本过高。
路径覆盖(Path Coverage):
- 定义:确保程序中所有可能的独立路径至少执行一次。
- 特点:这是最强的覆盖方法,因为它测试了程序的所有可能执行路径。
- 缺点:对于复杂的程序,路径数量可能非常大,甚至是指数级的,因此实现路径覆盖可能是不切实际的。
对于逻辑表达式((a>0)&&(b>0))||(c<5),需要()个测试用例才能完成条件组合覆盖
A 、2 B、4 C、6 D、8
答案是D,2的3次方,等于8