软件测试之白盒测试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
//程序功能:输入年、月,输出该月份的最大天数
void main()
1{
2 int year, int month;
3 int maxday = 0;
4 cin>>year>>month;
5 if ( month >= 1 && month <= 12 )
6 {
7 if ( month == 2 )
8 {
9 if ( year % 4 == 0 )
10 {
11 if ( year % 100 == 0 )
12 {
13 if ( year % 400 == 0 )
14 maxday = 29;
15 else
16 maxday = 28;
17 }
18 else
19 maxday = 29;
20 }
21 else
22 maxday = 28;
23 }
24 else
25 {
26 if ( month == 4 || month == 6 || month == 9 || month == 11 )
27 maxday = 30;
28 else
29 maxday = 31;
30 }
31 }
32 cout<<"The MaxDay is:"< 33} 要求: 1.画出该程序的程序流程图 2.画出该程序的DD路径图 转换后的(D-D图): A:{1-5};B:{6-7};C:{8-9};D:{24-26};E:{10-11};F:{21-23};G:{12-13}; H:{18-20};I:{14};J:{15-17};K:{27};L:{28-31};M:{32-33}; 3.试用路径覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定条件覆盖以及路径覆盖五种方法对上述问题设计测试用例 2.判定覆盖: 3.条件覆盖: (1)在判定语句5中有以下条件: 1.month >= 1 ; 2.month <= 12 ; (2)在判定语句7中有以下条件: 3.month == 2; (3)在判定语句9中有以下条件: 4.year % 4 == 0; (4)在判定语句11中有以下条件: 5.year % 100 == 0; (5)在判定语句13中有以下条件: 6. year % 400 == 0; (6)在判定语句26中有以下条件: 7. month == 4 ;8.month == 6 ;9.month == 9 ;10.month == 11; 4.判定条件覆盖: (1)在判定语句5中有以下条件: 1.month >= 1 ; 2.month <= 12 ; (2)在判定语句7中有以下条件: 3.month == 2; (3)在判定语句9中有以下条件: 4.year % 4 == 0; (6)在判定语句11中有以下条件: 5.year % 100 == 0; (7)在判定语句13中有以下条件: 6. year % 400 == 0; (6)在判定语句26中有以下条件: 7. month == 4 ;8.month == 6 ;9.month == 9 ;10.month == 11; 5.路径覆盖: 解释:我在控制流程图的各条边上都编了序号,在路径覆盖中覆盖的路径用分支边上的序号表示; 4.用三种方法求出上述问题的圈复杂度(基路径数量V(G)) 方法一:判定()结点个数计算法:V(G)=p+1;在此D-D图中,判定结点个数为P=6;V(G)=6+1=7; 方法二:.圈数计算法:V(G)= 圈数+1;该D-D图中,圈数为6;V(G)=6+1=7; 方法三:根据连通图公式计算:V(G)=E-N+2p;E是D-D图中边的个数,N是D-D图中结点的个数,p是连通图的个数,p一般等于1;在该图中E=40,N=35,p=1; V(G)=E-N+2p=40-35+2=7; 5.写出上述问题的基路径测试方法所采用的基路径,写明过程 过程:首先我根据D-D路径来寻找基路径,找到一条最长的路径为路径1,再根据路径1中的第一个分支结点A寻找其他没走过的路,这条路为路径2,此时遍历完了分支结点A,再在路径1中找第2个分支结点为B,根据分支结点B找到路径3,同理我们在路径1中还有分支结点C,E,G,它们可以找到路径4,路径5和路径6,此时我们会发现已经查找完了5个分支结点,只剩下分支结点D未被遍历,我们根据分支结点D可以找到路径7,此时所有的基路径就已经全部找到的。 基路径分别为: 路径1:0-A-B-C-E-G-I-M-34; 路径2:0-A-M-34; 路径3:0-A-B-D-K-M-34; 路径4:0-A-B-C-F-M-34; 路径5:0-A-B-C-E-H-M-34; 路径6:0-A-B-C-E-G-J-M-34; 路径7:0-A-B-D-L-M-34; 6.找出变量maxday的定义节点、使用节点以及定义使用路径并判断其是否为定义清除路径 1.1定义结点为:{3,14,16,19,22,27,29}; 1.2 使用结点为:{32}; 1.3 定义使用路径:(1)3-4-5-6-7-8-9-10-11-12-13-14-32;(2)3-4-5-6-7-8-9-10-11-12-13-15-16-17-32; (3)3-4-5-6-7-8-9-10-11-18-19-20-32;(4)3-4-5-6-7-8-9-21-22-23-32;(5)3-4-5-6-7-24-25-26-27-32; (6)3-4-5-6-7-24-25-26-28-29-30-31-32;(7)3-4-5-32;(8)14-32;(9)16-17-32;(10)13-20-32; (11)22-23-32;(12)27-32;(13)29-30-31-32; 1.4定义清除路径:(1)3-4-5-32;(2)14-32;(3)16-17-32;(4)13-20-32;(5)22-23-32; (6)27-32;(7)29-30-31-32; 1.5问题分析: 1.定义结点7个,为语句3,14,16,19,22,27,29,且均被使用,所以不存在变量被定义但未被使用 的情况; 2.使用结点有1个,且被定义,使用结点均能和定义结点连接形成一条路,所以不存在变量使用 前未被定义的情况; 3.定义使用路径为13条,定义清除路径为7条,定义使用路径不等于定义清除路径,所以存在变 量使用前被定义两次的情况; 综合以上三个方面的讨论分析,可以得出对于maxday的定义是有问题的,存在使用前被定义两次的情况。