问答题
针对以下C语言程序,请按要求回答问题。
已知weekday.c源程序如下:
#include<stidio.h>
#include<conio.h>
/*主函数*/
Int main()
{
Char letter;
Printf("please input the first letter, "Y" to exit!/n");
While((1etter=getch())!="Y") //当输入字母为Y时结束
{
Switch(letter)
{
Case "S":
Printf("%c/n", letter);
Printf("please input second letter/n"); //输入第二个字母
If((letter=getch())=="a")
Printf("Saturday/n");
Else if(letter=="u")
Printf("Sunday/n");
Else printf("data error/n");
Break;
Case "F":
Printf("fridaykn");
Break;
Case "M":
Printf("mondayha");
Break;
Case "T":
Printf("%c/n", letter);
Printf("please input second letter/a"); //输入第二个字母
If((letter=getch())=="u")
Printf("Tuesday/n");
Else if(letter=="h")
Printf("Thursday/n");
Break;
Case "W":
Printf("Wednesday/n");
}
}
Return 0;
}
问答题
画出主函数main的控制流程图。
【正确答案】
【答案解析】
问答题
设计一组测试用例,使main函数的语句覆盖率尽量达到100%。
【正确答案】
【答案解析】[path1]1,2
[path2]2,3
[path3]2,3,4,5,22
[path4]2,3,6,7,22
[path5]2,3,6,8,22
[path6]9,10,22
[path7]11,12,22
[path8]13,14
[path9]13,14,15,16
[path10]1 3,14,17,18,22
[path11]13,14,8,22
[path12]19,20,22
[path13]19,8,22
生成测试用例,确保基本路径集中每条路径的执行:
path1:输入数据y,输出的结果程序结束返回值0。
path2:输入数据s,输出结果“s输入第二个字母”。
path3:输入数据s后,输入数据a,输出结果“Saturdav”。
path4:输入数据s后,输入数据u,输出结果“Sunday”。
path5:输入数据s后,输入数据非a非u,输出结果“data error”。
path6:输入数据f,输出结果“friday”。
path7:输入数据m,输出结果“monday”。
path8:输入数据t,输出结果“输入第二个字母”。
path9:输入数据t后,输入数据u,输出结果“tuesday”。
path10:输入数据t后,输入数据h,输出结果“thursday”。
path11:输入数据t后,输入数据非u非h,输出结果“data crror”。
path12:输入数据w,输出结果“Wednesday”。
path13:输入数据defalt,输出结果“data error"。
问答题
Main函数的语句覆盖率能否达到100%?如果认为无法达到,则说明原因。
【正确答案】
【答案解析】不能达到100%,一些独立的路径如此程序中的“输入”,往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的部分。