三角形、nextday、佣金问题实验报告_第1页
三角形、nextday、佣金问题实验报告_第2页
三角形、nextday、佣金问题实验报告_第3页
三角形、nextday、佣金问题实验报告_第4页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、三角形、nextday、佣金问题实验报告 南昌航空大学实验报告 2021 年 10 月 20 日 课程名称:软件质量保证与测试 实验名称: 测试程序的设计 指导教师评定: _ 签名: _ 一、 实验目的 完成测试用程序的编写,为接下来的测试实验做准备。 二、 实验要求 ( 1 ) 设计程序的语言可以选择 c 、 c+ 、 java 等; ( 2 ) 保证程序语法正确 ( 3 ) 记录实验数据并书写实验报告 题目要求: 题目一:三角形问题 问题描述:输入三角形三条边 a 、 b 、 c ,三条边有效取值范围为 1,200 ,判断该三角形 是什么三角形,输出内容具体包括: ( 1 )等边三角形;(

2、 2 )等腰三角形;( 3 )直角三角形; ( 4 )等腰直角三角形;( 5 ) 一般三角形;( 6 )非三角形;( 7 )输入数据非法。 题目二: nextdate 问题 问题描述:输入年月日 year 、 mo nth 、 day ,其中年份的有效取值范围为 1900,2100 ,请 输出输入日期的下一天, 例如输入 2021 年 9 月 29 日,输出为 2021 年 9 月 30 日。若输入日期非法, 例如输入 2021 年 2 月 30 日,则输出"输入日期不存在',若输入日期超出取值范围,例如输入 2021 年 9 月 32 日,则输出"输入日期超出范围

3、' 。 问题三:佣金问题 问题描述:前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商制造的步枪机 ( lock )、枪托( stock )和枪管( barrel )。枪机卖 45 美元,枪托卖 30 美元,枪管卖 25 美元。 销售商每月至少要售出一支完整的步枪,且生产限额是大多数销售商在一个月内可销售 70 个枪机、 80 个枪托和 90 个枪管。 根据当月的销售情况,并计算销售商的佣金如下: ( 1 ) 不到(含) 1000 美元的部分为 10% ; ( 2 ) 1000 (不含) 1800 (含)美元的部分为 15% ; ( 3 ) 超过 1800 美元的部分为 20% 。 佣

4、金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额 以及佣金。 三、 实验步骤 1 .运行 tc, visual c+, ja va 等开发工具; 2 在开发环境中完成程序设计,并进行调试; 3 在程序没有语法错误的前提下重点检查程序的逻辑错误; 4 对程序进行调试,并记录实验数据。 四、 实验内容 三角形问题: 概要设计: 在输入不同数值可以得到相应的输出结果 ( 1 )当输入三条边的数值大小有一不在范围内, 班级: * 姓名: * 同组人: _ 提示"输入范围不合理' (2) 当输入三值不满足构成三角形条件时,输出"非三角形' (3

5、) 当输入三值只是满足构成三角形条件,没有其他特殊问题,输出 般三角形' (4) ) 当输入三条边只有两个值相等,输出"等腰三角形' (5) 当输入三条边都相等时,输出"等边三角形' (6) 当输入三条边只是满足勾股定理时,输出"直角三角形' (7) 当输入三条边不仅满足勾股定理,而且其中有两条边相等,输出"等 腰直角三角形' 源代码: #in elude lt;stdio.hgt; main () int a,b,c; system( quot;graftabl 936 quot;); clrscr(); pri

6、ntf(quot; 请输入三个边长: nquot;); scan f(quot;%d,%d,%dquot;,amp;a,amp;b,amp; c); if(agt;=1 amp;amp;alt;=200)amp;amp;(bgt;=1 amp;amp;blt;=200)amp;amp;(cgt;=1 amp;amp;clt;=200) if(a+bgt;c amp;amp; a+cgt;b amp;amp; b+cgt;a) if(a*a=b*b+c*c | b*b=a*a+c*c | c*c=a*a+b*b) printf(quot; 可以构成一个直角三角形 nquot;); if(a=b|

7、b=c|a=c) printf(quot; 可以构成一个等腰直角三角形 nquot;); else if(a=b amp;amp; a=c) printf(quot; 可以构成一个等边三角形 nquot;); else if(a=b|b=c|a=c) printf(quot; 可以构成一个等腰三角形 nquot;); else printf(quot; 可以构成一个等腰三角形 nquot;); else printf(quot; 不能构成三角形 nquot;); else printf(quot; 输入范围不合理 nquot;); getch(); nextday 函数: 概要设计:分析不同情

8、况下的输入,可以得到不同输出 运行结果: vz a r a( - - t nklpkfl=ln 1 )当输入数值只要有一个不符合范围,提示"不合理范围' 2 )当输入非月头月尾数值时,输出日期将天数加 1 3 )当输入非 2 月月尾时,输出日期将月份加 1 4 )当输入的为年尾时,输出日期将年份加 1 5 )当输入闰年 28 日时,输出日期将天数加 1 6 )当输入闰年 29 日时,输出日期将月份加 1 7 )当输入非闰年 27 日时,输出日期将天数加 1 8 )当输入非闰年 28 日时,输出日期将月份加 1 9 )当输入非闰年 29 日时,提示"输入错误'

9、 源代码: #includelt;stdio.hgt; main() int year,month,day; int a=31,29,31,30,31,30,31,31,30,31,30,31; int b=31,28,31,30,31,30,31,31,30,31,30,31; system( quot;graftabl 936 quot;); clrscr(); printf(quot; 请输入日期 :nquot;); scanf(quot;%d,%d,%dquot;,amp;year,amp;month,amp;day); if(yearlt;=2100amp;amp;yeargt;=1

10、900) if (year%4=0amp;amp;year%100!=0|year%400=0) if(monthlt;12) if(amonth-1gt;day) printf(' 后一天: d 年 d 月 d 日 ',year,month,day+1); else printf(quot; 后一天: %d 年 %d 月 1 日 quot;,year,month+1); else if(month=12) if(amonth-1gt;day) printf(quot; 后一天: %d 年 %d 月 %d 日 quot;,year,month,day+1); else prin

11、tf(quot; 后一天: %d 年 1 月 1 日 quot;,year+1); else if(monthlt;12) if(bmonth-1gt;day) printf(quot; 后一天 :%d 年 %d 月 %d 日 quot;,year,month,day+1); else printf(' 后一天 : else if(mon th=12) if(bm on th-1gt;day) printf(quot; 后 else printf(quot; 后 天 天 getch(); %d 年 %d 月 1 日 quot;,year,month+1); %d 年 %d 月 %d 日

12、 quot;,year,month,day+1); %d 年 1 月 1 日 ',year+1); 运行结果: 佣金问题: 概要分析: 当输入不同数值时会有不同的的佣金 ( 1 ) 当输入数值不满足要求时,提示"不合理范围' ( 2 ) 当输入数值计算得总销售额不到(含) 1000 美元,佣金为其 10% ( 3 ) 当输入数值计算得总销售额为 1000 (不含) 1800 (含)美元,佣金为 其 15% ( 4 ) 当输入数值计算得总销售额超过 1800 美元,佣金为其 20% 源代码: #in clude lt;stdio.hgt; int mai n() int

13、 x,y,z, n; system( quot;graftabl 936 quot;); clrscr(); printf(quot; 请输入购买的枪机、枪托、枪管数量 :nquot;); scan f(quot;%d,%d,%dquot; , amp; x, amp;y,amp; z); if(xgt;=1 amp;amp; xlt;=70)amp;amp;(ygt;=1 amp;amp;ylt;=80) amp;amp;( zgt;=1 amp;amp;zlt;=90) n=45*x+30*y+25*z; if(nlt;=1000) printf(quot; 枪机数 %d 、枪托数 %d

14、、枪管数 %d 、总销售额 %d 、佣 输出结果错误,代表程序源代码出现错误 金 %fquot;,x,y,z, n, 0.1* n); else if(nlt;=1800) printf(' 枪机数 d 、枪托数 d 、枪管数 d 、总销售额 d 、佣 金 fquot;,x,y,z, n,0.15* n); else printf(quot; 枪机数 d 、枪托数 %d 、枪管数 d 、总销售额 d 、佣金 %f",x,y,z,n,0.2*n); else printf(quot; 输入范围不合理 nquot;); getch(); 运行结果: 请输儿购买的枪机、枪托、枪管数

15、量; 输人范囿不合理 lnt 五、结果分析 对以上三个题目的编码中, 三角形问题和佣金问题没有出现什么错误, 就是在 nextday 中出现众多小错误, 其中,对于范围问题只是对年份进行了控制, 没有对月份及日期进行控 制,从而超出范围也不会作出相对应的提示。而且,在 nextday 中有的输入得不到相对应的 输出,将会在下面的白盒测试中对其进行修改。 南昌航空大学实验报告 2021 年 10 月 27 日 课程名称: 软件质量保证与测试 实验名称: 功能性测试 班级: * 女姓名. * 同组人: 指导教师评定: _ 签名: _ 一、 实验目的 掌握边界值、等价类、决策表测试的基本功能性测试方

16、法 二、 实验要求 分别用健壮性测试(边界值方法)、弱健壮等价类测试(等价类方法)和决策表测试技 术分别对三角形问题 | 、 nextdate 问题和佣金问题设计测试用例(即每个程序都要用这三种 方法进行测试),并分别对实验一所编写的三个程序进行测试。 要求:对于测试用例的设计必须给出详细的设计过程, 在测试过程中如果发现缺陷 (预 期输出与实际输出不符),则采用截图的方式说明缺陷现象,并简单分析其可能产生的原因 及建议,但不允许修改程序。 三、 实验步骤 1 .运行 tc, visual c+, ja va 等开发工具; 2 在开发环境中完成程序设计,并进行调试; 3 在程序没有语法错误的前

17、提下重点检查程序的逻辑错误; 4 对程序进行调试,并记录实验数据。 四、 实验内容 三角形问题 健壮性边界值测试用例 测试用 例 输 入 条 件 预期输出 实际输出 用例状态 a b c test1 0 100 100 提示"输入范围不合理' 提示"输入范围不合理' fail test2 1 100 100 等腰三角形 等腰三角形 pass test3 2 100 100 等腰三角形 等腰三角形 pass test4 100 100 100 等边三角形 等边三角形 pass test5 199 100 100 等腰三角形 等腰三角形 pass test6 2

18、00 100 100 非三角形 非三角形 pass test7 201 100 100 提示"输入范围不合理' 提示"输入范围不合理' fail test8 100 0 100 提示"输入范围不合理' 提示"输入范围不合理' fail test9 100 1 100 等腰三角形 等腰三角形 pass test10 100 2 100 等腰三角形 等腰三角形 pass test11 100 199 100 等腰三角形 等腰三角形 pass test12 100 200 100 非三角形 非三角形 pass test13 10

19、0 201 100 提示"输入范围不合理' 提示"输入范围不合理' fail test14 100 100 0 提示"输入范围不合理' 提示"输入范围不合理' fail test15 100 100 1 等腰三角形 等腰三角形 pass test16 100 100 2 等腰三角形 等腰三角形 pass test17 100 100 199 等腰三角形 等腰三角形 pass -i, test18 100 100 200 非三角形 非三角形 pass test19 100 100 201 提示"输入范围不合理

20、9; 提示"输入范围不合理' fail 缺陷截图: testi : ca ie : | 12032 lxtriangle. exe test7 : v 逊 j 逸 a、 九 a m a 血 d 现 g 丿; sa* u : e: 1 l2q321triangle_ exe bgt;* * a pr: 201.100,100 (a; f ("输入范围不合理 =】 nt* test8 : -e:112032 l-tzille.exe 青输扎=个边仪: 190.201,100 帚入范围不合理 test14 :长理 边合 卜 f 三r 7v乩范 ij rrn. rfc h&

21、quot; 1 gt;/ nt 釘 b yst t " r() ; r iivt canl gt;=1s 主输入三个边长: 00,0,100 俞入范ffi 不台理 im 4 e amp; /ix test13: e:l123321triangle.exe , b i= test19: u 、 e:112032*1 trianjle ex 時 1 叽 1 叽阿 输入範围不合理 弱健壮等价类 iftain () if 5 打 - j-." fl u * -a jl (amp; t a* :pr: mf w爾电 3 4 4 tat f 5 q 血 4 _ w _ 专 pr 6 1

22、, 5 車二 g g 一 2_ f=ft 7 l 电 孑 5 亠 二 8 7 _2- l amp;q f j s jj* izh 、,和 5一 条件桩: c1: 是否构成三角形( a+bgt;c a+cgt;b b+cgt;a )动作桩 : a1: 非三角形 c2: a=b a2: 等腰三角形 c3: b=c a3: 等边三角形 c4: a=c a4: 一般三角形 a5 :不可能出现 三角形问题决策表 决策表 1-8 9 10 11 c1 f t t t c2 一 t t t c3 一 t t f c4 t f t a1 v a2 a3 v a4 a5 v v 12 13 14 15 16 t

23、 t t t t t f f f f f t t f f f t f t f v v v v v 三角形问题决策表测试用例 测试 用例 输入 条件 预期输出 a b c 1-8 2 3 6 非三角形 9 3 3 3 等边三角形 10 * * * 不可能 11 * * * 不可能 12 15 15 20 等腰三角形 13 * * * 不可能 14 15 20 20 等腰三角形 15 25 20 25 等腰三角形 16 15 20 26 一般三角形 nextday 问题 健壮性边界值测试用例 测试用 例 输 入 条 件 预期输出 实际输出 用例状态 年 月 日 test1 1899 6 15 提示

24、"超出范围' 提示"超出范围' fail test2 1900 6 15 1900/6/16 1900/6/16 pass test3 1901 6 15 1901/6/16 1901/6/16 pass test4 2021 6 15 2021/6/16 2021/6/16 pass test5 2099 6 15 2099/6/16 2099/6/16 pass test6 2100 6 15 2100/6/16 2100/6/17 pass test7 2101 6 15 提示"超出范围' 提示"超出范围' fail

25、 test8 2021 0 15 提示"超出范围' 2021/1/1 fail test9 2021 1 15 2021/1/16 2021/1/16 pass test10 2021 2 15 2021/2/16 2021/2/16 pass test11 2021 11 15 2021/11/16 2021/11/16 pass test12 2021 12 15 2021/12/16 2021/12/16 pass test13 2021 13 15 提示"超出范围' 2021/1/16 fail test14 2021 6 0 提示"超出范

26、围' 2021/6/1 fail test15 2021 6 1 2021/6/2 2021/6/2 pass test16 2021 6 2 2021/6/3 2021/6/3 pass test17 2021 6 29 2021/6/30 2021/6/30 pass test18 2021 6 30 2021/7/1 2021/7/1 pass test19 2021 6 31 提示"超出范围' 提示"超出范围' fail 缺陷截图: testi: -jij ju, ji h e : 1 1203 2 1 dat e. test7 : test

27、13: l 31, 3, 30, 3:, 30,31j: 示出了不相对应的输出结果,再观察完程序后,发现,在源代码中只是对年份的范围进行了 一定的范围规范,没有对月份进行要求,才会出现以下的运行错误 test14 : test8 : 结果显示出了不相对应的输出结果,可能是程序中出现了一定程度的逻辑错误 预期输出"超出范围', 出现未知错误,预期输出"超出范围' ,结果显 时 e:l 12032neztdate. exe 遍输儿日碾蔦 2s00/6z1 i ni 出现未知错误,预期输出"超出范围' 果显示出了不相对应的输出结果, 在观察完程序

28、后,发现在源代码中只是对年份的范围进行 了一定的范围规范,没有对月份进行规范,才会出现以下的运行错误 test19: quot;graft abl 935 crd : 肓输入 ,sd, s 19001 r%4| | fi r -"- e; 112032lnestdate, ese fl 青输入日期: 1000.6,30 2021/7/1 5 4 n r 20 2 门 j3amp;z 她 15 如二引 习 era nextday 函数弱健壮性等价类 选项 1-3 4 5 6-9 10 规则 c1 m1 m1 m1 m2 m2 条 _ _ d1- d1- c2 d4 d5 d5件 d3

29、d4 c3 a1 v 动 a2 v v 动 a3 v v 作 a4 v v a5 11 14 15 16 17 18 19 20 21 22 m3 m3 m4 m4 m4 m4 m4 m4 d1- d4- d4 d5 d1 d2 d2 d3 d3 d5 y1 y2 y1 y2 v v v v v v v v v v v 辅九数擢 军自日 j. lfeu_l ftt 5 3t? 卫吨 amp; 邂 * 1 -1 .ija- ).4 i_tlt; 嬴、 f 轿 xfca 逊 甌亠 - 工 1 _/_ 4 憾减週彳停 8 塑血_ j - quot;_j r |三狂 亦二込na +0 2 l 林備 j

30、2ni _ 迟 i 迟 l j? 厂弼施国卷神城詡 今刃描隔陽他血 g 為 血疵屜痂口 ik 简易分析赋值归纳: y1 : 该年为闰年 y2: 该年不会闰年 m1: 该月有 30 天 m2: 该月有 31 天( 12 月除外) m3: 该月为 12 月 m4 :该月为 2 月 d1: 1lt;=daylt;=27 d2:28 天 d3:29 天 d4:30 天 d5:31 天 条件桩: c1:mo nth c2:day c3:year 动作桩: a1: 不可能 a2: day+1 a3:day 复位 a4:month+1 a5: mon th 复位 a6:year+1 nextday 函数的决

31、策表 a6 v nextday 函数决策表测试用例 测试用例 year mon th day 预期输出 test1-3 2021 6 15 2021-6-16 test4 2021 6 30 2021-7-1 test5 2021 6 31 不可能 test6-9 2021 7 15 2021-7-16 test10 2021 7 31 2021-8-1 test11-14 2021 12 15 2021-12-16 test15 2021 12 31 2021-1-1 test16 2021 2 15 2021-2-16 test17 2021 2 28 2021-2-29 test18 2

32、021 2 28 2021-3-1 test19 2021 2 29 2021-3-1 test20 2021 2 29 不可能 test21-22 2021 2 30 不可能 对此问题健壮性边界值测试得到的结果是, 当输入的数值之间有逻辑关系的时候, 不适合用 健壮性测试,因为其间的逻辑关系,在取其特殊值的时候,需要考虑之前的正常取值。 佣金问题 健壮性边界值测试用例 测试用 例 输 入 条 件 预期输出 实际输出 用例状态 枪机 枪托 枪管 test1 0 40 45 提示"输入范围不合理' 提示"输入范围不合理' fail test2 1 40 45

33、474 474 pass test3 2 40 45 483 483 pass test4 35 40 45 780 780 pass test5 69 40 45 1086 1086 pass test6 70 40 45 1095 1095 pass test7 71 40 45 提示"输入范围不合理' 提示"输入范围不合理' fail test8 35 0 45 提示"输入范围不合理' 提示"输入范围不合理' fail test9 35 1 45 546 546 pass test10 35 2 45 552 552

34、 pass test11 35 79 45 1014 1014 pass test12 35 80 45 1020 1020 pass test13 35 81 45 提示"输入范围不合理' 提示"输入范围不合理' fail test14 35 40 0 提示"输入范围不合理' 提示"输入范围不合理' fail test15 35 40 1 560 560 pass test16 35 40 2 565 565 pass test17 35 40 89 1000 1000 pass test18 35 40 90 1005

35、 1005 pass test19 35 40 91 提示"输入范围不合理' 提示"输入范围不合理' fail 缺陷截图: testi : =t"h 以 订 出直寸二农 ri"t 几 f t 、= i 几丄于二口 i 、 c ; e: 112032 lxyongjiri. eie +3 10 入购买 ,45 范園下 test7 : 1 f a 債 aft 1 rti 7i* ftfi m- in 川 遍 ir .samp; 匕 *匸 3 二 p 供朴出. t test8 : 辅- :7c: c : e:112032 lyongjin. e

36、se 4-3(1: 0(11 青输入购买的枪机、枪托、枪管數量 1s,0,45 侖入范围不合理 test13: test14 : 十; c : e : v1 11?ij3y * 1 y olt;h fij ese -10 请荷煤 j 矢魂定福: 3540,0 愉入范圜不台埋 in test19: k. ? cnj-. tt #- xa xn jlau -l-t -la. -h e 丄 c5x. ee i hu # 、 心 o)ae:1120321yongjin. ese 慣输入购买的枪札 枪托、枪管数量三 n *7 v) pri 35,40,91 對入范围不台理 - 佣金问题弱健壮性等价类 条

37、件桩: c1:1lt;=xlt;=70 c2: 1lt;=ylt;=80 c3: 1lt;=zlt;=90 选项 佣金问题决策表 动作桩 : a1: 不合理范围 a2: 合理范围 规则 1 2-5 6-8 c1 t f t 条件 c2 t - f c3 t - - 动作 a1 v a2 v 佣金问题决策表测试用例 测试用例 x y z 预期输出 test1 35 40 45 780 test2-5 0 40 45 不合理范 围 test6-8 35 0 40 不合理范 围 通过对佣金问题的决策表用例测试, 可以看出佣金问题不适合用决策表测试, 因为动作桩的 详细判断是无法达成的。 例:每个不同

38、的输入会有不同的输出, 无法判断其是属于什么范围 内的佣金比例,则无法达到预期的测试效果。 五、结果分析 对以上三个问题进行黑盒测试, 在对三角形问题进行测试的时候, 发现该代码不能对非整数 进行测试, 将要对其输入类型进行修改, 再者在若健壮性等价类测试中无法对等腰直角三角 形进行测试,无法得到想要的测试结果。在对 nextday 函数进行测试的时候,可以将其间不 满足要求的, 都测试的出来, 将在白盒测试之前将其修改正确。 佣金问题的黑盒测试没有发 现问题,相对可以满足黑盒测试的要求。 南昌航空大学实验报告 2021 年 11 月 3 日 一、 实验目的 掌握逻辑覆盖法、基路径法以及数据流

39、测试基本结构性测试方法 二、 实验要求 1 、 对三角形问题尝试用逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、 路径覆盖)设计测试用例,具体要求如下: ( 1 ) 为程序语句部分进行编号; ( 2 ) 画出程序的程序结构图(节点图) ; ( 3 ) 用上述五种方法分别设计测试用例,并说明每种测试用例的设计思路,例如测 试用例所覆盖的语句、判定或条件的真分支假分支或路径等; ( 4 ) 使用上述测试用例对三角形问题进行测试,并做好测试记录,即有缺陷进行截 图,并试图分析产生缺陷原因。 2 、 对 nextdate 问题尝试采用基路径方法设计测试用例,具体要求如下: ( 1 ) 为程序

40、语句部分进行编号; ( 2 ) 画出程序的程序结构图(节点图) ; ( 3 ) 用基路径方法设计测试用例,并说明每个测试用例的设计思路,例如测试用例 所覆盖基路径; ( 4 ) 使用上述测试用例对 nextdate 问题进行测试,并做好测试记录,即有缺陷进 行截图,并试图分析产生缺陷原因。 3 、 对佣金问题采用数据流测试方法设计测试用例,具体要求如下: ( 1 ) 为程序语句部分进行编号; ( 2 ) 画出程序的程序结构图(节点图) ; ( 3 ) 找出程序中所定义的枪机、 枪托、枪管、销售额以及佣金五个变量的定义节点、 使用节点,并判断是谓词使用还是计算使用; ( 4 ) 找出以上五个变量

41、的所有定义 - 使用路径,并判断其是否为定义 - 清除路径; ( 5 ) 根据上述路径分析程序可能出现的缺陷,并试图分析产生缺陷原因。 三、 实验步骤 该三个问题都是先将代码进行编号, 根据代码形式画出相对应的程序流程图, 再根据 程序流程图将其修改成节点图,在对具体要求进行解答。 具体实验步骤已在实验内容中详细介绍 四、 实验内容 三角形问题: 解: ( 1 ) #in elude lt;stdio.hgt; #define e 2.718281828 课程名称:软件质量保证与测试 班级: * 姓名: 指导教师评定: 实验名称: 结构性测试 _ 同组人: _ 签名: _ main() flo

42、at a,b,c; system( quot;graftabl 936 quot;); clrscr(); printf(quot; 请输入三个边长: nquot;); scanf(quot;%f,%f,%fquot;,amp;a,amp;b,amp;c); if(agt;=1amp;amp;alt;=200)amp;amp;(bgt;=1amp;amp;blt;=200)amp;amp;(cgt;=1amp;amp;clt;=200) if(a+bgt;c amp;amp; a+cgt;b amp;amp; b+cgt;a) if(a*a+b*b-c*clt;=e-2)|(a*a+c*c-b

43、*blt;=e-2)|(c*c+b*b-a*a)lt;=e-2) if(a=b|b=c|a=c) printf(quot; 等腰直角三角形 nquot;); else printf(quot; 直角三角形 nquot;); else if(a=b|b=c|a=c) if(a=bamp;amp;a=c) printf(quot; 等边三角形 nquot;); else printf(quot; 等腰三角形 nquot;); else printf(quot; 一般三角形 nquot;); else printf(quot; 非三角形 nquot;); else printf(quot; 输入范围

44、不合理 nquot;); getch(); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (2 )先画出程序流程图: 根据所画的程序流程图,画出相对应的节点图: ( 3 )语句覆盖就是要求每条语句至少执行一次 判定语句就是要求每个判定的每条分支至少执行一次 路径覆盖就是要求每条可能的路径至少执行一次 由于此题中,每个 if 分支无论真假都有对应的反应语句,所以,此题中的语句覆盖、判断 覆盖和路径覆盖都是相同的 语句覆盖 = 判定覆盖 = 路径覆盖的测试用例: 输入数据 预期输出1 2 3 15 5 14 9 6 13 10 8 7 11 12 end 覆盖路径 用 例

45、 a b c tes t1 4 3 6 tes t2 5 10 12 tes t3 5 5 8 tes t4 15 15 15 tes t5 3 4 5 tes t6 2 2 2.828 tes t7 201 200 180 非三角形 1-2-3-4-14 一般三角形 1-2-3-4-5-9-13 等腰三角形 1-2-3-4-5-9-10-12 等边三角形 1-2-3-4-5-9-10-11 直角三角形 1-2-3-4-5-6-8 等腰直角三 角形 提示"输入1-2-3-4-5-6-7 范围不合 1-2-3-15 理' 节点 3 : (agt;=1 amp;amp;alt;=

46、200)amp;amp;(bgt;=1 amp;amp;blt;=200)amp;amp;(cgt;=1 amp;amp;clt;=200) agt;=1 编号为 1.1 alt;=200 编号为 1.2 bgt;=1 编号为 1.3 blt;=200 编号为 1.4 cgt;=1 编号为 1.5 clt;=200 编号为 1.6 节点 4 : a+bgt;c amp;amp; a+cgt;b amp;amp; b+cgt;a a+bgt;c 编号为 2.1 a+cgt;b 编号为 2.2 b+cgt;a 编号为 2.3 节点 5 : (a*a+b*b-c*clt;=e-2)|(a*a+c*c

47、-b*blt;=e-2)|(c*c+b*b-a*a)lt;=e-2) a*a+b*b-c*clt;=e-2 编号为 3.1 a*a+c*c-b*blt;=e-2 编号为 3.2 节点 6 : c*c+b*b-a*a)lt;=e-2 编号为 3.3 节点 9 : a=b|b=c|a=c a=b 编号为 4.1 a=b|b=c|a=c a=b 编号为 5.1 b=c 编号为 4.2 b=c 编号为 5.2 a=c 编号为 4.3 a=c 编号为 5.3 节点 10 : a=bamp;amp;a=c 用 例 序 号 输入数据 预期输出 覆盖条件 a b c 1 -1 202 10 输入范围不合理 f

48、1.1f1.2f1.3f1.4f1.5f1.6 2 10 20 30 非三角形 f2.1f2.2f2.3 3 4 5 2 一般三角形 t1t2f3f4f5f6 a=b 编号为 6.1 a=c 编号为 6.2 条件覆盖 = 条件组合覆盖 4 3 4 5 直角三角形 t1t2t3f4f5f6 5 2 2 2.828 等腰直角三角形: t1t2t3t4f5f6 6 4 4 5 等腰三角形 t1t2f3f4t5f6 7 5 5 5 等边三角形 t1t2f3f4t5t6 8 - - - 其余情况不可能存在 其中, t1 包括所有 1.11.6 的情况,也就是 1.11.6 整体判断为 t f1 指的是

49、1.11.6 整体判断值为 f 以上为例,其他均为此规律 nextday 函数: 解:( 1 ) #in cludelt;stdio.hgt; int mai n() int year,m on th,day; int a12=31,29,31,30,31,30,31,31,30,31,30,31; int b12=31,28,31,30,31,30,31,31,30,31,30,31; int y,m,d; system( quot;graftabl 936 quot;); clrscr(); 1 printf(quot; 请输入日期 : ') ; 2 scan f(quot;%d,

50、%d,%dquot; , amp; year,amp;mo nth, amp;day); 3 if(yeargt;=1900amp;amp;yearlt;=2100)amp;amp;(mon thgt;=1 amp;amp;mon thlt;=12)amp;amp;(daygt;=1 amp;amp;daylt;=31) 3 if(mo nthlt;12) 4 if(year%4|year%1ooamp;amp;!(year%400) 5 if(bm on th-1gt;day) 6 d=day+1; 7 m=mo nth; 8 y=year; 9 prin tf(quot;%d/%d/%dn

51、quot;,y,m,d); 10 else if(bm on th-1=day) 11 d=1; m=mon th+1; 13 y=year; printf(quot;%d/%d/%dnquot;,y,m,d); else printf(quot; 输入错误 nquot;); else if(amonth-1gt;day) d=day+1; m=month; y=year; printf(quot;%d/%d/%dnquot;,y,m,d); else d=1; m=month+1; y=year; printf(quot;%d/%d/%dnquot;,y,m,d); else if(amon

52、th-1gt;day|bmonth-1gt;day) printf(quot;%d/%d/%dquot;,year,month,day+1); else printf(quot;%d/1/1quot;,year+1); else printf(quot; 超出范围 nquot;); getch(); 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 (2 )先画出程序流程图: start 2 3 29 5 26 6 17 7 127 28 18 22 12 8 16 19 23 13 9 20 24 14 10 21 15 end 方法 根据以上的

53、程序流程图,可画出相对应的节点图: v(g)=7+1=8 (3 )计算 v(g) 根据程序中有 7 个判断节点, 方法二二根据图中有 7 个完整封闭区域, v(g)=7+ 仁 8 .、.- | . t t f r 、 _ _ / gt; 、 t 31 个节点, v(g)=37-31+2=8 方法二:图中共有 37 条边, 独立路径: path2: 1-2-3-29 path2 : 1-2-3-4-26-27 path3: 1-2-3-4-26-28 path4:1-2-3-4-5-17-22-23-24-25 path5: 1-2-3-4-5-17-18-19-20-21 path6:1-2-

54、3-4-5-6-11-16 path7:1-2-3-4-5-6-11-12-13-14-15 path8:1-2-3-4-5-6-7-7-8-9-10 设计测试用例: 输入数据 覆 测试用 例 y m d 预期输出 盖 路 径 testl 2021 13 2 提示"超出范围' 1 test2 2021 12 4 2021-12-5 2 test3 2021 12 31 2021-1-1 3 test4 2021 6 30 2021-7-1 4 test5 2021 6 15 2021-6-16 5 test6 2021 2 30 提示"输入错误' 6 test7 2021 2 29 202

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论