设计若干个测试用例,运行所测程序,使得每一可执行语句至少执行一次。语句覆盖是最弱的逻辑覆盖准则。IF (( A > 1) AND ( B = 0 ))THEN
X = X / A
IF (( A = 2) OR ( X > 1 ) THEN
X = X + 1其中“AND”和“OR”是两个逻辑运算符。图给出了它的流程图。a、b、c、d和e是控制流上的若干程序点。
![]()
语句覆盖的含意是,在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。
这时所谓“若干个”,自然是越少越好。
在上述程序段中,我们如果选用的测试用例是:
![]()
则程序按路径ace执行。这样该程序段的4个语句均得到执行,从而作到了语句覆盖。
但如果选用的测试用例是:
![]()
程序按路径abe执行,便未能达到语句覆盖。
从程序中每个语句都得到执行这一点来看,语句覆盖的方法似乎能够比较全面地检验每一个语句。但它也绝不是完美无缺的。
假如这一程序段中两个判断的逻辑运算有问题,例如,第一个判断的运算符“AND”错成运算符“OR”或是第二个判断中的运算符“OR”错成了运算符“AND”。这时仍使用上述前一个测试用例CASE1,程序仍将按路径ace执行。这说明虽然也作到了语句覆盖,却发现不了判断中逻辑运算的错误。