在白盒测试过程中,逻辑覆盖要做到全面而不遗漏,是不太可能的。主要原因如下:
–无充足的时间
–即使给出足够的时间,100%的语句覆盖也只能检测84.7%的故障, 100%的分支覆盖也只能检测93.9%的故障。
- 因此,在测试时,应该有重点地对容易发生问题的的地方设计测试用例。
- 两个结构覆盖准则:
–ESTCA覆盖准则
- 一套错误敏感测试用例分析(Errors Sensitive Test Cases Analyst)规则。
- K.A.Foster基于经验,找出了程序中谓词容易出错的部分。
- ESTCA的主要规则如下:
-
- 规则1 对于A>=<B型的分支谓词,应适当地选择A和B的值,使得测试执行到该分支语句时,使>=<各成立一次。这个规则主要检查中间运算符号的错误。
- 规则2 对于A><c(A是变量,c是常量)型的分支谓词,当A<c时,应适当地选择A的值,使A=c-M (M是距c最小的机器容许正数,若A和c均为整型时,M=1);当A>c时,应适当地选择A的值,使A=c+M (M是距c最小的机器容许正数,若A和c为整型时,M=1)。
- 规则3 对外部输入变量赋值,使其在每个测试用例中均有不同的值和符号,并与同一组测试用例中其他变量的值与符号不一致。即变量在不同测试用例中使用不同的值,避免变量名写错,避免应该使用变量的地方却使用了常量。
–LCSAJ覆盖准则
- 第1层:语句覆盖。
- 第2层:分支覆盖。
- 第3层:LCSAJ覆盖。即程序中每个LCSAJ在测试中至少经历一次。
- 第4层:两两LCSAJ覆盖。即程序中每个首尾相连LCSAJ在测试中至少经历一次。
- ……
- 第n+2层(n为自然数):每n个首尾相连的LCSAJ组合都要在测试中至少经历一次。