问答题 [说明] 给出一个接收三个数a、b、c作为三角形边长并输出三角形的类型的程序。程序代码如下所示: 结点 源代码行 A read a, b, c B type = "scalene" C if(a = = b || b = = c|| a = = c) D type = "isosceles" E if (a = = b && b= =c) F type = "equilateral" G if (a> =b+ c || b> =a+ c||c> =a+ b) H type = "not a triangle" I if (a< =0 || b< =0 ||c< =0) J type = "bad inputs" K print type 给出上面三角形伪码中的所有可行路径,进行每条路径测试。并找出达到C0和C1覆盖的最小测试案例集合。
【正确答案】
【答案解析】试题一
[解答要点] 一条路径是利用某个测试案例执行的一个唯一的程序结点序列。在上述测试矩阵中有8个子域。这8个子域每一个子域恰好是一条路径。在该例子中,有16个T和F的不同组合。但是,其中有8个组合是不可行路径。也就是说,对于诙问题的条件不存在具有这8种T和F的组合的测试案例。很难确定一条路径是不可行还是难于找到执行该路径的测试案例。
下面的表给出了三角形伪代码中的8条可行路径。
路径
T/F
测试案例
输出
ABCEGIK
FFFF
3,4,5
不等边三角形
ABCEGHIK
FFTF
3,4,8
不是三角形
ABCEGHIJK
FFTT
0,5,6
不良输入
ABCDEGIK
TFFF
5,8,5
等腰三角形
ABCDEGHIK
TFTF
3,8,3
不是三角形
ABCDEGHIJK
TFTT
0,4,0
不良输入
ABCDEFGIK
TTFF
3,3,3
等边三角形
ABCDEFGHIJK
TTTT
0,0,0
不良输入
C0可以用三个小于或等于零的相同的值来达到,即0, 0,0。
C1可以用两个测试案例来达到,分别是0,0,0和一个不等边三角形(即3,4,5)。