您的当前位置:首页正文

软件测试实用教程实验报告

来源:画鸵萌宠网


桂林航天工业学院

信息工程系

2013学年第 二 学期

实 验 报 告

课程名称: 软件测试使用教程 实验名称: 实验一:黑盒测试(一) 实验二:黑盒测试(二) 实验三:白盒测试(一)

实验四:白盒测试(二) 实验五:音乐转换的黑盒测试

班 级 学 号 201102720132 学 生 姓 名 黄艺华 指 导 教 师 张亚红

黑盒测试(一)

一、实验目的

(1)能熟练应用黑盒测试技术进行测试用例设计;

(2) 对测试用例进行优化设计; 二.实验要求与内容

1.三角形问题的边界值分析测试用例

在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1, 100] 。在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。利用这些信息能够确定下列输出(值域)等价类。

R1 = { : 边为a,b,c的等边三角形 } R2 = { : 边为a,b,c的等腰三角形 } R3 = { : 边为a,b,c的一般三角形 } R4 = { : 边为a,b,c不能组成三角形 } 用等价类划分和边界值分析测试技术设计测试用例。 程序代码:

#include void main() {

float a,b,c;

printf(\"请输入三角形的三条边长a,b,c:\\n\"); scanf(\"%f\scanf(\"%f\scanf(\"%f\

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

if(a+bprintf(\"非三角形!\\n\");

else if((a==b&&(a!=c))||(a==c&&(b!=c))||(b==c&&(a!=c))) /*判断是否为等腰三角形*/

printf(\"等腰三角形\\n\");

else if(a==c && a==b) /*判断是否为等边三角形*/

printf(\"等边三角形\\n\"); else

printf(\"一般三角形!\\n\");

} else

printf(\"请输入1-100之间的数!\\n\"); }

2.等价类划分:

输入输出条件 是否三角形 有效等价类 (A>0) (1) (B>0) (2) (C>0) (3) (A+B>C) (4) (B+C>A) (5) (A+C>B) (6) (A=B) (13) (B=C) (14) (C=A) (15) (A=B)and(B=C)and (C=A) (17) 无效等价类 (A≦0) (7) (B≦0) (8) (c≦0) (9) (A+B≦C) (10) (B+C≦A) (11) (A+C≦B) (12) (A≠B)and(B≠C)and (C≠A) (16) (A≠B) (18) (B≠C) (19) (C≠A) (20) 是否等腰三角形 是否等边三角形 3.测试用例: 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C 2,4,5 0,1,2 1,0,2 1,2,0 1,2,3 100,50,50 101,99,2 3,3,4 3,4,4 100,100,1 3,4,5 3,3,3 3,4,4 3,4,3 3,3,4 非等腰三角形 等边三角形 非等边三角形 等腰三角形 输出 一般三角形 不是三角形 4.边界值分析法测试用例: 测试用例 Test1 a 60 b 60 c 1 预期输出 等腰三角形 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9 Test10 Test11 Test12 Test13 60 60 50 50 60 60 50 50 1 2 99 100 60 60 50 50 1 2 99 100 60 60 50 50 2 60 99 100 60 60 50 50 60 60 50 50 等腰三角形 等边三角形 等腰三角形 非三角形 等腰三角形 等腰三角形 等腰三角形 非三角形 等腰三角形 等腰三角形 等腰三角形 非三角形 5.找零钱最佳组合

假设商店货品价格(R)皆不大于100 元(且为整数),若顾客付款在100元内(P),求找给顾客最少货币个(张)数?(货币面值50 元10 元,5 元,1 元四 种 )。 程序代码:

#include using namespace std; int main(void) {

int R;

cout<<\"商品价格为:\"<< endl; cin>>R; int P;

cout<<\"顾客付款为:\"<< endl; cin>>P; if(R<1||P<1||R>100||P>100||Punsigned int Z=P-R ; unsigned int N50 = 50; unsigned int N50_counter = 0; cout<<\"您的输入有误,请重输!\";

unsigned int N10 = 10; unsigned int N10_counter = 0; unsigned int N5 = 5; unsigned int N5_counter = 0; unsigned int N1 = 1; unsigned int N1_counter = 0; cout << \"应找零钱为:\"<Z = Z%N50; N10_counter = Z/N10; Z = Z%N10; N5_counter = Z/N5; Z = Z%N5; N1_counter = Z;

cout << \"最佳找零方案:\" << N50_counter << \" 张 50 元,\" << N10_counter

<< \" 张 10 元,\"

<< N5_counter << \" 张 5 元,\" << N1_counter << \" 张 1 元。\" << endl; } }

分析输入的情形

R R>100 0N50 N50=1 N50=0 N10 4>=N10>=1 N10=0 N5 N5=1 N5=0 N1 4>=N1>=1 N1=0 P P>100 R<=P<=100 P分析规格中每一决策点之情形, RR1,RR2,RR3 表示计算要找 50,10,5 元货币数时之剩 以 余金额。 R>100 R<=0 P>100 P=50 RR2>=10 RR3>=5 ④由上述之输入/输出条件组合出可能的情形。(RR=P-R)

R>100 R<=0

0100 00⑤为满足以上之各种情形,测试资料设计如下: 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 货物价格 101 100 -1 0 100 50 51 90 91 95 99 96 100 付款金额 90 101 90 100 99 100 100 100 100 100 100 100 100 输出 您的输入有误,请重输! 您的输入有误,请重输! 您的输入有误,请重输! 您的输入有误,请重输! 您的输入有误,请重输! 1张50元,0张10元,0张5元,0张1元 0张50元,4张10元,1张5元,4张1元 0张50元,1张10元,0张5元,0张1元 0张50元,0张10元,1张5元,4张1元 0张50元,0张10元,1张5元,0张1元 0张50元,0张10元,0张5元,1张1元 0张50元,0张10元,0张5元,4张1元 0张50元,0张10元,0张5元,0张1元

黑盒测试(二) 一、实验目的

(1)能熟练应用黑盒测试技术进行测试用例设计;

(2) 对测试用例进行优化设计; 二.实验要求与内容 1.

NextDate函数的边界值分析测试用例

程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31、1900≤ year ≤2050。),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上第二天的日期。例如,输入为2005年11月30日,则该程序的输出为2005年12月1日。请用等价类测试和边界测试法设计测试用例。 程序代码:

#include

int main() { int

s[2][13]= { 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31, };

int year=0; int month=0; int day=0;

int n,i,daytemp; int flag=0;

int nyear=0,nmonth=0,nday=0; printf(\"输入年月日\\n\");

scanf(\"%d%d%d\ printf(\"输入天数\\n\"); scanf(\"%d\

if(year<0||month<0||month>12||day<1||n<0) {

printf(\"输入数据错误\\n\"); return 1; }

daytemp=day+n;

if((year%4==0&&year%100!=0)||year%400==0) flag=1;

if(day>s[flag][month]) {

printf(\"输入日期与年月不符.\\n\"); return 1;

}

if(daytemp<=s[flag][month]) {

nyear=year;

nmonth=month; nday=daytemp; } else {

i=month; nyear=year; while(daytemp>s[flag][i]) {

daytemp=daytemp-s[flag][i]; i++; if(i>12) { nyear++; if((nyear%4==0&&nyear%100!=0)||nyear%400==0) flag=1; else flag=0; i=i-12; } }

nmonth=i; nday=daytemp; }

printf(\"%d年%d月%d日第%d天后是:\\n\

printf(\"%d年%d月%d日\\n\

(1)等价类划分: 等价类 有效等价类 无效等价类 year year为整数 1900≤ year ≤2050的闰年 1900≤ year ≤2050的非闰年 year<1900 Year>2050 Year不为整数 输入数(year-month-day) 2010-5-10 2010-5.4-10 month month为整数1≤month≤12 day day为整1≤day≤31 day<1 day>31 day为整数 数Month<1 Month>12 Month不为整数 据预期输出 2010-5-11 无效输入 (2)等价类测试用例: 测试用例 1 2 3 4 5 (3)边界值测试: 测试用例 Test1 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9

2010-13-10 2000-2-30 2000-2-31 输入数(year-month-day) 1900-1-1 2051-12-31 1900-0-1 1900-13-10 1902-5-0 1903-5-32 1899-7-5 2050-2-29 2051-7-5 据无效输入 无效输入 无效输入 预期输出 1900-1-2 无效输入 无效输入 无效输入 无效输入 无效输入 无效输入 2050-3-1 无效输入 白盒测试(一)

一、实验目的

(1)能熟练应用黑盒测试技术进行测试用例设计;

(2) 对测试用例进行优化设计; 二.实验要求与内容

1.根据流程图编写程序,并使用逻辑覆盖测试方法测试。

N X>8 AND Y>5 Y X>0 OR Y>0 N S=y+20 Y S=y/3 N X>16 OR Y>10 Y S=2*y

(1)画出该程序的控制流图

(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方

法设计测试用例,并写出每个测试用例的执行路径。

#include void main() {

int x,y; int s=0; cin>>x; cin>>y;

if(x>8 && y>5) { if(x>16||y>10) { s=2*y; } } else { if(x>0||y>0) { s=y/3; } else { s=y+20; } }

cout<控制流图: 4

1 3 2 5 6 7

语句覆盖测试用例: ID LC001 LC002 输入 x 3 17 y 3 11 s 0 0 预期输出 s 1 22 1 2 5 1 3 6 100% 100% 通过路径 语句覆盖

判定覆盖测试用例: ID LC001 LC002 LC003 LC004 ID LC001 LC002 LC003 LC004 输入 x 9 17 1 6 y 6 11 -1 6 s 0 0 0 0 预期输出 s 0 0 0 0 s 1 26 22 0 预期输出 s 0 22 19 2 1 3 1 3 6 1 2 4 1 2 5 简单判定条件 T1 T F T F T2 F T T F T3 F F T F 通过路径 1 2 5 1 2 4 1 3 6 1 3 100% 100% 100% 100% 条件覆盖 100% 通过路径 语句覆盖 条件覆盖测试用例:

输入 x 9 -6 18 9 y 3 6 11 6

组合覆盖: ID LC001 LC002 LC003 LC004 LC005 输入 x 9 -6 18 9 -1 y 3 6 11 6 -1 s 0 0 0 0 1 预期输出 s 1 26 22 0 0 简单判定条件 T1 T F T F F T2 F T T F F T3 F F T F F 通过路径 1 2 5 1 2 5 1 3 6 1 3 7 1 2 条件覆盖 100% 路径覆盖: ID LC001 LC002 LC003 LC004 输入 x -1 8 18 10 y -1 3 12 6 s 0 0 0 0 预期输出 s 19 1 24 0 1 2 4 1 2 5 1 3 6 1 3 100% 通过路径 语句覆盖

判定/条件覆盖: ID LC001 LC002 LC003 输入 x -1 9 18 y -1 3 12 s 0 0 0 预期输出 s 19 1 24 1 2 4 1 2 5 1 3 6 100% 通过路径 语句覆盖 LC004 10 6 0 0 1 3 白盒测试(二) 一.实验目的

能熟练应用白盒测试技术设计测试用例; 二.实验内容

计算生日是星期几

已知公元1年1月1日 是星期一。编写一个程序,只要输入年月日,就 能回答那天是星期几。应用逻辑覆盖方法和基本路径测试方法为上面的问题设 计测试用例。 三.程序代码

#include

int check(int year,int month,int day){ int pass=1; int leap=0;

if( (year%4==0 && year%100!=0 )|| year%400==0 ) leap=1;

if(year<1 ||day<1) return 0; switch(month)

{ case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(day>31)return 0;break; case 4:case 6:case 9:case 11:if(day>30) return 0; break;

case 2: if(leap==1&&day>29) {return 0;} if(leap==0&&day>28){return 0;} break; default:return 0;break; }

return pass; }

void fun(){

int year,month,day,sumday; sumday=0;

printf(\"input year,month,day:\\n\"); scanf(\"%d%d%d\

if(check(year,month,day)==0){printf(\"输入的日期无效\");return;} if(month==1||month==2) { month+=12; year--; }

sumday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7; if(month==13||month==14)

{ month-=12; year++;} switch(sumday)

{case 0:printf(\"%d-%d-%d is Monday\\n\case 1:printf(\"%d-%d-%d is Tuesday\\n\case 2:printf(\"%d-%d-%d is Wednesday\\n\case 3:printf(\"%d-%d-%d is Thurday\\n\case 4:printf(\"%d-%d-%d is Friday\\n\case 5:printf(\"%d-%d-%d is Saturday\\n\case 6:printf(\"%d-%d-%d is Sunday\\n\default:printf(\"date error\");break; } }

main()

{ for(int i=0;i<14;i++) fun(); }

四.画出程序的控制流图

16 17 19 21 22 24 23 31 33 34 end

2 3 4 5 6 7 8 9 10 11 12 13 14 15 end

3.用基本路径的测试路径 编号 基本路径 1 ⒃⒄⒆(21)(24)(31)(33) 2 ⒃⒆(34) 3 ⒃⒆(21)(34) 4 ⒃⒆(21)(22)(34) 5 ⒃⒆(21)(23)(34) 6 ⒃⒆(21)(24)(34) 7 ⒃⒆(21)(31)(34) 8 ⒃⒆(21)(22)(33) 9 ⒃⒆(21)(23)(33) 10 ⒃⒆(21)(31)(33)

条件: 编号 条件 编号 T1 month==1 T13 T2 month==2 T14 T3 month==13 T15 T4 month==14 T16 T5 sumday==0 T17 T6 sumday==1 T18 T7 sumday==2 T19 编号 11 12 13 14 15 16 17 18 基本路径 (0)① (0)②③④⑤⑥⑦⑧ (0)②④⑤⑦⑨ (0)②④⑤⑦⑩ (0)②④⑤⑦(11) (0)②④⑤⑦(12) (0)②④⑤⑦(13) (0)②④⑤⑦(14) year%100!=0 year%100!=0 year%400==0 year<1 day<1 month==1 day>31 编号 T25 T26 T27 T28 T29 T30 T31 month==2 month==3 month==4 month==5 month==6 month==7 month==8 T8 sumday==3 T9 sumday==4 T10 sumday==5 T11 sumday==6 T12 year%4==0 4.测试用例 用例编输入的数号 据 1 2012 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 2012 3 1 2012 4 6 2012 5 5 2012 6 3 2012 7 30 2000 8 15 2012 9 31 2013 2 8 2013 0 12 2013 1 26 2013 10 33 2013 11 31 2012 2 30 2013 2 29 2013 12 31 2013 6 30 2013 2 15 T20 T21 T22 T23 T24 day>30 leap==1 leap==0 day>29 day>28 T32 T33 T34 T35 month==9 month==10 month==11 month==12 预期的输实际的输执行的路径 出 出 Wednesday Wednesday (0)②③④⑤⑥⑦⑧ Thurday Friday Saturday Sunday Monday Tuesday 错误提示 Wednesday 错误提示 Saturday 错误提示 错误提示 错误提示 错误提示 Saturday Sunday Friday Thurday Friday Saturday Sunday Monday Tuesday 错误提示 Wednesday 错误提示 Saturday 错误提示 错误提示 错误提示 错误提示 Saturday Sunday Friday (0)②④⑤⑦⑨ (0)②④⑤⑦⑩ (0)②④⑤⑦(11) (0)②④⑤⑦(12) (0)②④⑤⑦(13) (0)②④⑤⑦(14) (0)① ⒃⒄⒆(21)(24)(31)(33) ⒃⒆(34) ⒃⒆(21)(34) ⒃⒆(21)(22)(34) ⒃⒆(21)(23)(34) ⒃⒆(21)(24)(34) ⒃⒆(21)(31)(34) ⒃⒆(21)(22)(33) ⒃⒆(21)(23)(33) ⒃⒆(21)(24)(31)(33) ⒃⒆(34) 覆盖的条件 T12,T13,T25,T21,T2,T4,T7 T12,T13,T26,T8 T12,T13,T27,T9 T12,T13,T28,T10 T12,T13,T29,T11 T12,T13,T30,T5 T12,T15,T31,T6 T12,T13,T20,T32 T25,T22,T2,T4,T7 T17 T18,T1,T3,T10 T33,T19 T34,T20 T12,T13,T25,T21,T23 T25,T24 T35,T10 T29,T11 T25,T22,T2,T4,T9 19 0 12 12 错误提示 错误提示 T16 音乐转换器的黑盒测试

1.在执行转化格式过程中。其界面没有设置停止与继续的按钮。

2.在添加转换文件列表中,已转换的文件在已转换完成的时候,不会自动从列表删除,不自行撤除将导致再次重复转换。如图:

3.在转换完成之后,没有自动跳转回主页面,而是仍停留在当前页面,需关闭当前窗口方可跳转。如图:

4.在输出格式中,只支持mp3,wma,ogg,ape,wav,mp2,它支持的所有流行的媒体格式,但在输出格式中只限制以上格式的输出。如图:

5.“对于重命名文件”,它只支持自动换名,用户不可以立即对文件重命名,这在大批量的文件中,用户很难找寻和分清哪个是哪个文件,如果可以在转换时可以用户自定义重命名就方便多了。

6.在添加了多项任务,当多选择删除当前任务时,软件出现明显的错误。如图:

7.在所有转换方式当中,批量转换时,进度条的执行没有具体标明执行到了哪个任务,这将导致用户不知道进程的进度。应该精细表明到哪首歌的进度如图:

因篇幅问题不能全部显示,请点此查看更多更全内容

Top