课程设计(大作业)报告
课程名称: 软件质量保证与测试
设计题目: 图书管理系统测试
院 系: 信息技术学院
班 级: 09级计算机科学与技术本(2)班
设 计 者: 寸**
学 号: 200****42
指导教师: 文 瑾
设计时间: 20xx年1月5日
昆明学院课程设计(大作业)任务书
姓 名:寸得艳 院(系):信息技术学院
专 业:计算机科学与技术 学 号:200****42
任务起止日期:20xx年1月4日—20xx年1月6日
课程设计题目:图书管理系统测试
课程设计要求:
1、 掌握软件测试的基本步骤和方法;
2、根据课题的要求进行上机实验调试;
3、基本掌握实际软件工程中与软件测试有关的相关文档的编制;
4、严格按时间要求进行课程设计,不迟到、不缺席、不早退。
工作计划及安排:
2012年12月31日:8:30~12:00 布置任务
2012年12月31日:14:30~16:00 查资料,选项目
20xx年1月4日-20xx年1月5日: 测试、排除故障
20xx年1月6日:8:30~12:00 书写设计报告
20xx年1月6日:14:30~16:00 验收、考核
指导教师签字
年 月 日
课程设计(大作业)成绩
学号:2009****2 姓名:寸** 指导教师:文*
课程设计题目:图书管理系统测试
总结:
经过对图书馆管理系统的测试,在登录功能上面,测试结果在用户名的合法性有达到要求,由于用户账户在根据设定的过程中是在数据库中不能轻易更改,所以在数据库中留有三个用户帐户。从总体上,系统实现功能需求分析里面中注册,登录系统和查询系统等的基本功能。
在这次课程设计的训练中,我遇到了许多的困难,出现了许多的错误,但通过同学的帮助,我逐渐改正了错误,一步一步的完善程序。在此过程中同学的意见给了我很大的启发,让我更加深入的思考程序,解决程序中出现的逻辑错误,用户使用起来会更加方便。
通过这次学习,让我明白编写程序的涵义它不是我们自己试着玩的东西而序变得更完善全面,用户使用起来会更加方便。是应该提供给别人,让别人能正确运行的。我们设计的应该是可以供他人使用的,所以在设计时要考虑全面要给足提示信息让人能够明白。其次,在这次训练中我的程序测试能力有所提升。让我能够对程序中的定义正确使用及使用数组熟练的使用文件存储,还有循环嵌套等应用虽然以前也曾用到过但是没能让我真正的使用会,通过这次编程不仅丰富了我的课内知识同时也是我的程序编写更加的熟练、简便。提升了我的整体水平。总体来说,受益匪浅。
指导教师评语:
成绩:
填表时间: 指导教师签名:
课程设计(大作业)报告
一、 引言
1.1背景
随着现代科学技术的进步,人类社会正逐渐走向信息化,图书馆拥有丰富的文献信息资源,是社会系统的重要组成部分,在信息社会中作用愈来愈重要,我国图书馆计算机等信息技术的应用起步于20世纪70年代末期,随着改革开放的步伐得迅速发展,特别是90年代以后,我国图书馆信息网络建设取得了较大发展图书馆信息化建设迈向了一个新台阶。
大三我们的软件工程课程设计要求应用软件工程的方法对我们的项目进行详细的需求分析、概要设计、详细设计以及进行必要的测试,旨在让程序能够实现读者管理功能、采编管理功能、流通管理功能、统计管理功能和查询管理功能。在此基础上让程序能够实现图书管理的自动化,帮助广大师生更好的管理和使用图书,提高图书在信息时代的作用。为使图书管理工作科学化、规范化,就必须采用计算机辅助管理,从而减少人力的投入,由系统对入库图书进行自动分类、归类,学生信息整理、借阅情况登记入档,提高信息处理的精度和准确度。
1.2 编写目的
根据测试计划报告,对软件进行测试,详细记录测试过程,以对软件的质量进行评价,为软件设计人员提供BUG依据,故做产生测试分析报告。
1.3 定义
ASP:是一种未经编译的开放性的应用软件,利用HTML和ActiveX强有力的功能创建强壮的,功能强大的,与平台无关的Web应用系统
二、测试计划
2.1 系统说明
(1)功能模块:读者管理、流通管理、统计管理、查询管理。
(2)读者管理功能主要是读者基本信息;
(3)流通管理功能包括借书管理、还书管理、图书预约和图书状态管理;
(4)统计管理功能包括各类书籍的馆藏统计和已出借书籍统计和为出借书籍统计;
(5)查询管理功能包括读者信息查询和图书信息查询等。
2.2 测试策略
测试策略包括用户界面测试、软件功能测试、软件可靠性测试。
用户界面测试:通过和用户交互如输入相应信息(包括正确信息和错误信息)来测试输出信息的正确性。
软件功能测试:对照用户需求来测试本系统的功能是否完全符合用户需求。
软件可靠性测试:通过模拟图书馆的实际功能在不同的配置环境下来对本系统进行功能可靠性测试,查看是否能够正常完成图书馆管理系统的各项功能。
用户界面
软件功能测试
软件安全可靠性
三、测试方案
3.1 测试方法
系统测试是将经过集成测试后的软件,作为计算机系统的一个部分,与计算机硬某些支持软件、数据和人员等系统元素结合起来,在实际运行环境下对计算机系统进行一系列的严格有效的测试来体现软件的潜在问题,保证系统的运行。
系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。这里所谓的系统不仅仅包括软件本身,而且还包括计算机硬件及其相关的外围设备、实际运行时大批量数据、非正常操作(如黑客攻击)等。通常意义上的系统测试包括:
(1)压力测试:模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件来测试系统的性能、可靠性、稳定性等。
(2)容量测试:预先分析出反映软件系统应用特征的某项指标的极限值。
(3)性能测试:通过测试确定系统运行时的性能表现,如得到运行速度、响应时间、占有系统资源等方面的系统数据。
(4)安全测试:检查系统对非法入侵的防范能力。系统安全设计的准则是,使非法入侵的代价超过被保护信息的价值。
(5)容错测试:主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新
3.2 程序流程图
四、测试过程
4.1 测试项目名称及测试内容
测试1
名称:系统操作登陆注册用户测试
目的: 测试系统操作界面。
内容: 账号口令输入、合理性检查、合法性检查,系统操作界面显示控制
测试2
名称:图书信息管理界面测试
目的: 测试图书管理系统操作功能。
内容:图书管理界面显示控制。
4.2 测试工具
五、测试结果
5.1 注册测试结果
(1)输入用户名:123456,密码:123,测试结果如图:
(2)输入用户名:fad1,密码:456,测试结果如下:
(3)输入用户名:73469,密码:1563,测试结果如下:
5.2 登录测试结果
(1)输入用户名:fad1,密码:123,测试结果如下:
(2)输入用户名:189,测试结果如下:
(3)输入已经注册的用户名:123456,密码:123,测试结果如下:
5.3 退出系统测试结果
5.4能力
六、分析
6.1 缺陷和限制
一个更完美的图书管理系统,应提供更为便捷与强大的信息查询功能,如相应的网络操作及服务,由于开发时间和计算机数目有限,该系统并未提供这一功能,对信息的保护,手段仅限于设置用户级别,以及提供数据文件的备份,比较简单,不能防止恶意的破坏,安全性能有待进一步完善。
6.2 评价
本软件到达预定目标,可以交付使用。
6.3测试资源消耗
(1)系统运行环境:Windows XP系统
(2)系统开发平台: Microsoft Visual C++ 6.0
(3)数据库管理系统软件: Microsoft SQL Server 2005
(4)系统测试用时:一天
七、参考资料
【1】《软件工程导论》(第五版),张海藩编著,清华大学出版社,2008年2月第5版
【2】软件测试与Junit实践,王东刚编著,人民邮电出版社
【3】人事管理系统项目开发计划,软件开发小组
【4】用户操作手册(初稿),软件开发小组
【5】软件工程导论----第四版张海藩编著,清华大学出版社
八、附录
#include <iostream>
#include <string.h>
#include <string>
#include <fstream>
using namespace std;
void add_zhuce() //实现注册用户
{
string name,code,code1;
fstream outfile5("D:\\dd.txt",ios::out|ios::app); //以写方式打开文件
if(! outfile5)
cout<<"打开文件失败!"<<endl;
else
{
cout<<"请注册用户\n";
cout<<"请输入您的用户名:";
cin>>name;
fstream infile6("D:\\dd.txt",ios::in); //以读方式打开文件
if(! infile6)
{
cout<<"打开文件失败!"<<endl;
return;
}
string a[100][2]; //定义一个string类型的二维数组,用来保存从文本内读取的信息
int line=0;
memset(a,0,sizeof(a)); //将数组清空
while(!infile6.eof()) //文件不为空的条件设置
{
infile6>>a[line][0]>>a[line][1]; //文件流读取数据
line++;
}
for(int i=0;i<line;i++)
{
if(a[i][0]==name)
{
cout<<"此用户已存在!谢谢使用本系统注册用户界面!欢迎下次使用!"<<endl;
exit(0);
}
}
outfile5<<name<<" ";
cout<<"请输入您的密码:";
cin>>code;
cout<<"请再次输入您的密码:";
cin>>code1;
if(code!=code1)
{
cout<<"您两次输入的密码不一致!谢谢使用本系统注册用户界面!欢迎下次使用!"<<endl;
exit(0);
}
else
outfile5<<code1<<endl;
}
cout<<"谢谢使用本系统注册用户界面!您已注册成功!"<<endl;
outfile5.close();
}
void welcome() //验证用户登陆,登陆成功显示欢迎信息
{
string name,code;
int mark=0;
fstream infile("D:\\dd.txt",ios::in);
if(!infile)
{
cerr<<"打开文件错误"<<endl;
return;
}
int line=0;
string a[100][100];
memset(a,0,sizeof(a)); //将数组清空
while(!infile.eof()) //文件不为空的条件设置
{
infile>>a[line][0]>>a[line][1]; //文件流读取数据
line++;
}
cout<<"用户名:";
cin>>name;
int m=-1;
for(int i=0;i<line;i++)
{
if(a[i][0]==name)
{
m=i;
mark=i;
break;
}
}
if(m==-1)
{
cout<<"该用户不存在,请注册用户"<<endl;
add_zhuce();
}
cout<<"密码:";
cin>>code;
for(int j=0;j<2;j++)
{
if(a[mark][1]==code)
{
cout<<"成功登入"<<endl;
break;
}
else
{
cout<<"密码错误,请重新输入"<<endl;
cout<<"密码:";
cin>>code;
}
}
}
void Readerinfo()
{
int b;
cout<<endl;
cout<<endl;
cout<<" --读者信息管理--"<<endl;
cout<<"\n";
cout<<" --------------------\n";
cout<<" - -\n";
cout<<" - 1. 添加读者信息 -\n";
cout<<" - 2. 修改读者信息 -\n";
cout<<" - 3. 删除读者信息 -\n";
cout<<" -0 . 退出 -\n";
cout<<" - -\n";
cout<<"\ --------------------\n";
cout<<"请输入您选择的数字<0-3>:";
cin>>b;
switch(b)
{
case 1: break;
case 2: break;
case 3: break;
case 0: break;
default: cout<<"输入数字错误!"<<endl;
}
}
void Bookinfo()
{
int a;
cout<<endl;
cout<<endl;
cout<<" --图书信息管理--"<<endl;
cout<<"\n";
cout<<" ----------------------\n";
cout<<" - -\n";
cout<<" - 1. 删除图书信息 -\n";
cout<<" - 2. 增加图书信息 -\n";
cout<<" - 3. 修改图书信息 -\n";
cout<<" - 4. 查询图书信息 -\n";
cout<<" - 0. 退出 -\n";
cout<<" - -\n";
cout<<" --------------------- \n";
cout<<"请输入您选择的数字<0-4>:";
cin>>a;
switch(a)
{
case 1:break;
case 2:break;
case 3:break;
case 4:break;
case 0:break;
default: cout<<"输入数字错误!"<<endl;
}
}
void ReadBook()
{
int c;
cout<<endl;
cout<<endl;
cout<<" --图书借阅管理--"<<endl;
cout<<"\n";
cout<<" -------------------\n";
cout<<" - -\n";
cout<<" - 1. 图书借阅 -\n";
cout<<" - 2. 图书归还 -\n";
cout<<" - 0. 退出 -\n";
cout<<" - -\n";
cout<<" -------------------\n";
cout<<"请输入您选择的数字<0-2>:";
cin>>c;
switch(c)
{
case 1: break;
case 2: break;
case 0: break;
default: cout<<"输入数字错误!"<<endl;
}
}
void InfoSum()
{
int c;
cout<<endl;
cout<<endl;
cout<<" --图书信息统计--"<<endl;
cout<<"\n";
cout<<" ------------------------\n";
cout<<" - -\n";
cout<<" - 1. 图书总量统计 -\n";
cout<<" - 2. 按图书类别统计 -\n";
cout<<" - 3. 图书借阅排行 -\n";
cout<<" - 4. 读者借阅排行 -\n";
cout<<" - 0. 退出 -\n";
cout<<" - -\n";
cout<<" ------------------------\n";
cout<<"请输入您选择的数字<0-4>:";
cin>>c;
switch(c)
{
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 0: break;
default: cout<<"输入数字错误!"<<endl;
}
}
void System_maintenance()
{
int c;
cout<<endl;
cout<<endl;
cout<<" --图书信息系统维护--"<<endl;
cout<<"\n";
cout<<" ---------------------\n";
cout<<" - -\n";
cout<<" - 1. 读者类别设置 -\n";
cout<<" - 2. 图书类别设置 -\n";
cout<<" - 3. 用户管理 -\n";
cout<<" - 4. 罚金标准设置 -\n";
cout<<" - 0. 退出 -\n";
cout<<" - -\n";
cout<<" ---------------------\n";
cout<<"请输入您选择的数字<0-4>:";
cin>>c;
switch(c)
{
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 0: break;
default: cout<<"输入数字错误!"<<endl;
}
}
void Please()
{
welcome(); //验证用户登陆,登陆成功显示欢迎信息
int chiose;
cout<<"\n\n";
while(1)
{
cout<<" --欢迎使用图书信息管理系统--"<<endl;
cout<<"\n";
cout<<" ------------------------------------\n";
cout<<" - -\n";
cout<<" - -\n";
cout<<" - 1.读者信息管理 2.图书信息管理 -\n";
cout<<" - 3.图书借阅管理 4.信息统计 -\n";
cout<<" - 5.系统维护 0.退出系统 -\n";
cout<<" - -\n";
cout<<" - -\n";
cout<<" -------------------------------------\n";
cout<<"请输入您选择的数字<0-4>:";
cin>>chiose;
switch(chiose)
{
case 1: Readerinfo(); break;
case 2: Bookinfo(); break;
case 3: ReadBook(); break;
case 4: InfoSum(); break;
case 5: System_maintenance(); break;
case 0: cout<<"\t\t--欢迎下次使用本系统--"<<endl; exit(0);
default: cout<<"输入数字错误!"<<endl;
}
}
}
void main()//主函数
{
//system("color 3F");
int w;
cout<<" -------------------\n";
cout<<" - -\n";
cout<<" - 1.用户登录 -\n";
cout<<" - 2.用户注册 -\n";
cout<<" - 0.退出系统 -\n";
cout<<" - -\n";
cout<<" -------------------\n";
while(1)
{
cout<<"请输入数字<0-2>:";
cin>>w;
switch(w)
{
case 1:Please(); break;
case 2:add_zhuce(); break;
case 0:exit(0);
default: cout<<"输入数字错误!"<<endl;
}
}
}