图书管理系统项目测试分析.docx
- 文档编号:29246492
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:41
- 大小:30.08KB
图书管理系统项目测试分析.docx
《图书管理系统项目测试分析.docx》由会员分享,可在线阅读,更多相关《图书管理系统项目测试分析.docx(41页珍藏版)》请在冰豆网上搜索。
图书管理系统项目测试分析
文档编号:
HHIT-SECD-ZXR111-02T-08
版本号:
V1.0
图书资料管理系统测试分析说明书
项目名称
图书资料管理系统
项目负责人
陈丽娜
项目开发单位
淮海工学院计算机科学系中新软111班第2项目组
项目组成员
陈丽娜陈加成董昊鑫马翔张鼎祝俊峥
起止时间
2014年11月7日至2014年11月9日
2014年11月9日
软件工程课程设计项目组任务分派单(组长用)
班级:
中新软111组别:
02组长姓名:
陈丽娜时间:
2014年11月9日
项目名称:
图书资料管理系统阶段名称:
测试分析
序号
学号
姓名
任务名称
具体任务内容
完成标准
起止日期
验收成绩
1
陈丽娜
测试概要、测试结果及发现
编写第二节和第三节,整理四个模块的代码,界面以及测试结果
汇总各组员设计结果
11/7-11/9
90
2
陈加成
对软件功能的结论、分析摘要
编写第六节、第七节对软件功能的结论、分析摘要
完成相应报告部分
11/7-11/9
70
3
董昊鑫
引言
编写第一节引言部分
完成相应报告部分
11/7-11/9
70
4
马翔
集成测试、在综合测试
编写第四节和第五节的测试分析
完成相应报告部分
11/7-11/9
90
5
张鼎
测试资源消耗
编写第八节测试资源消耗
完成相应报告部分
11/7-11/9
60
6
祝俊峥
(请假)
未完成相关任务
完成相应报告部分
11/7-11/9
0
1、本表由组长为其组员每次上机实践分派任务使用,应认真填写相关任务名称、内容、完成标准等信息;
2、本表在每次任务完成后,由组长按照完成标准验收,并给出每个组员成绩评定(每人平均70分制),除组长保留一份外,应及时上报任课老师(电子和纸质文档同时上报)。
1.引言【董昊鑫】
1.1编写目的
确定测试的策略、范围和方法;
使项目测试工作的所有参与人员(客户方参与人员、测试管理者、测试人员)对本项目测试的目标、范围、策略、方法、组织、资源等有一个清晰的认识;
使项目测试工作的所有参与人员理解测试控制过程;
从策略角度说明本项目测试的组织和管理,指导测试进展,并作为项目测试工作实施的依据;
预期读者为软件开发人员。
1.2背景
项目名称:
图书资料管理信息系统
项目版本:
V1.0
项目提出方:
淮海工学院图书馆
项目开发方:
陈丽娜陈加成董昊鑫马翔张鼎祝俊峥
项目使用方:
淮海工学院图书馆
图书资料管理系统是图书馆管理工作中不可缺少的部分,对于图书馆的管理者和使用者来说都是非常重要的,在以往,人们使用传统的手工方式或性能较低的图书管理系统管理图书馆的日常事务,操作流程比较繁琐,效率相当低。
同时随着图书馆规模的不断扩大,图书数量的不断增加,有关图书的各种信息也在成倍的增。
面对如此庞大的信息量,一个成功的图书资料管理系统可以提供快速的图书信息检索功能、快捷的图书借阅、归还功能以及图书损坏处理功能,为管理者与读者提供充足的信息和快捷的数据处理手段,从而实现图书信息管理的系统化、规范化和自动化,达到图书资料集中、统一管理的目标。
1.3定义
Oracle11g:
系统服务器所使用的数据库管理系统。
PL/SQL:
一种用于访问查询数据库的语言
事务流:
数据进入模块后可能有多种路径进行处理。
主键:
数据库表中的关键域。
值互不相同。
外部主键:
数据库表中与其他表主键关联的域。
1.4参考资料
王先国等.软件工程实践教程.北京:
电子工业出版社,2010
李龙澎.软件工程课程设计.北京:
机械工业出版社,2010
张海藩.软件工程导论.北京:
清华大学出版社,2008
《图书管理信息系统面向对象需求分析与设计规格说明书》
2.测试概要【马翔】
测试模块,测试内容及差别与原因如表8-1所示:
测试模块
测试内容
结果与测试计划差别
原因
登录模块测试
在使用有效数据时可以进入相应主界面;
在使用无效数据时显示相应错误消息或警告消息
无差别
书籍信息管理模块测试
在使用有效数据时可以进行正确的增删改查操作;
在使用无效数据时显示相应错误消息或警告消息。
无差别
图书借阅信息管理模块测试
在使用有效数据时将图书信息搜索出来进行确认借阅操作;
在使用无效数据时显示相应错误消息或警告消息。
无差别
图书报损管理模块测试
在使用有效数据时将图书借阅信息搜索出来进行确认归还操作;
在使用无效数据时显示相应错误消息或警告消息。
无差别
用户界面测试
通过浏览测试对象可正确反映系统的功能和需求,这种浏览包括窗口与窗口之间、字段与字段之间的浏览,已经各种访问方法(鼠标移动和快捷键)的使用;
通过浏览测试对象可正确反映系统的功能和需求,这种浏览包括窗口与窗口之间、字段与字段之间的浏览,已经各种访问方法(鼠标移动和快捷键)的使用。
无差别
性能测试
通过修改脚本增加每项事务的迭代次数,并在一台计算机上运行(以单个用户、单个事务为基准),并在多台虚拟客户机上重复。
无差别
负载测试(运行时间)
核实所指定的业务在不同的工作量条件下的性能行为时间。
无差别
表8-1测试模块、测试内容及差别与原因
3.测试结果及发现【陈丽娜】
3.1测试1(用户登录模块)
3.3.1软件界面
系统的登录界面如8-1图所示:
图8-1系统登录界面
3.1.2测试代码
#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,user.username))
printf("该用户名不存在!
\n");
else
break;
}
printf("请输入密码:
\n");
while(scanf("%s",&userpa)&&i)
{
if(!
strcmp(userpa,user.userpass))
{
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管理员密码错误如
3.2测试2(图书信息管理模块)
3.2.1软件界面
添加图书界面如图8-8所示
图8-8添加图书界面
删除图书界面如图8-9所示
图8-9删除图书界面
修改图书信息界面如图8-10所示
图8-10修改图书信息界面
查询图书界面如图8-11所示
图8-11查询图书界面
3.2.2测试代码
添加图书信息代码
BookaddBook()
{
Bookbook;
printf("请根据提示输入图书的信息:
\n");
part1:
printf("\t图书ID:
");
scanf("%s",&book.book_id);
if(strcmp(book.book_id,id1)<=0)
{
printf("图书编号应为正,请重新输入");
gotopart1;
}
printf("\t图书名称:
");
scanf("%s",&book.bookname);
printf("\t作者:
");
scanf("%s",&book.author);
part2:
printf("\t价格:
");
scanf("%s",&book.price);
if(strcmp(book.price,price1)<=0)
{
printf("价格应为正,请重新输入");
gotopart2;
}
printf("\t状态:
");
scanf("%s",&book.state);
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(book.bookname,name);
printf("修改图书名成功!
\n");
break;
case2:
printf("请输入新的作者:
");
scanf("%s",&auth);
strcpy(book.author,auth);
printf("修改作者成功!
\n");
break;
case3:
printf("请输入新的价格:
");
part4:
scanf("%s",&pric);
if(strcmp(pric,price1)<=0)
{
printf("价格应为正,请重新输入");
gotopart4;
}
strcpy(book.price,pric);
printf("修改价格成功!
\n");
break;
case4:
printf("请输入新的状态:
");
scanf("%s",&stat);
strcpy(book.state,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);//清空输入缓存 if(getchar()=='n') flag=false; } system("cls"); gotostart; break; case2: part5: printf("请输入要查找的图书ID: "); scanf("%s",&id); if(strcmp(id,id1)<=0) { printf("图书编号应为正,请重新输入"); gotopart5; } Bookbo=searchBookByID(book,bookCount,id); system("pause"); system("cls"); gotostart; break; case3: part6: printf("请输入要修改的图书ID: "); scanf("%s",&id2); if(strcmp(id2,id1)<=0) { printf("图书编号应为正,请重新输入"); gotopart6; } Bookbok=searchBookByID(book,bookCount,id2); modifyBook(bok); system("pause"); system("cls"); gotostart; break; case4: part7: printf("请输入要删除的图书ID: "); scanf("%s",&id3); if(strcmp(id3,id1)<=0) { printf("图书编号应为正,请重新输入"); gotopart7; } Bookboo=searchBookByID1(book,bookCount,id3); deleteBook(boo); system("pause"); system("cls"); gotostart; break; } return0; 3.2.3运行结果 未查找到该图书编号如图8-12所示 图8-12未查找到该图书编号 查找到该图书如图8-13所示 图8-13查找到该图书 修改图书名成功如图8-14所示 图8-14修改图书名成功 3.3测试3(图书借阅信息管理模块) 3.3.1软件界面 图书借阅管理模块主界面如图8-15所示: 图8-15图书借阅信息管理主界面 图书借阅界面如图8-16所示 图8-16图书借阅模块 图书归还界面如图8-17所示: 图8-17图书归还模块 图书续借模块如图8-18所示 图8-18图书续借模块 3.3.2测试代码 #include #include #include intrecordCount=0; classRecord { public: intrecord_id; charbookname[25]; chardebit[25]; chartime[25]; }; RecordaddRecord() { Recordrecord; printf("请根据提示输入借书记录相关的信息: \n"); printf("\t记录编号: "); scanf("%d",&record.record_id); printf("\t图书名称: "); scanf("%s",&record.bookname); printf("\t借书人: "); scanf("%s",&record.debit); printf("\t借书时间: "); scanf("%s",&record.time); returnrecord; } Recordrecord[30]; voidsearchRecordById(Recordrecord[],intlen,intid) { boolflag=true; for(inti=0;i { if(record[i].record_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);//清空输入缓存 if(getchar()=='n') flag=false; } system("cls"); gotostart; break; case2: printf("请输入要查找的记录ID: "); scanf("%d",&id); searchRecordById(record,recordCount,id); system("pause"); system("cls"); gotostart; break; case3: printf("请输入要删除的记录ID: "); scanf("%d",&id1); deleteR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 项目 测试 分析