三角形、nextday、佣金问题实验报告 - 图文

更新时间:2024-04-03 23:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南昌航空大学实验报告

2013 年 10 月 20 日

课程名称: 软件质量保证与测试 实验名称: 测试程序的设计 班级: ****** 姓名: *** 同组人: 指导教师评定: 签名:

一、实验目的

完成测试用程序的编写,为接下来的测试实验做准备。 二、实验要求

(1)设计程序的语言可以选择C、C++、JAVA等; (2)保证程序语法正确

(3)记录实验数据并书写实验报告 题目要求:

题目一:三角形问题

问题描述:输入三角形三条边a、b、c,三条边有效取值范围为[1,200],判断该三角形是什么三角形,输出内容具体包括:(1)等边三角形;(2)等腰三角形;(3)直角三角形;(4)等腰直角三角形;(5)一般三角形;(6)非三角形;(7)输入数据非法。

题目二:NextDate问题

问题描述:输入年月日year、month、day,其中年份的有效取值范围为[1900,2100],请输出输入日期的下一天,例如输入2013年9月29日,输出为2013年9月30日。若输入日期非法,例如输入2013年2月30日,则输出“输入日期不存在”,若输入日期超出取值范围,例如输入2013年9月32日,则输出“输入日期超出范围”。

问题三:佣金问题

问题描述:前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商制造的步枪机(lock)、枪托(stock)和枪管(barrel)。枪机卖45美元,枪托卖30美元,枪管卖25美元。销售商每月至少要售出一支完整的步枪,且生产限额是大多数销售商在一个月内可销售70个枪机、80个枪托和90个枪管。

根据当月的销售情况,并计算销售商的佣金如下: (1)不到(含)1000美元的部分为10%;

(2)1000(不含)~1800(含)美元的部分为15%; (3)超过1800美元的部分为20%。

佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。 三、实验步骤

1.运行TC, Visual C++, JAVA等开发工具;

2.在开发环境中完成程序设计,并进行调试;

3.在程序没有语法错误的前提下重点检查程序的逻辑错误; 4.对程序进行调试,并记录实验数据。 四、实验内容

三角形问题:

概要设计: 在输入不同数值可以得到相应的输出结果 (1)当输入三条边的数值大小有一不在范围内,提示“输入范围不合理”

(2)当输入三值不满足构成三角形条件时,输出“非三角形”

(3)当输入三值只是满足构成三角形条件,没有其他特殊问题,输出“一般三角形”

(4))当输入三条边只有两个值相等,输出“等腰三角形” (5) 当输入三条边都相等时,输出“等边三角形”

(6) 当输入三条边只是满足勾股定理时,输出“直角三角形”

(7)当输入三条边不仅满足勾股定理,而且其中有两条边相等,输出“等腰直角三角形”

源代码:

#include main() {

int a,b,c;

system( \ 936 \ clrscr();

printf(\请输入三个边长:\\n\ scanf(\

if((a>=1&&a<=200)&&(b>=1&&b<=200)&&(c>=1&&c<=200)) {

if(a+b>c && a+c>b && b+c>a)

if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b) { printf(\可以构成一个直角三角形\\n\ if(a==b||b==c||a==c)

printf(\可以构成一个等腰直角三角形\\n\ } else if(a==b && a==c)

printf(\可以构成一个等边三角形\\n\ else if(a==b||b==c||a==c)

printf(\可以构成一个等腰三角形\\n\ else

printf(\可以构成一个等腰三角形\\n\ else

printf(\不能构成三角形\\n\}

else printf(\输入范围不合理\\n\ getch(); }

运行结果:

Nextday函数:

概要设计:分析不同情况下的输入,可以得到不同输出

(1)当输入数值只要有一个不符合范围,提示“不合理范围” (2)当输入非月头月尾数值时,输出日期将天数加1 (3)当输入非2月月尾时,输出日期将月份加1 (4)当输入的为年尾时,输出日期将年份加1 (5)当输入闰年28日时,输出日期将天数加1 (6)当输入闰年29日时,输出日期将月份加1 (7)当输入非闰年27日时,输出日期将天数加1 (8)当输入非闰年28日时,输出日期将月份加1 (9)当输入非闰年29日时,提示“输入错误”

源代码:

#include 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( \ 936 \ clrscr();

printf(\请输入日期:\\n\

scanf(\ if(year<=2100&&year>=1900){

if (year%4==0&&year0!=0||year@0==0) { if(month<12)

{ if(a[month-1]>day)

printf(\后一天:%d年%d月%d日\ else

printf(\后一天:%d年%d月1日\ }

else if(month==12)

{ if(a[month-1]>day)

printf(\后一天:%d年%d月%d日\ else

printf(\后一天:%d年1月1日\ } } else {

if(month<12)

{ if(b[month-1]>day)

printf(\后一天:%d年%d月%d日\ else

printf(\后一天:%d年%d月1日\ }

else if(month==12)

{ if(b[month-1]>day)

printf(\后一天:%d年%d月%d日\ else

printf(\后一天:%d年1月1日\ } } } getch(); }

运行结果:

输出结果错误,代表程序源代码出现错误

佣金问题:

概要分析: 当输入不同数值时会有不同的的佣金

(1)当输入数值不满足要求时,提示“不合理范围”

(2)当输入数值计算得总销售额不到(含)1000美元,佣金为其10% (3)当输入数值计算得总销售额为1000(不含)~1800(含)美元,佣金为其15%

(4)当输入数值计算得总销售额超过1800美元,佣金为其20%

源代码:

#include int main() {

int x,y,z,n;

system( \ 936 \ clrscr();

printf(\请输入购买的枪机、枪托、枪管数量:\\n\scanf(\

if((x>=1&&x<=70)&&(y>=1&&y<=80)&&(z>=1&&z<=90)) {

n=45*x+30*y+25*z; if(n<=1000)

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\

else if(n<=1800)

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\

else

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\ } else

printf(\输入范围不合理\\n\ getch(); }

运行结果:

五、结果分析

对以上三个题目的编码中,三角形问题和佣金问题没有出现什么错误,就是在nextday中出现众多小错误,其中,对于范围问题只是对年份进行了控制,没有对月份及日期进行控制,从而超出范围也不会作出相对应的提示。而且,在nextday中有的输入得不到相对应的输出,将会在下面的白盒测试中对其进行修改。

南昌航空大学实验报告

2013 年 10 月 27 日

课程名称: 软件质量保证与测试 实验名称: 功能性测试 班级: ****** 姓名: *** 同组人: 指导教师评定: 签名:

一、实验目的

掌握边界值、等价类、决策表测试的基本功能性测试方法 二、实验要求

分别用健壮性测试(边界值方法)、弱健壮等价类测试(等价类方法)和决策表测试技术分别对三角形问题|、Nextdate问题和佣金问题设计测试用例(即每个程序都要用这三种方法进行测试),并分别对实验一所编写的三个程序进行测试。

要求:对于测试用例的设计必须给出详细的设计过程,在测试过程中如果发现缺陷(预期输出与实际输出不符),则采用截图的方式说明缺陷现象,并简单分析其可能产生的原因及建议,但不允许修改程序。 三、实验步骤

1.运行TC, Visual C++, JAVA等开发工具;

2.在开发环境中完成程序设计,并进行调试;

3.在程序没有语法错误的前提下重点检查程序的逻辑错误; 4.对程序进行调试,并记录实验数据。 四、实验内容 三角形问题

健壮性边界值测试用例

测试用例 Test1 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9 输 入 条 件 a 0 1 2 100 199 200 201 100 100 b 100 100 100 100 100 100 100 0 1 2 199 200 201 100 100 100 100 c 100 100 100 100 100 100 100 100 100 100 100 100 100 0 1 2 199 提示“输入范围不合理” 提示“输入范围不合理” 等腰三角形 等腰三角形 等边三角形 等腰三角形 非三角形 等腰三角形 等腰三角形 等边三角形 等腰三角形 非三角形 fail pass pass pass pass pass fail fail pass pass pass pass fail fail pass pass pass 预 期 输 出 实 际 输 出 用例状态 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 等腰三角形 等腰三角形 等腰三角形 非三角形 等腰三角形 等腰三角形 等腰三角形 非三角形 Test10 100 Test11 100 Test12 100 Test13 100 Test14 100 Test15 100 Test16 100 Test17 100 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 等腰三角形 等腰三角形 等腰三角形 等腰三角形 等腰三角形 等腰三角形 Test18 100 Test19 100 缺陷截图: Test1:

100 100 200 201 非三角形 非三角形 pass fail 提示“输入范围不合理” 提示“输入范围不合理”

Test7:

Test8:

Test13:

Test14:

Test19:

弱健壮等价类

条件桩: C1: 是否构成三角形(a+b>c a+c>b b+c>a)动作桩: A1:非三角形 C2: a=b A2:等腰三角形 C3: b=c A3:等边三角形 C4: a=c A4:一般三角形 A5:不可能出现 三角形问题决策表 决策表 C1 C2 C3 C4 A1 A2 A3 A4 A5 1-8 F — — — √ 9 T T T T √ 10 T T T F √ 11 T T F T √ 12 T T F F √ 13 T F T T √ 14 T F T F √ 15 T F F T √ 16 T F F F √

三角形问题决策表测试用例 测试 用例 1-8 9 10 11 12 13 14 15 16

输 入 条 件 a b c 2 3 6 3 3 3 ﹡ ﹡ ﹡ ﹡ ﹡ ﹡ 15 15 20 ﹡ ﹡ ﹡ 15 20 20 25 20 25 15 20 26 预期输出 非三角形 等边三角形 不可能 不可能 等腰三角形 不可能 等腰三角形 等腰三角形 一般三角形 Nextday问题

健壮性边界值测试用例

测试用例 Test1 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9 输 入 条 件 年 1899 1900 1901 2000 2099 2100 2101 2000 2000 月 6 6 6 6 6 6 6 0 1 2 11 12 13 6 6 6 6 6 6 日 15 15 15 15 15 15 15 15 15 15 15 15 15 0 1 2 29 30 31 提示“超出范围” 1900/6/16 1901/6/16 2000/6/16 2099/6/16 2100/6/16 提示“超出范围” 提示“超出范围” 2000/1/16 2000/2/16 2000/11/16 2000/12/16 提示“超出范围” 提示“超出范围” 2000/6/2 2000/6/3 2000/6/30 2000/7/1 提示“超出范围” 提示“超出范围” 1900/6/16 1901/6/16 2000/6/16 2099/6/16 2100/6/17 提示“超出范围” 2000/1/1 2000/1/16 2001/2/16 2000/11/16 2000/12/16 2000/1/16 2000/6/1 2000/6/2 2000/6/3 2000/6/30 2000/7/1 提示“超出范围” fail pass pass pass pass pass fail fail pass pass pass pass fail fail pass pass pass pass fail 预 期 输 出 实 际 输 出 用例状态 Test10 2000 Test11 2000 Test12 2000 Test13 2000 Test14 2000 Test15 2000 Test16 2000 Test17 2000 Test18 2000 Test19 2000 缺陷截图: Test1:

Test7:

Test8:

出现未知错误,预期输出“超出范围”,

结果显示出了不相对应的输出结果,可能是程序中出现了一定程度的逻辑错误

Test13:

出现未知错误,预期输出“超出范围”,结果显

示出了不相对应的输出结果,再观察完程序后,发现,在源代码中只是对年份的范围进行了

一定的范围规范,没有对月份进行要求,才会出现以下的运行错误

Test14:

出现未知错误,预期输出“超出范围”,结

果显示出了不相对应的输出结果,在观察完程序后,发现在源代码中只是对年份的范围进行

了一定的范围规范,没有对月份进行规范,才会出现以下的运行错误

Test19:

Nextday函数弱健壮性等价类

简易分析赋值归纳: Y1: 该年为闰年 Y2:该年不会闰年

M1:该月有30天 M2:该月有31天(12月除外) M3:该月为12月 M4:该月为2月

D1: 1<=day<=27 D2:28天 D3:29天 D4:30天 D5:31天 条件桩: C1:month C2:day C3:year

动作桩: A1:不可能 A2: day+1 A3:day复位 A4:month+1 A5: month复位 A6:year+1

Nextday函数的决策表

选项 1-3 4 规则

5 6-9 10

11-21-15 16 17 18 19 20 14 22 M3 M3 M4 M4 M4 M4 M4 D1-D5 D1 D2 D2 D3 D3 D4

- - - Y1 Y2 Y1 Y2 √ √ √ √ √ √ √ √ √ √ √

M4

D4-D5 -

C1 M1 M1 M1 M2 M2 条D1-D1-C2 D4 D5 D5 件 D3 D4

C3 - - - - - A1 √ A2 √ √ 动

A3 √ √ 作

A4 √ √ A5

A6 √

Nextday函数决策表测试用例

测试用例 test1-3 test4 test5 test6-9 test10 test11-14 test15 test16 test17 test18 test19 test20 test21-22 year 2001 2001 2001 2001 2001 2001 2001 2001 2000 2001 2000 2001 2001 month 6 6 6 7 7 12 12 2 2 2 2 2 2 day 15 30 31 15 31 15 31 15 28 28 29 29 30 预期输出 2001-6-16 2001-7-1 不可能 2001-7-16 2001-8-1 2001-12-16 2002-1-1 2001-2-16 2000-2-29 2001-3-1 2000-3-1 不可能 不可能

对此问题健壮性边界值测试得到的结果是,当输入的数值之间有逻辑关系的时候,不适合用健壮性测试,因为其间的逻辑关系,在取其特殊值的时候,需要考虑之前的正常取值。

佣金问题

健壮性边界值测试用例 测试用例 Test1 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9 Test10 Test11 Test12 Test13 输 入 条 件 枪机 0 1 2 35 69 70 71 35 35 35 35 35 35 枪托 40 40 40 40 40 40 40 0 1 2 79 80 81 40 40 40 枪管 45 45 45 45 45 45 45 45 45 45 45 45 45 0 1 2 提示“输入范围不合理” 提示“输入范围不合理” fail 474 483 780 1086 1095 474 483 780 1086 1095 pass pass pass pass pass fail fail pass pass pass pass fail fail pass pass 预 期 输 出 实 际 输 出 用例状态 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 546 552 1014 1020 546 552 1014 1020 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 提示“输入范围不合理” 560 565 560 565 Test14 35 Test15 35 Test16 35 Test17 35 Test18 Test19 35 35 40 40 40 89 90 91 1000 1005 1000 1005 pass pass fail 提示“输入范围不合理” 提示“输入范围不合理”

缺陷截图: Test1:

Test7:

Test8:

Test13:

Test14:

Test19:

佣金问题弱健壮性等价类

条件桩: C1:1<=x<=70 动作桩: A1:不合理范围 C2: 1<=y<=80 A2:合理范围 C3: 1<=z<=90

佣金问题决策表

选项 C1 C2 C3 A1 A2

规则 条件 动作

1 T T T √

2--5 F - - √

6--8 T F - √

佣金问题决策表测试用例

测试用例 test1 test2--5 test6--8

x 35 0 35

y 40 40 0

z 45 45 40

预期输出 780 不合理范围

不合理范围

通过对佣金问题的决策表用例测试,可以看出佣金问题不适合用决策表测试,因为动作桩的详细判断是无法达成的。例:每个不同的输入会有不同的输出,无法判断其是属于什么范围内的佣金比例,则无法达到预期的测试效果。

五、结果分析

对以上三个问题进行黑盒测试,在对三角形问题进行测试的时候,发现该代码不能对非整数进行测试,将要对其输入类型进行修改,再者在若健壮性等价类测试中无法对等腰直角三角形进行测试,无法得到想要的测试结果。在对nextday函数进行测试的时候,可以将其间不满足要求的,都测试的出来,将在白盒测试之前将其修改正确。佣金问题的黑盒测试没有发现问题,相对可以满足黑盒测试的要求。

南昌航空大学实验报告

2013 年 11 月 3 日

课程名称: 软件质量保证与测试 实验名称: 结构性测试 班级: ****** 姓名: *** 同组人: 指导教师评定: 签名:

一、实验目的

掌握逻辑覆盖法、基路径法以及数据流测试基本结构性测试方法 二、实验要求

1、对三角形问题尝试用逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖)设计测试用例,具体要求如下:

(1)为程序语句部分进行编号;

(2)画出程序的程序结构图(节点图);

(3)用上述五种方法分别设计测试用例,并说明每种测试用例的设计思路,例如测试用例所覆盖的语句、判定或条件的真分支假分支或路径等;

(4)使用上述测试用例对三角形问题进行测试,并做好测试记录,即有缺陷进行截图,并试图分析产生缺陷原因。

2、对NextDate问题尝试采用基路径方法设计测试用例,具体要求如下: (1)为程序语句部分进行编号;

(2)画出程序的程序结构图(节点图);

(3)用基路径方法设计测试用例,并说明每个测试用例的设计思路,例如测试用例所覆盖基路径;

(4)使用上述测试用例对NextDate问题进行测试,并做好测试记录,即有缺陷进行截图,并试图分析产生缺陷原因。

3、对佣金问题采用数据流测试方法设计测试用例,具体要求如下: (1)为程序语句部分进行编号;

(2)画出程序的程序结构图(节点图);

(3)找出程序中所定义的枪机、枪托、枪管、销售额以及佣金五个变量的定义节点、使用节点,并判断是谓词使用还是计算使用;

(4)找出以上五个变量的所有定义-使用路径,并判断其是否为定义-清除路径; (5)根据上述路径分析程序可能出现的缺陷,并试图分析产生缺陷原因。 三、实验步骤

该三个问题都是先将代码进行编号,根据代码形式画出相对应的程序流程图,再根据程序流程图将其修改成节点图,在对具体要求进行解答。 具体实验步骤已在实验内容中详细介绍 四、实验内容

三角形问题: 解: (1)

#include #define e 2.718281828

main()

{

float a,b,c;

system( \ 936 \ clrscr();

1 printf(\请输入三个边长:\\n\2 scanf(\

3 if((a>=1&&a<=200)&&(b>=1&&b<=200)&&(c>=1&&c<=200)){ 4 if(a+b>c && a+c>b && b+c>a)

5 if((a*a+b*b-c*c<=e-2)||(a*a+c*c-b*b<=e-2)||(c*c+b*b-a*a)<=e-2) 6 { if(a==b||b==c||a==c)

7 printf(\等腰直角三角形\\n\8 else printf(\直角三角形\\n\ } 9 else { if(a==b||b==c||a==c) 10 if(a==b&&a==c)

11 printf(\等边三角形\\n\

12 else printf(\等腰三角形\\n\

13 else printf(\一般三角形\\n\ } 14 else printf(\非三角形\\n\

15 else printf(\输入范围不合理\\n\

getch(); }

(2)先画出程序流程图: 开 始 printf scanf 否 是 if 3 是 否 if 4 15 是 否 if 5 14 是 否 if 6 是 否 if 9 8 7 是 否 if 10 13 12 10 结 束

根据所画的程序流程图,画出相对应的节点图:

start 1

2

3

15

4

5 14 9 6

13 10 8 7

11 12

end

(3) 语句覆盖就是要求每条语句至少执行一次

判定语句就是要求每个判定的每条分支至少执行一次 路径覆盖就是要求每条可能的路径至少执行一次

由于此题中,每个if分支无论真假都有对应的反应语句,所以,此题中的语句覆盖、判断覆盖和路径覆盖都是相同的

语句覆盖=判定覆盖=路径覆盖的测试用例:

测输入数据 预期输出 覆盖路径

试用例 test1 test2 test3 test4 test5 test6

a b c

4 5 5 15 3 2

3 10 5 15 4 2 200

6 12 8 15 5 2.828 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

tes

201 t7

节点3:(a>=1&&a<=200)&&(b>=1&&b<=200)&&(c>=1&&c<=200)

a>=1编号为1.1 a<=200编号为1.2 b>=1编号为1.3 b<=200编号为1.4 c>=1编号为1.5 c<=200编号为1.6 节点4:a+b>c && a+c>b && b+c>a

a+b>c编号为2.1 a+c>b编号为2.2 b+c>a编号为2.3 节点5:(a*a+b*b-c*c<=e-2)||(a*a+c*c-b*b<=e-2)||(c*c+b*b-a*a)<=e-2) a*a+b*b-c*c<=e-2编号为3.1 a*a+c*c-b*b<=e-2编号为3.2 c*c+b*b-a*a)<=e-2编号为3.3 节点6:a==b||b==c||a==c

a==b编号为4.1 b==c编号为4.2 a==c编号为4.3 节点9:a==b||b==c||a==c

a==b编号为5.1 b==c编号为5.2 a==c编号为5.3 节点10:a==b&&a==c

a==b编号为6.1 a==c编号为6.2 条件覆盖=条件组合覆盖 用例序号 1 2 3 输入数据 a -1 10 4 b 202 20 5 c 10 30 2 预期输出 覆盖条件 输入范围不合理 非三角形 一般三角形 F1.1\\F1.2\\F1.3\\F1.4\\F1.5\\F1.6 F2.1\\F2.2\\F2.3 T1T2F3F4F5F6 4 5 6 7 8 3 2 4 5 -- 4 2 4 5 -- 5 2.828 5 5 -- 直角三角形 等腰直角三角形 等腰三角形 等边三角形 ----- T1T2T3F4F5F6 T1T2T3T4F5F6 T1T2F3F4T5F6 T1T2F3F4T5T6 其余情况不可能存在 其中,T1包括所有1.1~1.6的情况,也就是1.1~1.6整体判断为T F1指的是1.1~1.6整体判断值为F 以上为例,其他均为此规律

Nextday函数:

解:(1)

#include int main() {

int year,month,day;

int a[12]={31,29,31,30,31,30,31,31,30,31,30,31}; int b[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int y,m,d;

system( \ 936 \ clrscr();

1 printf(\请输入日期: \

2 scanf(\3

if((year>=1900&&year<=2100)&&(month>=1&&month<=12)&&(day>=1&&day<=31) ) 4 if(month<12) {

5 if(year%4||year0&&!(year@0)) { 6 if(b[month-1]>day){ 7 d=day+1; 8 m=month; 9 y=year;

10 printf(\11 else if(b[month-1]==day) 12 {d=1;

13 m=month+1;

14 y=year;

15 printf(\16 else printf(\输入错误\\n\ }

else {

17 if(a[month-1]>day) 18 {d=day+1; 19 m=month; 20 y=year;

21 printf(\

else 22 {d=1;

23 m=month+1; 24 y=year;

25 printf(\

} } else

26 { if(a[month-1]>day||b[month-1]>day) 27 printf(\ else

28 printf(\

} } else

29 printf(\超出范围\\n\

getch(); }

(2)先画出程序流程图: 开 始 printf scanf 是 否 if 3 是 否 if 4 是 否 否 是 if 5 if 26 是 否 if 6 是 if 17 否 22 18 23 19 20 21 是 否 if 11 12 16 13 14 15 29 28 27 7 8 9 24 25 10 结 束

根据以上的程序流程图,可画出相对应的节点图:

start

1

2

3

29

4 5

26 6

17 7 11 28

18 22 12 8

16 19 23 13 9

20

24 14 10

21 25 15

end

(3)计算V(G), 方法一:根据程序中有7个判断节点,V(G)=7+1=8

27 方法二:根据图中有7个完整封闭区域,V(G)=7+1=8 方法三:图中共有37条边,31个节点,V(G)=37-31+2=8 独立路径: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-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

预期输出 test1 2013 13 2 提示“超出范围”test2 2002 12 4 2002-12-5 test3 2002 12 31 2003-1-1 test4 2003 6 30 2003-7-1 test5 2003 6 15 2003-6-16 test6 2000 2 30 提示“输入错误”test7 2000 2 29 2000-3-1 test8

2000

6

15

2000-6-16 (4) test1:

Test6:

覆盖路径1 2 3 4 5 6 7 8

佣金问题: 解: (1)

#include int main() {

int x,y,z,n,m;

system( \ 936 \ clrscr();

1 printf(\请输入购买的枪机、枪托、枪管数量:\\n\2 scanf(\

3 if((x>=1&&x<=70)&&(y>=1&&y<=80)&&(z>=1&&z<=90)){ 4 n=45*x+30*y+25*z; 5 if(n<=1000) 6 m=0.1*n;

7 printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\8 else if(n<=1800) 9 m=0.15*n;

10 printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\ else

11 m=0.2*n;

12 printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\

} else

13 printf(\输入范围不合理\\n\ getch(); }

(2)先画出程序流程图:

开 始

Printf

Scanf

否 是

if 3

4

是 否

if 5

13 是 否 if 8

6

9 11 7 12 10

结 束

根据程序流程图可以画出相对应的节点图:

开始 12 3 13 4 5 6 8 7 9 10 11 12

结束

(3)定义节点和使用节点

变量 x y z n m 定义节点

2 2 2 4 6,9,11 使用节点 3,4,7,10,12 3,4,7,10,12 3,4,7,10,12 5,6,7,8,9,10,11,12

7,10,12

其中, 谓词使用:3,5,7

计算使用:4,5,8,9,10,11,12

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\

else if(n<=1800)

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\ else

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\ } else

printf(\输入范围不合理\\n\

2.3.1进度安排

2013年10月20日进行第一次实验,对三个问题分别进行编写源代码任务 2013年10月27日进行第二次实验,分别对之前编写的源代码进行功能性测试,也就是黑盒测试

2013年11月3日进行第三次实验,分别是对钱编写的源代码进行白盒测试

2013年11月11日进行第四次实验,主要是对之前的所有工作进行总结修改,以及编写实验文档

2.3.2条件

陈述本项测试工作对资源的要求,包括:

a.设备所用到的设备类型、数量和预定使用时间;

b.软件列出将被用来支持本项测试过程而本身又并不是被测软件的组成部分的软件,如测试驱动程序、测试监控程序、仿真程序、桩模块等等;

c.人员列出在测试工作期间预期可由用户和开发任务组提供的工作人员的人数。技术水平及有关的预备知识,包括一些特殊要求,如倒班操作和数据键入人员。

2.3.3测试资料

此项软件测试全过程是根据软件测试技术教程和ppt进行对照修改,所完成的项目

3 测试设计说明 3.1测试1(标识符)

对三角形问题进行测试之前的设计,主要是考虑针对这个问题可能出现的输出结果,其中包括合法的不合法的均要考虑,同时还要思考不同对应的情况的判断流程,使之能够有条有序不浪费循环的输出出来

3.1.1控制

该项目除了运行之外,均是人工操作。在测试中,首先是是人工选择数值进行测试输入,在程序进行运行结束之后,对其输出结果进行画表格进行人工记录。从而,从中发现错误及要修改的内容

3.1.2输入

在数值的输入方面不是随意的进行输入,而且进行有条理的,针对不同测试意愿进行输入,只要在程序源代码没有错误的前提下,从而可以得到预想要的实验结果。 对于输出结果,主要是之前可以对应输出来输入,在对其进行归纳,可以得到想要的结果

3.1.3输出

如:三角形问题:在输入 2,2,2 时,预期是可以输出“等边三角形”的

在输入 2,2,2.828时,预期是可以输出“等腰直角三角形”的

3.1.4过程

在准备好实验运行源代码之后,需要先对点win_tc的运行键,在该程序运行显示“编译成功”后才可以在出现的对话框中输入想要输入的数值,点击回车键后,便可出现实验实际输出结果。如果,程序在运行时显示“编译失败,请修改代码”则需要继续修改代码,发现其中的逻辑语法错误,直到可以成功运行为止

3.2测试2(标识符)

对nextday函数进行测试之前的设计,主要是考虑针对这个问题可能出现的输出结果,其中包括合法的不合法的均要考虑,同时还要思考不同对应的情况的判断流程,使之能够有条有序不浪费循环的输出出来。在这个问题中,比较繁琐,因为在输出下一天的过程中,会出现众多不同输出判断语句,需要对其进行思维整理

4 评价准则 4.1范围

该三个项目的测试范围只能是整数以及小数,无法对分数,以及带有特殊数值符号的数据进行测试,这个问题是这个程序所不能解决的,也就是这个设计的一定局限性

4.2数据整理

陈述为了把测试数据加工成便于评价的适当形式,使得测试结果可以同,已知结果进行比较而要用到的转换处理技术。在输出不同数值的情况下,需要对输出进行整理,不仅是要判断预期输出与实际输出是否相同,还要对输出数据的放置进行整编

4.3尺度

实验中的三个程序,在进行多次修改之后,是可以成功运行的,先所有的预期输出与实际输出均为一致。测试在实验中还是起到的一定的作用,从不同的角度对实验进行了不同程度的测试,在实验过程中还是发现了不少错误。修改之后,便得以成功

附录: 最终修改成功源代码: 三角形:

#include #define e 2.718281828 main() {

float a,b,c;

system( \ 936 \ clrscr();

printf(\请输入三个边长:\\n\ scanf(\

if((a>=1&&a<=200)&&(b>=1&&b<=200)&&(c>=1&&c<=200)) {

if(a+b>c && a+c>b && b+c>a)

if((a*a+b*b-c*c<=e-2)||(a*a+c*c-b*b<=e-2)||(c*c+b*b-a*a)<=e-2) { if(a==b||b==c||a==c)

printf(\等腰直角三角形\\n\ else printf(\直角三角形\\n\ } else { if(a==b||b==c||a==c) if(a==b&&a==c)

printf(\等边三角形\\n\ else printf(\等腰三角形\\n\ else printf(\一般三角形\\n\ } else

printf(\非三角形\\n\}

else printf(\输入范围不合理\\n\ getch(); }

Nextday函数: #include int main() {

int year,month,day;

int a[12]={31,29,31,30,31,30,31,31,30,31,30,31}; int b[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int y,m,d;

system( \ 936 \ clrscr();

printf(\请输入日期: \

scanf(\

if((year>=1900&&year<=2100)&&(month>=1&&month<=12)&&(day>=1&&day<=31) ) { if(month<12) {

if(year%4||year0&&!(year@0)) {

if(b[month-1]>day) {d=day+1; m=month; y=year;

printf(\ else if(b[month-1]==day) {d=1;

m=month+1; y=year;

printf(\ else printf(\输入错误\\n\

} else {

if(a[month-1]>day) {d=day+1; m=month; y=year;

printf(\ else {d=1;

m=month+1; y=year;

printf(\

} } else

{ if(a[month-1]>day||b[month-1]>day) printf(\ else

printf(\ } } else

printf(\超出范围\\n\ getch(); }

佣金问题:

#include int main() {

int x,y,z,n;

system( \ 936 \ clrscr();

printf(\请输入购买的枪机、枪托、枪管数量:\\n\scanf(\

if((x>=1&&x<=70)&&(y>=1&&y<=80)&&(z>=1&&z<=90)) {

n=45*x+30*y+25*z; if(n<=1000)

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\

else if(n<=1800)

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\ else

printf(\枪机数%d、枪托数%d、枪管数%d、总销售额%d、佣金%f\ } else

printf(\输入范围不合理\\n\ getch(); }

本文来源:https://www.bwwdw.com/article/v0vr.html

Top