软件测试实验.docx
- 文档编号:12911799
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:16
- 大小:105.60KB
软件测试实验.docx
《软件测试实验.docx》由会员分享,可在线阅读,更多相关《软件测试实验.docx(16页珍藏版)》请在冰豆网上搜索。
软件测试实验
淮海工学院计算机科学系
实验报告书
课程名:
《软件工程》
题目:
软件测试实验
实验三
班级:
软件081
学号:
110831123
姓名:
软件测试验报告要求
一、目的与要求:
1)系统学习和理解结构化软件工程实现阶段的基本概念、原理、技术和方法;
2)掌握软件测试的基本技术和方法,如白盒测试与黑盒测试技术和方法;
3)通过试验和应用,要逐步提高和运用白盒测试与黑盒测试技术解决实际测试问题的能力;
4)熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;
5)按照实验题目要求独立完成本次试验任务,严禁拷贝、抄袭他人设计成果;
6)认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等),并按时提交。
二、实验内容或题目
1)选择结构化详细设计试验中自己设计的某一有代表性模块(含有分支和循环结构),分别用语句覆盖、判定覆盖、条件覆盖和基本路径测试法设计相应测试用例(提前准备好,每种测试用例分别写在作业本或草稿纸上,上机时带上检查);
2)用C语言实现被测试模块(程序要求提前编写和调试好),然后按照上一步规定的测试方法,分别完成相关测试任务,并详细记录测试结果;
三、实验步骤与源程序
主要代码如下:
//保存输入的订单信息
voidsave(char*name,intn)/*自定义函数save*/
{
FILE*fp;/*定义一个指向FILE类型结构体的指针变量*/
inti;
if((fp=fopen(name,"wb"))==NULL)/*以只写方式打开指定文件*/
{
printf("不能打开文件!
\n");
exit(0);}
for(i=0;i if(fwrite(&order[i],sizeof(structManagement_order),1,fp)! =1)/*将一组数据输出到fp所指的文件中*/ printf("写入文件失败! \n");/*如果写入文件不成功,则输出错误*/ fclose(fp);/*关闭文件*/ } //插入审核的订单 voidAuditing(char*name,intchoose_num)/*自定义函数save*/ { FILE*fp;/*定义一个指向FILE类型结构体的指针变量*/ if((fp=fopen(name,"wb"))==NULL)/*以只写方式打开指定文件*/ { printf("不能打开文件! \n"); exit(0); } if(fwrite(&order[choose_num-1],sizeof(structManagement_order),1,fp)! =1)/*将一组数据输出到fp所指的文件中*/ printf("写入文件失败! \n");/*如果写入文件不成功,则输出错误*/ fclose(fp); printf("审核该订单成功! \n");/*关闭文件*/ } //审核好之后在order_未处理.txt中删除已审核的订单 voiddel(intchoose_num) { FILE*fp; intflag,i,j,k=0,n; fp=fopen(order0,"rb"); while(fread(&order[k],sizeof(structManagement_order),1,fp)! =0) k++; n=k; fclose(fp); for(flag=1,i=0;flag&&i { if(order[choose_num-1].clientname==order[i].clientname)/*查找与输入姓名相匹配的位置*/ { for(j=i;j { order[j].num=order[j+1].num;/*查找到要删除信息的位置后将后面信息前移*/ strcpy(order[j].clientname,order[j+1].clientname); strcpy(order[j].carname,order[j+1].carname); strcpy(order[j].price1,order[j+1].price1); strcpy(order[j].price2,order[j+1].price2); }flag=0;/*标志位置0*/ }} if(! flag) n=n-1; fp=fopen(order0,"wb");/*以只写方式打开指定文件*/ for(i=0;i fwrite(&order[i],sizeof(structManagement_order),1,fp);/*将数组中的员工工资信息输出到磁盘文件上*/ fclose(fp); fp=fopen(order0,"rb");/*以只读方式打开指定二进制文件*/ for(i=0;fread(&order[i],sizeof(structManagement_order),1,fp)! =0;i++)/*以只读方式打开指定二进制文件*/ printf("%-4d%-10s%-10s%-10s%-10s\n",order[i].num,order[i].clientname, order[i].carname,order[i].price1,order[i].price2);/*输出员工工资信息*/ fclose(fp); } //显示订单信息 voidshow(char*name,intn)/*自定义函数show*/ { inti; FILE*fp;/*定义一个指向FILE类型结构体的指针变量*/ if((fp=fopen(name,"rb"))==NULL)/*以只读方式打开指定文件*/ { printf("不能打开文件! \n"); exit(0); } for(i=0;fread(&order[i],sizeof(structManagement_order),1,fp)! =0;i++) { printf("%-4d%-10s%-10s%-10s%-10s\n",order[i].num,order[i].clientname, order[i].carname,order[i].price1,order[i].price2); } fclose(fp);/*以只写方式打开指定文件*/ } //输入订单信息 voidimport(intn) { for(inti=0;i { printf("NO%d",i+1); order[i].num=i+1; scanf("%s%s%s%s",order[i].clientname, order[i].carname,order[i].price1,order[i].price2); save(order0,n); } //printf("你输入的信息如下: "); //show(order0,n);} intexit_noexit() { intexit; boolflag1=true; while(flag1){ printf("是否退出? \t1.退出2.继续\n请选择: "); scanf("%d",&exit); switch(exit) { case1: return1; case2: return2; case3: printf("请正确选择! "); }}} //选择需审核的订单号 voidchoose_orders() { intchoose_num,deal_with,exit; boolflag=true,flag1=true; //printf("请输入需审核的订单编号: "); //scanf("%d",&choose_num); while(flag) { printf("请输入需审核的订单编号: "); scanf("%d",&choose_num); printf("你将如何处理该订单: \n1.面议\n2.通过\n3.退出"); printf("\n请选择: "); scanf("%d",&deal_with); switch(deal_with) { case1: Auditing(order1,choose_num); del(choose_num); if(exit_noexit()==1) flag=false; else flag=true; break; case2: Auditing(order2,choose_num); del(choose_num); if(exit_noexit()==1) flag=false; else flag=true; break; case3: flag=false; break; default: printf("请选择正确! \n请重新输入: "); scanf("%d",&deal_with); break; }} } voidorders() { intchoose=2,n; boolf=true; while(f) { printf("1.录入订单信息\n2.审核订单信息\n3.退出\n请选择: "); scanf("%d",&choose); switch(choose) { case1: printf("请输入插入的订单数目: "); scanf("%d",&n); printf("请输入客户名、车型、原价、给出价(中间用空格隔开): \n"); import(n); break; case2: printf("需审核的订单如下: \n"); show(order0,20); choose_orders(); break; case3: f=false; break; default: printf("选择错误! 请重新选择: "); scanf("%d",&choose); break; } } } voidlogin() { boolflag=true; while(flag) { charname[15]="admin"; charpass[15]="admin"; printf("输入用户名: \t"); gets(username); printf("\n输入密码: \t"); gets(password); if((strcmp(name,username)==0)&&(strcmp(pass,password)==0)) { flag=false; printf("\n登录成功! \n"); orders(); } else printf("登录失败! \t\n"); } }//登录 四、测试数据与实验结果(测试用例、测试结果等,可以抓图粘贴) 基本流程图如图1(有修改,只选取订单处理),参照实验二P2图2: 图1 图2 该流图的环形复杂度为: V(G)=9-7+2=4 1.语句覆盖: 1-1.登陆不成功(覆盖sa) 1-2.登陆成功,订单条件符合(通过),返回(覆盖sabcdfgh) 1-3.登陆成功,订单条件不符合(面议),返回(覆盖sabcefgh) 2.判定、条件覆盖: 2-1.登陆不成功(覆盖sa) 2-2.登陆成功,订单条件符合(通过),返回(覆盖sabcdfgh) 2-3.登陆成功,订单条件符合(通过),不返回继续(覆盖sabcdfg…) 2-4.登陆成功,订单条件不符合(面议),返回(覆盖sabcefgh) 2-5.登陆成功,订单条件不符合(面议),不返回继续(覆盖sabcefg…) 3.基本路径测试法(由于环形复杂度为4,则共有4种情况) 3-1.登陆不成功覆盖(sa) 3-2.登陆成功,订单条件符合(通过),返回(覆盖sabcdfgh) 3-3.登陆成功,订单条件不符合(面议),返回(覆盖sabcefgh) 3-4.登陆成功,订单条件符合(通过),不返回继续(覆盖sabcdfg…) 则以上所描述的情况测试结果如下: 1.登陆不成功(覆盖sa)如图3 图3 2.登陆成功,订单条件符合(通过),返回(覆盖sabcdfgh)如图4 图4 3.登陆成功,订单条件不符合(面议),返回(覆盖sabcefgh)如图5 图5 4.登陆成功,订单条件符合(通过),不返回继续(覆盖sabcdfg…)如图6 图6 5.登陆成功,订单条件不符合(面议),不返回继续(覆盖sabcefg…)如图7 五、结果分析与实验体会 这次代码完全自己编写,虽然花了不少时间,不过让我更进一步了解C语言中文件操作的种种情况,同时通过写测试用例,更渗透的了解白盒测试中语句覆盖、判定覆盖、条件覆盖以及基本路径测试的设计。 以上输入的测试用例与预期结果截图将该订单的种种路径考虑的情况都包括在内,实现需要的功能是没问题的。 这次程序结构不是很复杂,主要就是文件操作,之后也会找些更复杂的程序进行测试,更难的问题还在后面,自己也会努力的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 实验