学生选课系统白盒测试.docx
- 文档编号:24647893
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:32
- 大小:105.12KB
学生选课系统白盒测试.docx
《学生选课系统白盒测试.docx》由会员分享,可在线阅读,更多相关《学生选课系统白盒测试.docx(32页珍藏版)》请在冰豆网上搜索。
学生选课系统白盒测试
实验报告
课程名称:
软件测试方法和技术
学生姓名:
刘成立、龙甜
学号:
***********、***********
院系:
计算机班级:
1202组别:
1
任课教师:
张建东指导老师:
张建东
一、学生选课系统选课以及退选流程图2
二、语句覆盖:
4
2.1:
语句覆盖过程分析:
2.2:
语句覆盖测试用例:
三、判定覆盖:
5
3.1:
判定覆盖过程分析:
3.2:
判定覆盖测试用例:
四、条件覆盖:
6
4.1:
条件覆盖过程分析:
4.2:
条件覆盖测试用例:
五、判定-条件覆盖:
7
5.1:
判定-条件覆盖过程分析:
5.2:
判定-条件覆盖测试用例:
六、条件组合覆盖:
8
6.1:
条件组合覆盖过程分析:
6.2:
条件组合覆盖测试用例:
七、路径覆盖:
9
7.1:
路径覆盖过程分析:
7.2:
路径覆盖测试用例:
八、实验总结:
11
九、源代码:
12
实验一白盒测试用例设计
一、学生选课系统选课以及退选流程图:
1.1学生选课系统选课流程图:
A
F
F
B
T
F
C
T
T
T
D
E
F
T
F
H
F
注释:
条件A为,判定课程号是否存在?
条件B为,判定是否在课程号范围内?
条件C为,判定是否确认选课?
条件D为,判断该课程是否已经选过了?
条件E为,判定是否继续选课?
条件H为,判定选课人数是否已满?
1.2学生选课系统退选流程图:
A
T
F
B
T
C
F
是否重新退选课?
T
F
T
D
F
注释:
条件A为,判定课程号是否输入有误?
条件B为,判定课程号是否存在?
条件C为,判断是否重新退选?
条件D为,判定退选是否成功?
二、语句覆盖:
2.1:
语句覆盖过程分析:
语句覆盖的基本思想是设计若干测试用例,使得运行被测试程序时,每个可执行语句至少被执行一次。
2.2:
语句覆盖测试用例:
2.2.1选课功能语句覆盖测试用例:
编号
输入
条件A
条件B
条件C
条件D
条件E
条件H
预期结果
Ok/
Ng
P1
a=0,
e=1
T
T
该课程不存在,重选
Ok
P2
a!
=0,
0
=1
F
T
T
T
F
该课程选过了,选课结束
Ok
P3
a!
=0,
0
=1,e!
=1
h F T T F F T 选课成功 Ok P4 a! =0, 0 =1, h>max F T T F F 该课程人数已满,选课结束 Ok 2.2.2退选功能语句覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 预期结果 Ok/ Ng P1 a>Cno||a<0, T 课程号输入有误,重退选 Ok P2 a b=0,c=1 F T T 课程不存在,重退选 Ok P3 a b! =0,c! =1,d=1 F F F T 退选成功,不再退选 Ok P4 a b! =0,c! =1,d! =1 F F F 未选此课,退选结束 Ok 三、判定覆盖: 3.1: 判定覆盖过程分析: 判定覆盖的基本思想是设计若干用例,使得运行被测程序,使每个判定的真假分支至少经历一次。 3.2: 判定覆盖测试用例: 3.2.1选课功能判定覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 条件E 条件H 预期结果 Ok/ Ng P1 a=0,e=1 T T 该课程不存在,重选 Ok P2 a! =0, 0>b||b>Cno, e! =1 F F F 超出课程范围,选课结束 Ok P3 a! =0, 0 =1,e! =1 F T F F 不选该课程,选课结束 Ok P4 a! =0, 0 C=1,d=1,e! =1 F T T T F 该课程选过来,选课结束 Ok P5 a! =0, 0 C=1,d! =1,e! =1,h=max F T T F F T 选课人满,选课结束 Ok P6 a! =0, 0 C=1,d! =1, H F T T F F 选课成功 Ok 3.2.2退选功能判定覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 预期结果 Ok/ Ng P1 a>Cno||a<0, T 课程号输入有误 Ok P2 a b=0,c=1 F T T 课程号不存在,重新退选 Ok P3 a b! =0,c! =1,d=1 F F F T 退选成功,结束退选 Ok P4 a b! =0,c! =1,d! =1 F F F 未选此门课程,结束退选 Ok 四、条件覆盖: 4.1: 条件覆盖过程分析: 条件覆盖的基本思想是,设计若干测试用例,运行程序,使得每个判断中的可能取值至少满足一次。 4.2: 条件覆盖测试用例: 4.2.1选课功能条件覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 条件E 条件H 预期结果 Ok/ Ng P1 a=0,b=1 T T 该课程不存在,重选 Ok P2 A! =0, 0 c=1,d! =1, h=max F T T F T 选课人满,选课结束 Ok P3 A! =0, 0 =1, H! =max F T T T F 该课程选过来,选课结束 Ok P4 A! =0, 0 =1,e! =1, F T F T F 选课成功 Ok P5 A! =0, b>Cno,e! =1 F F F 该课程不存在,重选 Ok P6 A! =0, b<0,e! =1 F F F 该课程不存在,重选 Ok 4.2.2退选功能条件覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 预期结果 Ok/ Ng P1 A>Cno T 课程号输入有误 Ok P2 A<0,b=0,c=1 T 课程号输入有误 Ok P3 a b! =0,c=1 F T T 课程号不存在,重新退选 Ok P4 a b! =0,c! =1,d=1 F F F T 退选成功,结束退选 Ok P5 a b! =0,d! =1 F F F 未选此门课程,结束退选 Ok 五、判定-条件覆盖: 5.1: 判定-条件覆盖过程分析: 判定-条件覆盖的基本思想是,设计若干测试用例,运行程序,使得判断条件中的所有可能至少执行一次,同时,所有判断的可能结果至少执行一次。 5.2: 判定-条件覆盖测试用例: 5.2.1选课功能判定-条件覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 条件E 条件H 预期结果 Ok/ Ng P1 a=0,b=1 T T 该课程不存在,重选 Ok P2 A! =0, 0 c=1,d! =1, h=max F T T F T 选课人满,选课结束 Ok P3 A! =0, 0 c=1,d! =1, H! =max F T T T F 该课程选过来,选课结束 Ok P4 A! =0, 0 c=1,e! =1, F T T T F 选课成功 Ok P5 A! =0, b>Cno,e! =1 F F F 该课程不存在,重选 Ok P6 A! =0, b<0,e! =1 F F F 该课程不存在,重选 Ok P7 a! =0, 0 c! =1,e! =1 F T F F 取消选课,结束选课 Ok 5.2.2退选功能判定-条件覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 预期结果 Ok/ Ng P1 A>Cno T 课程号输入有误 Ok P2 A<0,b=0, c=1 T 课程号输入有误 Ok P3 a b! =0,c=1 F T T 课程号不存在,重新退选 Ok P4 a b! =0, c! =1,d=1 F F F T 退选成功,结束退选 Ok P5 a b! =0, d! =1 F F F 未选此门课程,结束退选 Ok 六、条件组合覆盖: 6.1: 条件组合覆盖过程分析: 条件组合覆盖的基本思想是,设计若干测试用例,运行程序,使得每个条件中的所有可能至少出现一次,并且每个判定的结果也至少出现一次。 6.2: 条件组合覆盖测试用例: 6.2.1选课功能条件组合覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 条件E 条件H 预期结果 Ok/ Ng P1 a=0,b=1 T T 该课程不存在,重选 Ok P2 A! =0, 0 c=1,d! =1,h=max F T T F T 选课人满,选课结束 Ok P3 A! =0, 0 c=1,d! =1, H! =max F T T T F 该课程选过来,选课结束 Ok P4 A! =0, 0 c=1,e! =1, F T T T F 选课成功 Ok P5 A! =0, b>Cno,e! =1 F F F 该课程不存在,重选 Ok P6 A! =0, b<0,e! =1 F F F 该课程不存在,重选 Ok P7 a! =0, 0 c! =1,e! =1 F T F F 取消选课,结束选课 Ok P8 a! =0, 0>b&&b>Cno, F F F 取消选课,结束选课 6.2.2退选功能条件组合覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 预期结果 Ok/ Ng P1 A>Cno T 课程号输入有误 Ok P2 A<0,b=0,c=1 T 课程号输入有误 Ok P3 a b! =0,c=1 F T T 课程号不存在,重新退选 Ok P4 a b! =0,c! =1,d=1 F F F T 退选成功,结束退选 Ok P5 a b! =0,d! =1 F F F 未选此门课程,结束退选 Ok P6 A>Cno||a<0, T 课程号输入有误 Ok 七、路径覆盖: 7.1: 路径覆盖过程分析: 路径覆盖的基本思想是,设计所有的测试用例,来覆盖程序中的所有可能的执行路径。 7.2: 路径覆盖测试用例: 7.2.1选课功能路径覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 条件E 条件H 预期结果 Ok/ Ng P1 a=0 T 该课程不存在,重选 Ok P2 a=0,e=1 T 该课程不存在,重选 Ok P3 a=0,b<=0&&b>=0 T F 是否重新选课 Ok P4 a=0,b>0&&b =1 T T F 是否重新选课 Ok P5 a=0,b>0&&b =1,d=1 T T T T 这门课程选过了 Ok P6 a=0,b>0&&b =1,d! =1,h=max T T T F T 这门课的人数已满 Ok P7 a=0,b>0&&b =1,d! =1,h! =max T T T T F 选课成功! Ok P8 e=1 T 重新选课 Ok P9 e! =1 F 退出系统 Ok 7.2.2退课功能路径覆盖测试用例: 编号 输入 条件A 条件B 条件C 条件D 预期结果 Ok/ Ng P1 a>Cno||a<0 T 课程号输入有误 Ok P2 A<=Cno||a>=0 B=0 F T 该课程不存在 Ok P3 A<=Cno||a>=0 B! =0,d=1 F T T 退选成功 Ok P4 A<=Cno||a>=0 B! =0,d! =1 F T F 你还未选此门课 Ok P5 C=1 T 重新退选 Ok P6 C! =1 F 退出系统 Ok 八、实验总结: 对于白盒测试,在设计测试用例时首先对程序进行分析,从程序的内部结构出发设计测试用例,涉及到程序的控制方法、源语句、编码细节、数据库设计等。 设计测试用例时应用了白盒测试中的多种测试方法,其中包括: 测试覆盖(语句覆盖、分支覆盖、分支条件覆盖等)、基路径测试等方法。 白盒测试中,对代码的测试比较透彻,但不容易生成测试用例,而且测试工作量很大。 因为白盒测试是基于代码的基础上,所以对变量的定义、数据的分析、精度的度量都有严格的要求。 同时,对于白盒测试的案例设计,要注意以下几点: (1)保证每个模块中的所有独立路径至少被执行一次; (2)对所有的逻辑值均需要测试真、假两个分支; (3)在上下边界及可操作范围内运行所有循环; (4)检查内部数据结构以确保其有效性。 在测试中,也出现了一些不足: 在选课模块中,有一个条件语句是判断所输入的课程号是否存在。 当所输入课程号不存在的时候,程序跳转到重新开始选课。 这个判定,存在缺陷。 只能判断数字,对于其他的数据类型,缺少错误输入判断。 在选课模块中,有一个条件语句是判断是否确认选择。 输入选项有1和2,当输入为其他数据类型时,程序界面一闪而过,退回到学生界面。 在退选模块中,有一个条件语句是判断是否确认退选。 输入选项有1和2,当输入为其他数据类型时,程序出错。 九、源代码: voidselect(intXH)/*选课*/ { leap1: system("color70"); intcn,i,j,Cn,k; intp=0; chart[20]; printf("课程号课程名上课时间上课地点上课老师老师编号课程人数\n");/*添加*/ for(k=0;k<=CPMAX;k++)/*添加*/ { if(Cou[k].Cno==0)break; } for(i=0;i { printf("%3d%10s%9.2f",Cou[i].Cno,Cou[i].Cname,Cou[i].time); printf("%10s%8s%9d%9d\n",Cou[i].place,Cou[i].teacher,Cou[i].Tno,Cou[i].pn); }/*添加*/ printf("请输入课程序号\n"); scanf("%d",&cn); Cn=cn-1; if(Cou[Cn].Cno==0) { printf("该课程不存在\n"); printf("是否继续选课? 1是2否\n"); scanf("%d",&j); if(j==1){system("cls");gotoleap1;} } elseif(Cn { printf("课程号课程名上课时间上课地点上课老师老师编号课程人数\n"); printf("%3d%10s%9.2f",Cou[Cn].Cno,Cou[Cn].Cname,Cou[Cn].time); printf("%10s%8s%9d%9d\n",Cou[Cn].place,Cou[Cn].teacher,Cou[Cn].Tno,Cou[Cn].pn); printf("是否选择该课程? 1是2否\n"); scanf("%d",&j); if(j==1) { for(j=1;j<(SCMAX-1);j++) { if(Student[XH][j]==cn)p=1; } if(p==1) { printf("该门课程已经选过了\n"); printf("是否重新选课? 1是2否\n"); scanf("%d",&i); if(i==1){system("cls");gotoleap1;} } elseif(Student[XH][SCMAX-1]>0) { printf("你所选课程已满不能再进行选择\n"); } elseif(Cou[Cn].pn==CPMAX) { printf("该门课人数已满"); printf("是否重新选课? 1是2否\n"); scanf("%d",&i); if(i==1){system("cls");gotoleap1;}/*1111*/ } else { if(Student[XH][1]==0)Student[XH][1]=Cou[Cn].Cno; elseif(Student[XH][2]==0)Student[XH][2]=Cou[Cn].Cno; elseif(Student[XH][3]==0)Student[XH][3]=Cou[Cn].Cno; else Student[XH][4]=Cou[Cn].Cno; Cou[Cn].pn=Cou[Cn].pn+1; printf("选课成功! \n"); printf("是否继续选课? 1是2否\n"); scanf("%d",&j); if(j==1){system("cls");gotoleap1;} } } else { printf("是否继续选课? 1是2否\n"); scanf("%d",&j); if(j==1){system("cls");gotoleap1;} } } else { printf("该课程不存在\n"); printf("是否继续选课? 1是2否\n"); scanf("%d",&j); if(j==1){system("cls");gotoleap1;} } printf("任意键返回\n"); scanf("%s",&t); system("cls"); printf("%s欢迎回来! \n",S[XH].Sname); system("color80"); printf("###########################################\n"); printf("##\n"); printf("##\n"); printf("#1选课查询#\n"); printf("##\n"); printf("#2选课#\n"); printf("##\n"); printf("#3选课退选#\n"); printf("##\n"); printf("##\n"); printf("#B返回#\n"); printf("################################################\n"); scanf("%d",&i); if(i==1){system("cls");search(XH);} elseif(i==2){system("cls");select(XH);} elseif(i==3){system("cls");DropC(XH);} else { system("cls"); jiemian(); } } voidDropC(intXH)/*课程退选*/ { leap2: inti,j,k; charl[20]; intm=0; printf("您已选择的课程为: \n"); printf("课程号课程名上课时间上课地点上课老师老师编号课程人数\n"); for(j=1;j<=4;j++) { if(Student[XH][j]==0)printf("空\n"); else { printf("%3d%10s%9.2f",Cou[Student[XH][j]-1].Cno,Cou[Student[XH][j]-1].Cname,Cou[Student[XH][j]-1].time); pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 系统 测试