学生学生信息管理系统测试报告.docx
《学生学生信息管理系统测试报告.docx》由会员分享,可在线阅读,更多相关《学生学生信息管理系统测试报告.docx(37页珍藏版)》请在冰豆网上搜索。
学生学生信息管理系统测试报告
【关键字】学生
1.引言
1.1编写目的
本尝试报告为学生信息管理系统项目的尝试报告,目的在于尝试总结以及分析尝试结果,描述系统是否符合需求。
学生信息管理系统是应用于学校学生信息的管理以及维护的软件。
可以方便的管理学生信息,维护以及修改学生信息。
1.2项目背景
随着高校学生数量的增多,信息复杂度增加,十分有必要通过学生信息管理系统来完成学生信息的管理,修改及维护。
开发学生信息管理系统在当今高校是十分有必要的。
1.3用户群
使用于学校。
1.4基本定义
五类尝试错误类型。
A类:
严重错误,包括以下各种错误:
⏹由于程序所引起的死机,非法退出
⏹死循环
⏹因错误操作导致的程序中断
⏹功能错误
⏹数据通讯错误
B类:
较严重错误,包括以下各种错误:
⏹程序错误
⏹程序接口错误
C类:
一般性错误,包括以下各种错误:
⏹操作界面错误(包括数据窗口内列名定义、含义是否一致)
⏹打印内容、格式错误
⏹删除操作未给出提示
⏹与日常生活不符
D类:
较小错误,包括以下各种错误:
⏹界面不规范
⏹辅助说明描述不清楚
⏹错误操作未给用户提示
⏹提示窗口文字未采用行业术语
1.5参考资料
[1]《编程思想》,机械工业出版社,2007
[2]《软件尝试方法和技术(第二版)》,清华大学出版社
2尝试概要
尝试目的:
在于为执行尝试提供用例,指导尝试的实施,查找分析缺陷,评估尝试质量并执行尝试用例后,需要跟踪故障,以确保开发的产品适合需求。
尝试声明:
尝试人员在软件开发过程中的任务:
1、寻找Bug;
2、软件各种属性的组合程度良好;
2、避免软件开发过程中的缺陷;
3、衡量软件的品质;
4、关注用户的需求。
2.1尝试环境
2.1.1软件硬件配置
表2-1配置表
环境
VC++6.0
硬件配置
CPU:
CPU奔腾Ⅲ以上
内存:
512M以上
硬盘:
500G或以上
软件配置
VC++6.0
2.1.1运行界面
运行界面如下:
图2-1系统开始界面
2.2尝试执行
此次尝试严格按项目尝试计划执行,按时完成了尝试计划规定的尝试对象的尝试。
针对尝试计划规定的尝试策略,在尝试执行中都有实现,在尝试执行过程中,依据尝试计划和尝试用例,对系统进行了完整的尝试。
2.3尝试用例
1.增添模块功能尝试:
主要尝试学生信息能否按一定要求与格式正确输入。
流程图及尝试用例:
如下图。
(1)
字段名称
描述
标识符
0001
测试项
add模块
用例:
1.1
2.lee
3.123
4.90
5.13
6.n
7.m
8.19941133
9.1994229
10.19941131
11.1994228
12.anhui
13.bozhou
14.shatu
15.lizhuang
16.123
17.
18.
输入正确选择
输入姓名
输入错误的学号
输入正确的学号
输入错误的年龄
输入错误的性别
输入正确的性别
输入日期超过31天
非闰年二月天数为29天
输入非大月天数为31天
输入正确的日期
输入province
输入city
输入county
输入village
输入错误的电话号码
输入正确的电话号码
输入邮箱
测试用例间的关联
2.删除模块功能尝试:
测试能否按学生姓名或者学号正确删除学生信息。
流程图及测试用例:
如下图。
字段名称
描述
标识符
0002
测试项
delete模块
1.2
2.2
3.100001
4.y
5.2
6.2
7.02
8.n
9.2
10.1
11.lucky
12.y
13.2
测试用例间的关联
0001
(2)
3、修改模块功能测试:
测试能否正确的按要求修改学生信息并保存。
流程图及测试用例:
如下图。
字段名称
描述
标识符
0003
测试项
modify模块
用例:
1.3
2.5
3.1
4.lucky
5.lee
6.1
7.Lucky
8.1
9.y
10.y
11.2
12.22
13.02
14.3
15.y
16.3
17.23
18.Y
19.4
20.Y
21.4
22.F
23.Y
24.Y
25.5
26.2048825
27.199333
28.X
29.Y
30.Y
31.6
32.Anhuibozhoushatulizhuang
33.Y
34.Y
35.7
36.
37.Y
38.Y
39.8
40.73126****@
41.Y
42.n
按照修改模块流程图输入
测试用例间的关联
0001
(3)
4、查找功能功能测试:
测试能否按照学生姓名或者学号正确的查找到学生信息。
流程图及测试用例:
如下图。
(4)
字段名称
描述
标识符
0004
测试项
search模块
用例:
4
5
1
Hans
Lee
4
2
5
2
123
01
按照查找模块流程图输入
测试用例间的关联
0001
5、排序模块功能测试:
测试能否根据学生学号正确排序。
测试用例:
如下图。
6、其他功能及缺陷测试:
显示功能以及菜单显示功能还有系统退出功能。
有的模块并不能很好的处理好用户随意格式的输入,并不能很好的友好显示错误。
如增添模块的用例所示,程序陷入死循环。
2.4.1功能性
A.可以合理增添查询学生信息。
B.可以删除学生信息。
C.可以合理修改学生信息。
D.可以查询到任意已录入学生信息。
E.可以对已录入学生进行排序。
F.可以输出显示学生信息。
2.4.2易用性
程序界面提示友好丰富,可以很好的根据提示完成操作。
2.5单元测试及其测试用例
Add等价类划分
Add等价类划分——name
输入
合理等价类
不合理等价类
姓名
1.合理的名字
2.有数字
3.有特殊字符(除连字符外)
测试用例:
2.123
3.\\\
Add等价类划分——schoolnumber
输入
合理等价类
不合理等价类
学号
1.数字字符
2.有非数字字符
测试用例:
2.asd456456\
Add等价类划分——age
输入
合理等价类
不合理等价类
年龄
1.数字字符
2.有非数字字符
测试用例:
2.asd
Add等价类划分——sex
输入
合理等价类
不合理等价类
性别
1.m或f
2.非m或f的任意字符
测试用例:
2.man
Add等价类划分——brithday
输入
合理等价类
不合理等价类
生日日期
1.6—8位数字字符和2位空格字符
2.有非数字字符
3.少于6位数字字符
4.多于8位数字字符
5.不是2位空格字符
年份范围
6.在1985—2000之间
7.小于1985
8.大于2000
月份范围
9.在1—12之间
10.等于0
11.大于12
日期范围
12.当为闰年2月时在1—29之间
13.当为平年2月时在1—28之间
14.当为1,3,5,7,8,9,12月时在1—31之间
15.当为其他月时在1—30之间
16.等于0
17.当为闰年2月时大于29
18.当为平年2月时大于28
19.当为1,3,5,7,8,9,12月时大于31
20.当为其他月时大于30
测试用例:
2.asdc625
3.2014
4.20
5.2014\6\24
7.1111624
8.3333624
10.201401
11.20141333
16.201410
17.2008231可以检查出错误
18.2013229可以检查出错误
19.2013133可以检查出错误
20.2013433可以检查出错误
Add等价类划分——city
输入
合理等价类
不合理等价类
城市
1.现有的城市名称
2.字符的随意组合
测试用例:
wo
Add等价类划分——county
输入
合理等价类
不合理等价类
国家
1.现有国家名称
2.字符的随意组合
测试用例:
wo
Add等价类划分——village
输入
合理等价类
不合理等价类
城镇
1.现有城镇名称
2.字符的随意组合
测试用例:
wo
Add等价类划分——phonenumber
输入
合理等价类
不合理等价类
手机号
1.以1开头的11位数字字符
2.非数字字符
3.少于11
4.多于11
5.不以1开头
测试用例:
2.aaaaaaaaaaa可以检查出错误
3.aa
4.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5.017可以检查出错误
Add等价类划分——e-mailaddress
输入
合理等价类
不合理等价类
邮箱号
1.符合邮箱地址规则
2.不符合地址规则
测试用例:
123#123#123#
Delete等价类划分
Delet等价类划分——Search
输入
合理等价类
不合理等价类
选择
1.1或2
2.非1或2的其他数字字符
3.其他字符
测试用例:
2.3可以检查出错误
3.a
Delet等价类划分——change
输入
合理等价类
不合理等价类
选择
1.y或n或Y或N
2.其他字符
测试用例:
2.a可以检查出错误
Modify等价类划分
Modify等价类划分——Search
输入
合理等价类
不合理等价类
选择
1.输入1或2
2.非1或2的其他数字字符
3.其他字符
测试用例:
2.3可以检查出错误
3.a
Modify等价类划分——name或number
输入
合理等价类
不合理等价类
选择
1.存入的名字或学号
2.任意的字符
测试用例:
2.123可以检查出错误
Modify等价类划分——option
输入
合理等价类
不合理等价类
选择
1.输入1—8之间的任意数字
2.非1或8的其他数字字符
3.其他字符
测试用例:
2.0可以检查出错误
3.a
2.6集成测试
2.6.1集成测试概要
集成测试定义
此阶段测试基于单元测试的完成。
主要目的检测系统是否达到需求对业务及数据流的处理是否符合标准,检测系统对业务流处理是否存在逻辑不严谨及错误检测需求是否存在不合理的标准及要求。
2.6.2集成测试实现
此阶段将前面的模块测试进行汇总由于大多数测试已经做过,汇总一起就只进行了简单的测试看是否各模块之间有影响。
2.7系统测试
2.7.1系统测试概要
系统测试定义
用于核实用户与软件之间的交互。
系统测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。
主要通过功能测试实现。
与综合测试相同。
3.改进建议
在整个系统测试执行期间,项目组开发人员能够提出的各种缺陷,在一定程度上较好地保证了测试执行的效率以及测试最终期限。
但是在整个软件测试活动中还是暴露了一些问题,如,测试执行时间相对较少,测试通过标准要求较低;细节性错误较多,测试时对管理平台不够熟悉,使用时效率偏低;测试时对系统了解不够透彻,测试执行时存在理解偏差,导致提交无效缺陷。
通小组的协力合作,学生信息管理系统如期完成并达到交付标准。
建议:
需求提出方可以再使用该系统的基础上,继续搜集用户的使用需求反馈,并结合市场同类产品的优势,在今后的版本中不断补充并完善功能。
●在项目开始的时候应该制定编码标准,需求变更标准,开发和测试人员都严格按照标准进行,可以在后期减少因为开发,测试不一致而导致的问题,同时也可以降低沟通成本。
●发布版本的时候,正确布置测试环境,减少因为测试环境出现的无效bug。
●开发人员解决bug的时候,填写bug原因以及解决方式,方便bug的跟踪。
●开发人员在开发版本上发现bug,可以通知测试人员,因为开发人员发现的bug很有可能在测试版本上出现,而测试人员和开发人员的思路不同,有可能测试人员没有发现该bug,而且,这样可以保证发现的bug都能够被跟踪。
4测试结论
存在致命错误系统不合格,需要重新修改某些语句。
下面从各方面说明系统存在的问题:
4.1功能
系统正确的实现了用户对学生信息增、删、改、查和排序的需求,小巧便捷。
4.2易用性
现有系统实现了如下易用性:
1.输入方式可理解性
2.输入限制的正确性
3.操作提示信息正确性,一致性,可理解性
4.输入限制提示信息的正确性,可理解性,一致性
5.学生信息增、删、改、查及显示的易用性
现有系统存在如下易用性缺陷:
1.界面排版不美观,尤其是显示学生信息时
2.输入解释性说明不够详尽
4.3可靠性
现有系统的可靠性控制不够严密,很多控制是通过用户输入,错误的输入有可能引起未知的错误,导致系统进入死循环。
现有系统的容错性不高,如果系统出现错误,无返回值,系统易崩溃。
此为严重错误。
4.4安全性
程序中输入一些特定序列可能引起死循环。
5心得体会
通过本次测试学生信息管理系统项目,总结测试阶段的测试以及分析测试结果,基本预期完成了系统,软件测试的真正意义在于发现错误,而不在于验证软件是正确的,再严密的测试也不能完全发现软件当中的错误,要确保软件基本可用,要加强软件的响应的环节,还要增强软件的可移植性和兼容性,白盒测试来解决系统缓冲溢出,黑盒测试来解决用户交互的bug,从而全方面的提高系统的可用性,健壮性,安全性,稳定性,通过小组成员的通力合作,基本完成了软件功能,但是软件中还存在很多问题,需要进一步完善提高,比如程序中很多函数的判断语句带有scanf()函数,当输入一系列特定的不合理数据时会使程序进入死循环。
系统有待修改与完善。
6附件(程序代码)
#include
#include
#include//includetheprototypeofexit()
#include
constintNUMLEN=11;
constintNAMLEN=20;//namelength
constintPHOLEN=12;//maxlengthofphonenumber
constintMAILEN=20;//maillength
//ThefollowingconstantsusedinstructADDRESS
constintPROLEN=10;//provincelength
constintCITLEN=25;//citylength
constintCOULEN=25;//countylength
constintVILLEN=20;//villagelength
intcount=0;//actualnumberofpeople
intchoice=0;//user'schoiceusedinthemenu
structBIRTHDAY//structbirthday
{
intyear;
intmonth;
intday;
};
structADDRESS//structaddress
{
charprovince[PROLEN];//storeprovinceaddress
charcity[CITLEN];//storecityaddress
charcounty[COULEN];//storecountyaddress
charvillage[VILLEN];//storevillageaddress
};
structSTUDENT//structstudent
{
charname[NAMLEN];//storename
charnum[NUMLEN];//storeschoolnumber
intage;
charsex;
structBIRTHDAYbir;
structADDRESSaddr;
charphonum[PHOLEN];//storephonenumber
charmail[MAILEN];//storee-mailaddress
};
structSTUDENTstu[100];//thenumberofstudent
voidAdd(void);
voidGet_bir(void);//usedinAdd()togetbirthday
boolcheck(structBIRTHDAYbir);//usedinCet_bir()tocheckbir'svalidity
boolleap_year(intyear);//usedincheck()toconfirmwhetheritisaleapyear
voidGet_addr(void);//usedinAdd()togetaddress
voidGet_phonum(void);//usedinAdd()togetphonenumber
voidGet_mail(void);//usedinAdd()togete-mailaddress
/////////////////////////////////////////////////////////////////
voidsearch_name(void);//searchbyname
voidsearch_num(void);//searchbynumber(schoolnumber)
voidDisplay(inti);//displaytheinformationofsomeone
voidSearch(void);
/////////////////////////////////////////////////////////////////
voidModify(void);//usedtomodifystudent'sinformation
voidchange(inti);//usedinModify()
boolyes_or_no(void);//usedinchange()
voidchange_name(void);//changeinformationusedinsearchbyname
voidchange_num(void);//changeinformationusedinsearchbynumber
boolconfirm(void);//toacquiretheuser'sconfirm
voidName(inti);//modifyname,thefollowingallusedinchange()
voidNum(inti);//...
voidAge(inti);//...
voidSex(inti);//...
voidBir(inti);//...
voidAddr(inti);//...
voidPhonum(inti);//...
voidMail(inti);//...
/////////////////////////////////////////////////////////////////
voidDelete(void);//deleteinformation
voiddelete_name(void);//deletebyname
voiddelete_num(void);//deletebynumber
voiddel(inti);
////////////////////////////////////////////////////////////////
voidSort(void);
////////////////////////////////////////////////////////////////
voidMenu(void);
intget_ch();//getuser'sdirective
voidShow(void);
intmain(void)
{
intn;
Show();
Menu();
while
(1)
{
choice=get_ch();
switch(choice)
{
case1:
Add();
break;
case2:
Delete();
break;
case3:
Modify();
break;
case4:
Search();
break;
case5:
for(n=0;nDisplay(n);
break;
case6:
Sort();
break;
case7:
Menu();
break;
case0:
exit(0);
default:
printf("Incorrectindirective!
\n");
}
}
return0;
}
voidAdd(void)
{
printf("Enteryourname:
");
scanf("%s",stu[count].name);
getchar();
printf("Enteryourschoolnumber:
");
while(!
(scanf("%s",stu[count].num)&&strlen(stu[count].num)==NUMLEN-1))
printf("Enteryourschoolnumber(tendigits),tryaga