问题 问答题

如图所示的程序流图描述了最多输入50个值(以-1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。请针对该程序流程图进行基本路径覆盖测试用例设计。

答案

参考答案:整个解题步骤如下:
(1)导出过程的控制流图,如下图所示。


(2)确定环形复杂性度量V(G):
①V(G)=6(个区域)
②V(G)=E-N+2=16-12+2=6
其中E为流图中的边数,N为节点数。
③V(G)=P+1=5+1=6
其中,P为谓词节点的个数。在流图中,节点2、3、5、6、9是谓词节点。
(3)确定基本路径集合(即独立路径集合),于是可确定6条独立的路径:
路径1:1-2-9-10-12
路径2:1-2-9-11-12
路径3:1-2-3-9-10-12
路径4:1-2-3-4-5-8-2…
路径5:1-2-3-4-5-6-8-2…
路径6:1-2-3-4-5-6-7-8-2…
(4)为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。
①路径1(1-2-9-10-12)的测试用例:
score[k]=有效分数值,当k<i时;
score=-1,2≤i≤50;
期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。
②路径2(1-2-9-11-12)的测试用例:
score[1]=-1;
期望结果:average=-1,其他量保持初值。
③路径3(1-2-3-9-10-12)的测试用例:
输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;
期望结果:n1=50,并且算出正确的总分和平均分。
④路径4(1-2-3-4-5-8-2…)的测试用例:
score=有效分数,当i<50时;
score[k]<0,k<i;
期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。
⑤路径5的测试用例:
score=有效分数,当i<50时;
score[k]>100,k<i;
期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。
⑥路径6(1-2-3-4-5-6-7-8-2…)的测试用例:
score=有效分数,当i<50时;
期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。
注意:一些独立的路径往往不是完全孤立的,有时它是程序正常的控制流的一部分。这时,这些路径的测试可以是另一条路径测试的一部分。

单项选择题
单项选择题 A1/A2型题