图书管理系统项目测试分析.docx
《图书管理系统项目测试分析.docx》由会员分享,可在线阅读,更多相关《图书管理系统项目测试分析.docx(40页珍藏版)》请在冰豆网上搜索。
![图书管理系统项目测试分析.docx](https://file1.bdocx.com/fileroot1/2022-11/28/b2f6f328-4322-4199-8dde-d87a5082079c/b2f6f328-4322-4199-8dde-d87a5082079c1.gif)
图书管理系统项目测试分析
文档编制序号:
[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]
图书管理系统项目测试分析
文档编号:
HHIT-SECD-ZXR111-02T-08
版本号:
图书资料管理系统测试分析说明书
项目名称
图书资料管理系统
项目负责人
陈丽娜
项目开发单位
淮海工学院计算机科学系中新软111班第2项目组
项目组成员
陈丽娜陈加成董昊鑫马翔张鼎祝俊峥
起止时间
2014年11月7日至2014年11月9日
2014年11月9日
软件工程课程设计项目组任务分派单(组长用)
班级:
中新软111组别:
02组长姓名:
陈丽娜时间:
2014年11月9日
项目名称:
图书资料管理系统阶段名称:
测试分析
序号
学号
姓名
任务名称
具体任务内容
完成标准
起止日期
验收成绩
1
60
陈丽娜
测试概要、测试结果及发现
编写第二节和第三节,整理四个模块的代码,界面以及测试结果
汇总各组员设计结果
11/7-11/9
90
2
59
陈加成
对软件功能的结论、分析摘要
编写第六节、第七节对软件功能的结论、分析摘要
完成相应报告部分
11/7-11/9
70
3
63
董昊鑫
引言
编写第一节引言部分
完成相应报告部分
11/7-11/9
70
4
78
马翔
集成测试、在综合测试
编写第四节和第五节的测试分析
完成相应报告部分
11/7-11/9
90
5
97
张鼎
测试资源消耗
编写第八节测试资源消耗
完成相应报告部分
11/7-11/9
60
6
07
祝俊峥
(请假)
未完成相关任务
完成相应报告部分
11/7-11/9
0
1、本表由组长为其组员每次上机实践分派任务使用,应认真填写相关任务名称、内容、完成标准等信息;
2、本表在每次任务完成后,由组长按照完成标准验收,并给出每个组员成绩评定(每人平均70分制),除组长保留一份外,应及时上报任课老师(电子和纸质文档同时上报)。
1.引言【董昊鑫】
编写目的
确定测试的策略、范围和方法;
使项目测试工作的所有参与人员(客户方参与人员、测试管理者、测试人员)对本项目测试的目标、范围、策略、方法、组织、资源等有一个清晰的认识;
使项目测试工作的所有参与人员理解测试控制过程;
从策略角度说明本项目测试的组织和管理,指导测试进展,并作为项目测试工作实施的依据;
预期读者为软件开发人员。
背景
项目名称:
图书资料管理信息系统
项目版本:
项目提出方:
淮海工学院图书馆
项目开发方:
陈丽娜陈加成董昊鑫马翔张鼎祝俊峥
项目使用方:
淮海工学院图书馆
图书资料管理系统是图书馆管理工作中不可缺少的部分,对于图书馆的管理者和使用者来说都是非常重要的,在以往,人们使用传统的手工方式或性能较低的图书管理系统管理图书馆的日常事务,操作流程比较繁琐,效率相当低。
同时随着图书馆规模的不断扩大,图书数量的不断增加,有关图书的各种信息也在成倍的增。
面对如此庞大的信息量,一个成功的图书资料管理系统可以提供快速的图书信息检索功能、快捷的图书借阅、归还功能以及图书损坏处理功能,为管理者与读者提供充足的信息和快捷的数据处理手段,从而实现图书信息管理的系统化、规范化和自动化,达到图书资料集中、统一管理的目标。
定义
Oracle11g:
系统服务器所使用的数据库管理系统。
PL/SQL:
一种用于访问查询数据库的语言
事务流:
数据进入模块后可能有多种路径进行处理。
主键:
数据库表中的关键域。
值互不相同。
外部主键:
数据库表中与其他表主键关联的域。
参考资料
王先国等.软件工程实践教程.北京:
电子工业出版社,2010
李龙澎.软件工程课程设计.北京:
机械工业出版社,2010
张海藩.软件工程导论.北京:
清华大学出版社,2008
《图书管理信息系统面向对象需求分析与设计规格说明书》
2.测试概要【马翔】
测试模块,测试内容及差别与原因如表8-1所示:
测试模块
测试内容
结果与测试计划差别
原因
登录模块测试
在使用有效数据时可以进入相应主界面;
在使用无效数据时显示相应错误消息或警告消息
无差别
书籍信息管理模块测试
在使用有效数据时可以进行正确的增删改查操作;
在使用无效数据时显示相应错误消息或警告消息。
无差别
图书借阅信息管理模块测试
在使用有效数据时将图书信息搜索出来进行确认借阅操作;
在使用无效数据时显示相应错误消息或警告消息。
无差别
图书报损管理模块测试
在使用有效数据时将图书借阅信息搜索出来进行确认归还操作;
在使用无效数据时显示相应错误消息或警告消息。
无差别
用户界面测试
通过浏览测试对象可正确反映系统的功能和需求,这种浏览包括窗口与窗口之间、字段与字段之间的浏览,已经各种访问方法(鼠标移动和快捷键)的使用;
通过浏览测试对象可正确反映系统的功能和需求,这种浏览包括窗口与窗口之间、字段与字段之间的浏览,已经各种访问方法(鼠标移动和快捷键)的使用。
无差别
性能测试
通过修改脚本增加每项事务的迭代次数,并在一台计算机上运行(以单个用户、单个事务为基准),并在多台虚拟客户机上重复。
无差别
负载测试(运行时间)
核实所指定的业务在不同的工作量条件下的性能行为时间。
无差别
表8-1测试模块、测试内容及差别与原因
3.测试结果及发现【陈丽娜】
测试1(用户登录模块)
软件界面
系统的登录界面如8-1图所示:
图8-1系统登录界面
测试代码
#include<>
#include<>
#include<>
classUser
{
public:
intuser_id;
charusername[20];
charuserpass[20];
chartype[2];
User(charname[],charpass[])
{
strcpy(username,name);
strcpy(userpass,pass);
}
};
voidlogin(Useruser)
{
inti=2;
boolflag=true;
charuserna[20],userpa[20];
printf("请输入用户名:
\n");
while(scanf("%s",&userna))
{
if(strcmp(userna,)
printf("该用户名不存在!
\n");
else
break;
}
printf("请输入密码:
\n");
while(scanf("%s",&userpa)&&i)
{
if(!
strcmp(userpa,)
{
printf("登陆成功!
\n");
break;
}
else
{
i--;
printf("密码错误!
还有%d次机会\n",i+1);
}
}
}
voidmenu()
{
printf("\t\t用户登陆模块\n");
printf("\t====================\n");
printf("\t\t1.普通用户\n");
printf("\t\t2.管理员\n");
printf("\t====================\n");
}
intmain()
{
Useraduser("admin","admin");
Usercouser("user","123");
start:
menu();
intchoice;
printf("请输入你的用户类型:
");
scanf("%d",&choice);
switch(choice)
{
case1:
login(couser);
system("pause");
system("cls");
gotostart;
break;
case2:
login(aduser);
system("pause");
system("cls");
gotostart;
break;
}
return0;
}
用户登录测试:
普通用户登录成功如图8-2所示:
图8-2普通用户登录成功
普通用户用户名错误如图8-3所示:
图8-3普通用户用户名错误如图
普通用户密码错误如图8-4所示:
图8-4普通用户密码错误如
管理员登录成功如图8-5所示:
图8-5管理员登录成功
管理员用户名错误如图8-6所示:
图8-6管理员用户名错误
管理员密码错误如图8-7所示:
图8-7管理员密码错误如
测试2(图书信息管理模块)
软件界面
添加图书界面如图8-8所示
图8-8添加图书界面
删除图书界面如图8-9所示
图8-9删除图书界面
修改图书信息界面如图8-10所示
图8-10修改图书信息界面
查询图书界面如图8-11所示
图8-11查询图书界面
测试代码
添加图书信息代码
BookaddBook()
{
Bookbook;
printf("请根据提示输入图书的信息:
\n");
part1:
printf("\t图书ID:
");
scanf("%s",&;
if(strcmp,id1)<=0)
{
printf("图书编号应为正,请重新输入");
gotopart1;
}
printf("\t图书名称:
");
scanf("%s",&;
printf("\t作者:
");
scanf("%s",&;
part2:
printf("\t价格:
");
scanf("%s",&;
if(strcmp,price1)<=0)
{
printf("价格应为正,请重新输入");
gotopart2;
}
printf("\t状态:
");
scanf("%s",&;
returnbook;
}
修改图书信息代码
voidmodifyBook(Bookbook)
{
intchoice;
charname[25],auth[25],pric[25],stat[5];
printf("选择要修改的选项:
\n");
printf("\t1.图书名\t2.作者\t3.价格\t4.状态\n");
part3:
printf("请选择:
");
scanf("%d",&choice);
if(choice<1||choice>4){
printf("选项为1-4之间数字!
");
gotopart3;
}
switch(choice)
{
case1:
printf("请输入新的图书名:
");
scanf("%s",&name);
strcpy,name);
printf("修改图书名成功!
\n");
break;
case2:
printf("请输入新的作者:
");
scanf("%s",&auth);
strcpy,auth);
printf("修改作者成功!
\n");
break;
case3:
printf("请输入新的价格:
");
part4:
scanf("%s",&pric);
if(strcmp(pric,price1)<=0)
{
printf("价格应为正,请重新输入");
gotopart4;
}
strcpy,pric);
printf("修改价格成功!
\n");
break;
case4:
printf("请输入新的状态:
");
scanf("%s",&stat);
strcpy,stat);
printf("修改状态成功!
\n");
break;
}
}
查找图书信息代码
BooksearchBookByID(Bookbook[],intlen,charid[])
{
Bookbook1;
boolflag=true;
for(inti=0;i{
if(!
strcmp(book[i].book_id,id))
{
printf("查询的结果为:
\n");
printBook(book[i]);
book1=book[i];
flag=false;
}
}
if(flag)
{
printf("该图书未找到!
\n");
}
returnbook1;
}
BooksearchBookByID1(Bookbook[],intlen,charid[])
{
Bookbook1;
boolflag=true;
for(inti=0;i{
if(!
strcmp(book[i].book_id,id))
{
printf("图书信息已删除!
\n");
book1=book[i];
flag=false;
}
}
if(flag)
{
printf("该图书未找到!
\n");
}
returnbook1;
}
主界面代码
voidmenu()
{
printf("\t\t图书管理模块\n");
printf("\t\t==================\n");
printf("\t\t1.添加图书\n");
printf("\t\t2.查找图书\n");
printf("\t\t3.修改图书信息\n");
printf("\t\t4.删除图书信息\n");
}
intmain()
{
start:
menu();
intchoice;
boolflag=true;
charid[10],id2[10],id3[10];
printf("请输入你的选择:
");
scanf("%d",&choice);
if(choice<1||choice>4){
printf("选项为1-4之间数字!
\n");
gotostart;
}
switch(choice)
{
case1:
while(flag)
{
book[bookCount++]=addBook();
printf("是否还要继续输入输入y继续,输入n返回主菜单..");
fflush(stdin);
ecord_id==id)
{
printf("查询的结果为:
\n");
printf("\t记录ID\t图书名称\t借书人\t借阅时间\n");
printf("\t%d\t%s\t%s\t%s\n",record[i].record_id,record[i].bookname,record[i].debit,record[i].time);
flag=false;
}
if(flag)
printf("该记录未找到!
\n");
}
}
voiddeleteRecordById(Recordrecord[],intlen,intid)
{
boolflag=true;
for(inti=0;i{
if(record[i].record_id==id)
{
record[i].record_id=0;
strcpy(record[i].bookname,"");
strcpy(record[i].debit,"");
strcpy(record[i].time,"");
flag=false;
}
if(flag)
printf("该记录未找到!
\n");
else
printf("记录删除成功!
\n");
}
}
voidmenu()
{
printf("\t\t图书借阅信息管理模块\n");
printf("\t=============================\n");
printf("\t\t1.添加借阅记录\n");
printf("\t\t2.查找借阅记录\n");
printf("\t\t3.删除借阅记录\n");
printf("\t=============================\n");
}
intmain()
{
start:
menu();
intchoice;
boolflag=true;
intid,id1;
printf("请输入你的选择:
");
scanf("%d",&choice);
switch(choice)
{
case1:
while(flag)
{
record[recordCount++]=addRecord();
printf("是否还要继续输入输入y继续,输入n返回主菜单..");
fflush(stdin);
ook_id==id)
{
printf("查询的结果为:
\n");
printBook(book[i]);
flag=false;
}
}
if(flag)
{
printf("该图书未找到!
\n");
}
}
voidmenu()
{
printf("\t\t图书报损模块\n");
printf("\t====================\n");
printf("\t\t1.添加报损图书\n");
printf("\t\t2.查找报损图书\n");
printf("\t====================\n");
}
intmain()
{
start:
menu();
intchoice;
boolflag=true;
intid;
printf("请输入你的选择:
");
scanf("%d",&choice);
switch(choice)
{
case1:
while(flag)
{
dabook[bookCount++]=addDamageBook();
printf("是否还要继续输入输入y继续,输入n返回主菜单..");
fflush(stdin);
成测试结果及发现【马翔】
集成测试
用户信息管理系统模块分为用户信息添加子系统、用户信息修改子系统、用户信息删除子系统和用户信息查询子系统,在测试计划阶段,主要针对上述所有子系统进行设计测试用例,下面开始对员工信息管理系统模块进行集成测试。
源代码
测试
1)测试用例1
a.输入:
i=1
b.预期输出:
请根据提示输入图书的信息
c.测试输出:
如图8-29所示
图8-29
d.结论:
预期输出与测试输出一致。
2)测试用例2
a.输入:
i=2
b.预期输出:
请输入要查找的图书ID:
c.测试输出:
如图8-30所示
图8-30
d.结论:
预期输出与测试输出一致。
3)测试用例3
a.输入:
i=3
b.预期输出:
请输入要修改的图书ID:
c.测试输出:
如图8-31所示
图8-31
d.结论:
预期输出与测试输出一致。
4)测试用例4
a.输入:
i=4
b.预期输出:
请输入要删除的图书ID:
c.测试输出:
如图8-32所示
图8-32
d.结论:
预期输出与测试输出一致。
5.综合测试结果及发现【马翔】
综合测试
综合测试主要测试系统的功能,这里主要测试图书管理系统的功能,利用黑盒测试中的等价划分方法,并利用测试计划阶段设计的测试用例进行综合测试。
源代码
#include<>
#include<>
#include<>
intbookCount=0;
charid1[10]="0";
charprice1[25]="0";
classBook
{
public:
charbook_id[10];
charbookname[25];
charauthor[25];
charprice[25];
charstate[5];
};
Bookbook[35];
voidprintBook(Bookbook)
{
printf("该图书的信息为:
\n");
printf("图书id\t图书名\t作者\t价格\t状态\n");
printf("%s\t%s\t%s\t%s\t%s\n",,,,,;
}
BookaddBook()
{
Bookbook;
printf("请根据提示输入图书的信息:
\n");
part1:
printf("\t图书ID:
");
scanf("%s",&;
if(strcmp,id1)<=0)
{
printf("图书编号应为正,请重新输入");
gotopart1;
}
printf("\t图书名称:
");
scanf("%s",&;
printf("\t作者:
");
scanf("%s",&;
part2:
printf("\t价格:
");
scanf("%s",&;
if(strcmp,price1)<=0)
{
printf("价格应为正,请重新输入");
gotopart2;
}
printf("\t状态:
");
scanf("%s",&;
returnbook;
}
voidmodifyBook(Bookbook)
{
intchoice;
charname[25],auth[25],pric[25],stat[5];
printf("选择要修改的选项:
\n");
printf("\t1.图书名\t2.作者\t3.价格\t4.状态\n");
part3:
printf("请选择:
");
scanf("%d",&choice);
if(choice<1||choice>4){
printf("选项为1-4之间数字!
");
gotopart3;
}
switch(choice)
{
case1: