此次作业的题目为书上第49页第7题的a-d四小问。
a.控制流图
b.设计简单的错误,使测试用例t2 = (n=5)比t1 = (n=3)更容易被发现。
将if( isDivisible( primes[i], curPrime){
isPrime = false;
break; }中的primes[i],改为primes[0]
当n=3时,所判断的被除数只有2,没有影响。
n = 5时,被除数的数量也随之增大不止为2,因此会产生错误。
c.测试用例t = (n=1)时,测试路径访问链接while语句开始到for语句的边,而不通过while循环体。
d.节点覆盖:{1,2,3,4,5,6,7,8,9,10,11,12,13,14}
边覆盖:{(1,2),(2,3),(2,11),(3,4),(4,5),(5,6),(5,8),(6,7),(6,9),(7,8),(8,2),(8,10),(9,5),(10,2),(11,12),(11,14),(12,13),(13,11)}
主路径覆盖:{ [1,2,3,4,5,6,7,8,10],
[1,2,3,4,5,8,10],
[1,2,3,4,5,6,9],
[1,2,11,12,13],
[1,2,11,14],
[2,3,4,5,6,7,8,2],
[2,3,4,5,6,7,8,10,2],
[2,3,4,5,8,2],
[2,3,4,5,8,10,2],
[3,4,5,6,7,8,10,2,11,12,13],
[3,4,5,6,7,8,10,2,11,14],
[3,4,5,6,9],
[3,4,5,6,7,8,2,11,12,13],
[3,4,5,6,7,8,2,11,14],
[3,4,5,8,2,11,12,13],
[3,4,5,8,2,11,14],
[3,4,5,8,10,2,11,12,13],
[3,4,5,8,10,2,11,14],
[5,6,9,5],
[6,9,5,8,2,11,12,13],
[6,9,5,8,2,11,14],
[6,9,5,8,10,2,11,12,13],
[6,9,5,8,10,2,11,14],
[11,12,13,11],
[12,13,11,14] }
用这道题做测试用例,发现当n>=3时即可完成100%覆盖率。
测试用例为:
下面为n=0,n=1,n=2,n=3时的覆盖率。分别为29.5%,65.9%,96.5%,100%。
对其他程序设计主路径测试用例:
用上机实验的判断三角形形状的程序,程序本身为:
是if-return型,画出控制流图为:
主路径覆盖为:{(1,2,3),
(1,2,4,5,6),
(1,2,3,5,7),
(1,2,4,8),
(1,9)}
测试用例为:{[3,4,5],
[3,3,3],
[3,4,4],
[3,4,6],
[3,4,1]}
得出覆盖率为100%。