1、11引言1.1 编写目的本测试报告为学生信息管理系统项目的测试报告,目的在于测试总结以及分析测试结果,描述系统是否符合需求。学生信息管理系统是应用于学校学生信息的管理以及维护的软件。可以方便的管理学生信息,维护以及修改学生信息。1.2 项目背景随着高校学生数量的增多,信息复杂度增加,十分有必要通过学生信息管理系统来完成学生信息的管理,修改及维护。开发学生信息管理系统在当今高校是十分有必要的。1.3 用户群使用于学校。1.4 基本定义五类测试错误类型。A 类:严重错误,包括以下各种错误: 由于程序所引起的死机,非法退出 死循环 因错误操作导致的程序中断 功能错误 数据通讯错误B 类:较严重错误,
2、包括以下各种错误:2 程序错误 程序接口错误C 类:一般性错误,包括以下各种错误: 操作界面错误(包括数据窗口内列名定义、含义是否一致) 打印内容、格式错误 删除操作未给出提示 与日常生活不符D 类:较小错误,包括以下各种错误: 界面不规范 辅助说明描述不清楚 错误操作未给用户提示 提示窗口文字未采用行业术语1.5 参考资料1编程思想 ,机械工业出版社,20072软件测试方法和技术(第二版) ,清华大学出版社2 测试概要测试目的:在于为执行测试提供用例,指导测试的实施,查找分析缺陷,评估测试质量并执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。测试声明:测试人员在软件开发过程中的任务:
3、1、寻找 Bug;2、软件各种属性的组合程度良好;2、避免软件开发过程中的缺陷;3、衡量软件的品质;4、关注用户的需求。32.1 测试环境2.1.1 软件硬件配置表 2-1 配置表环境 VC+6.0硬件配置 CPU:CPU 奔腾 以上内存:512M 以上硬盘:500G 或以上软件配置 VC+6.02.1.1 运行界面运行界面如下:图 2-1 系统开始界面2.2 测试执行此次测试严格按项目测试计划执行,按时完成了测试计划规定的测试对象的测试。4针对测试计划规定的测试策略,在测试执行中都有实现,在测试执行过程中,依据测试计划和测试用例,对系统进行了完整的测试。2.3 测试用例1. 增添模块功能测试
4、:主要测试学生信息能否按一定要求与格式正确输入。流程图及测试用例:如下图。“ E n t e r y o u r c h o i c e : “R = 1FFTF开始( s c a n f ( “ % d “ , 弹出确认信息T对学号为 i 的学生信息进行覆盖删除退出E n t e r : c h o i c e进行其他功能选择判断提示删除成功F l a g = 1F! F l a g = 1F终止删除 ; 提示信息没有被修改提示查无此人 tTF输入学号是否为字符串FT判断第 i 个人的学号是否与输入项等D e l ( i )F开始F l a g = 0 ; i = 0 ; i n u mTT
5、 e m p = = ( s t u + i )- n u mTTD i s p l a y ( i ) ;F l a g = 1D i s p l a y ( i ) ;F l a g = 1TF l a g = = 0 T 提示输入错误信息FF退出FF(4)字段名称 描述标识符 000411测试项 search 模块用例:451HansLee42521231000000001按照查找模块流程图输入测试用例间的关联 00015、排序模块功能测试:12测试能否根据学生学号正确排序。测试用例:如下图。6、其他功能及缺陷测试:显示功能以及菜单显示功能还有系统退出功能。有的模块并不能很好的处理好用户
6、随意格式的输入,并不能很好的友好显示错误。如增添模块的用例所示,程序陷入死循环。2.4 .1 功能性 A. 可以合理增添查询学生信息。B. 可以删除学生信息。C. 可以合理修改学生信息。D.可以查询到任意已录入学生信息。E.可以对已录入学生进行排序。F.可以输出显示学生信息。2.4.2 易用性程序界面提示友好丰富,可以很好的根据提示完成操作。2.5 单元测试及其测试用例Add 等价类划分Add 等价类划分name输入 合理等价类 不合理等价类姓名 1.合理的名字 2.有数字3.有特殊字符(除连字符外)测试用例:2.123133.Add 等价类划分school number输入 合理等价类 不合
7、理等价类学号 1.数字字符 2.有非数字字符测试用例:2.asd456456Add 等价类划分age输入 合理等价类 不合理等价类年龄 1.数字字符 2.有非数字字符测试用例:2.asdAdd 等价类划分sex输入 合理等价类 不合理等价类性别 1.m 或 f 2.非 m 或 f 的任意字符测试用例:2.manAdd 等价类划分brithday输入 合理等价类 不合理等价类生日日期 1.68 位数字字符和 2 位空格字符 2.有非数字字符3.少于 6 位数字字符4.多于 8 位数字字符5.不是 2 位空格字符年份范围 6.在 19852000 之间 7.小于 19858.大于 2000月份范围
8、 9.在 112 之间 10.等于 011.大于 1214日期范围 12.当为闰年 2 月时在 129 之间13.当为平年 2 月时在 128 之间14.当为 1,3,5,7,8,9,12 月时在 131 之间15.当为其他月时在 130 之间16.等于 017. 当为闰年 2 月时大于 2918.当为平年 2 月时大于 2819.当为 1,3,5,7,8,9,12 月时大于 3120.当为其他月时大于 30测试用例:2.asdc 6 253.20144.20146256256255.20146247.1111 6 248.3333 6 2410. 2014 0 111.2014 13 331
9、6.2014 1 017.2008 2 31 可以检查出错误18.2013 2 29 可以检查出错误19.2013 1 33 可以检查出错误20. 2013 4 33 可以检查出错误Add 等价类划分city输入 合理等价类 不合理等价类城市 1.现有的城市名称 2.字符的随意组合15测试用例:woAdd 等价类划分county输入 合理等价类 不合理等价类国家 1.现有国家名称 2.字符的随意组合测试用例:woAdd 等价类划分village输入 合理等价类 不合理等价类城镇 1.现有城镇名称 2.字符的随意组合测试用例:woAdd 等价类划分phone number输入 合理等价类 不合理
10、等价类手机号 1.以 1 开头的 11 位数字字符 2.非数字字符3.少于 114.多于 115.不以 1 开头测试用例:2.aaaaaaaaaaa 可以检查出错误3.aa4.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa5.01314151617 可以检查出错误Add 等价类划分e-mail address输入 合理等价类 不合理等价类邮箱号 1.符合邮箱地址规则 2.不符合地址规则测试用例:123#123#123#16Delete 等价类划分Delet 等价类划分Search输入 合理等价类 不合理等价类选择 1.1 或 2 2.非 1 或 2 的其他数字字符3.其
11、他字符测试用例:2.3 可以检查出错误3.aDelet 等价类划分change输入 合理等价类 不合理等价类选择 1.y 或 n 或 Y 或 N 2.其他字符测试用例:2.a 可以检查出错误Modify 等价类划分Modify 等价类划分Search输入 合理等价类 不合理等价类选择 1.输入 1 或 2 2.非 1 或 2 的其他数字字符3.其他字符测试用例:2.3 可以检查出错误3.aModify 等价类划分name 或 number17输入 合理等价类 不合理等价类选择 1.存入的名字或学号 2.任意的字符测试用例:2.123 可以检查出错误Modify 等价类划分option输入 合理
12、等价类 不合理等价类选择 1.输入 18 之间的任意数字 2.非 1 或 8 的其他数字字符3.其他字符测试用例:2.0 可以检查出错误3.a2.6 集成测试2.6.1 集成测试概要2.6.1.1 集成测试定义此阶段测试基于单元测试的完成。主要目的检测系统是否达到需求对业务及数据流的处理是否符合标准,检测系统对业务流处理是否存在逻辑不严谨及错误 检测需求是否存在不合理的标准及要求。2.6. 2 集成测试实现此阶段将前面的模块测试进行汇总由于大多数测试已经做过,汇总一起就只进行了简单的测试看是否各模块之间有影响。18192.7 系统测试2.7.1 系统测试概要2.7.1.1 系统测试定义用于核实
13、用户与软件之间的交互。系统测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。202.7.1.2 系统测试实现主要通过功能测试实现。与综合测试相同。3改进建议在整个系统测试执行期间,项目组开发人员能够提出的各种缺陷,在一定程度上较好地保证了测试执行的效率以及测试最终期限。但是在整个软件测试活动中还是暴露了一些问题,如,测试执行时间相对较少,测试通过标准要求较低;细节性错误较多,测试时对管理平台不够熟悉,使用时效率偏低;测试时对系统了解不够透彻,测试执行时存在理解偏差,导致提交无效缺陷。通小组的协力合作,学生信息管理系统如期完成并达到交付标准。建议:需求提出方可以再使用
14、该系统的基础上,继续搜集用户的使用需求反馈,并结合市场同类产品的优势,在今后的版本中不断补充并完善功能。 在项目开始的时候应该制定编码标准,需求变更标准,开发和测试人员都严格按照标准进行,可以在后期减少因为开发,测试不一致而导致的问题,同时也可以降低沟通成本。 发布版本的时候,正确布置测试环境,减少因为测试环境出现的无效 bug。 开发人员解决 bug 的时候,填写 bug 原因以及解决方式,方便 bug的跟踪。 开发人员在开发版本上发现 bug,可以通知测试人员,因为开发人员发现的 bug 很有可能在测试版本上出现,而测试人员和开发人员的思路不同,有可能测试人员没有发现该 bug,而且,这样
15、可以保证发现的 bug 都能够被跟踪。4 测试结论存在致命错误系统不合格,需要重新修改某些语句。下面从各方面说明系统存在的问题:214.1 功能系统正确的实现了用户对学生信息增、删、改、查和排序的需求,小巧便捷。4.2 易用性现有系统实现了如下易用性:1. 输入方式可理解性2. 输入限制的正确性3.操作提示信息正确性,一致性,可理解性4.输入限制提示信息的正确性,可理解性,一致性5.学生信息增、删、改、查及显示的易用性现有系统存在如下易用性缺陷:1. 界面排版不美观,尤其是显示学生信息时2. 输入解释性说明不够详尽4.3 可靠性现有系统的可靠性控制不够严密,很多控制是通过用户输入,错误的输入有
16、可能引起未知的错误,导致系统进入死循环。现有系统的容错性不高,如果系统出现错误,无返回值,系统易崩溃。此为严重错误。4.4 安全性程序中输入一些特定序列可能引起死循环。225 心得体会通过本次测试学生信息管理系统项目,总结测试阶段的测试以及分析测试结果,基本预期完成了系统,软件测试的真正意义在于发现错误,而不在于验证软件是正确的,再严密的测试也不能完全发现软件当中的错误,要确保软件基本可用,要加强软件的响应的环节,还要增强软件的可移植性和兼容性,白盒测试来解决系统缓冲溢出,黑盒测试来解决用户交互的bug,从而全方面的提高系统的可用性,健壮性,安全性,稳定性,通过小组成员的通力合作,基本完成了软
17、件功能,但是软件中还存在很多问题,需要进一步完善提高,比如程序中很多函数的判断语句带有scanf()函数,当输入一系列特定的不合理数据时会使程序进入死循环。系统有待修改与完善。6 附件(程序代码)#include #include #include /include the prototype of exit()#include const int NUMLEN = 11 ;const int NAMLEN = 20 ; / name lengthconst int PHOLEN = 12 ; / max length of phone numberconst int MAILEN = 20
18、; / mail length/ The following constants used in struct ADDRESSconst int PROLEN = 10 ; / province lengthconst int CITLEN = 25 ; / city lengthconst int COULEN = 25 ; / county lengthconst int VILLEN = 20 ; / village length23int count = 0 ; / actual number of peopleint choice = 0 ; / users choice used
19、in the menustruct BIRTHDAY / struct birthdayint year ;int month ;int day ; ;struct ADDRESS / struct addresschar provincePROLEN ; / store province addresschar cityCITLEN ; / store city addresschar countyCOULEN ; / store county addresschar villageVILLEN ; / store village address ;struct STUDENT / stru
20、ct studentchar nameNAMLEN ; / store namechar numNUMLEN ; / store school numberint age ;char sex ; struct BIRTHDAY bir ;struct ADDRESS addr ;char phonumPHOLEN ; /store phone numberchar mailMAILEN ; / store e-mail address ;struct STUDENT stu100 ; / the number of studentvoid Add(void) ;void Get_bir(voi
21、d) ; / used in Add() to get birthdaybool check(struct BIRTHDAY bir) ; / used in Cet_bir() to check birs validitybool leap_year(int year) ; / used in check() to confirm whether it is a leap year24void Get_addr(void) ; / used in Add() to get addressvoid Get_phonum(void) ; / used in Add() to get phone
22、numbervoid Get_mail(void) ; / used in Add() to get e-mail address/void search_name(void) ; / search by namevoid search_num(void) ; / search by number (school number)void Display(int i) ; / display the information of someonevoid Search(void) ;/void Modify(void) ; / used to modify students information
23、void change(int i) ; / used in Modify() bool yes_or_no(void) ; / used in change()void change_name(void) ; / change information used in search by namevoid change_num(void) ; / change information used in search by numberbool confirm(void) ; / to acquire the users confirmvoid Name(int i) ; / modify nam
24、e, the following all used in change()void Num(int i) ; / .void Age(int i) ; / .void Sex(int i) ; / .void Bir(int i) ; / .void Addr(int i) ; / .void Phonum(int i) ; / .void Mail(int i) ; / ./void Delete(void) ; / delete informationvoid delete_name(void) ; / delete by namevoid delete_num(void) ; / del
25、ete by numbervoid del(int i) ;/void Sort(void) ; /void Menu(void) ;int get_ch() ; / get users directivevoid Show(void) ;int main(void)25int n ;Show() ;Menu() ;while (1)choice = get_ch() ;switch (choice)case 1:Add() ;break ;case 2:Delete() ;break ;case 3:Modify() ;break ;case 4:Search() ;break ;case
26、5:for (n = 0; n = 15 return false ;if(31 = bir.day)if(bir.month = 8 elseprintf(“%d month is not a solar month,so it shouldnt have more than 30 days.n“,bir.month) ;return false ;else return true ;bool leap_year(int year)return (0 = year%4 void Get_addr(void)printf(“Enter your province: “) ;while(!sca
27、nf(“%s“,stucount.addr.province)printf(“Something went wrong! Try again: “) ;getchar() ;printf(“Enter your city: “) ;while(!scanf(“%s“,stucount.addr.city)printf(“Something went wrong! Try again: “) ;getchar() ;29printf(“Enter your county: “) ;while(!scanf(“%s“,stucount.addr.county) printf(“Something
28、went wrong! Try again: “) ;getchar() ;printf(“Enter your village: “) ;while(!scanf(“%s“,stucount.addr.village)printf(“Something went wrong! Try again: “) ;getchar() ;void Get_phonum(void)printf(“Enter phone number: “) ;while(!(scanf(“%s“,stucount.phonum) getchar() ;void Get_mail(void)printf(“Enter e
29、-mail address: “) ;while(!scanf(“%s“,stucount.mail)printf(“Wrong! Try again: “) ;getchar() ;void Search(void)if(!count) printf(“No person! Please add first.n“) ;elseint choice_12 = 0 ;printf(“Search by name, input 1(one); by number, input 2n“) ;printf(“Enter your choice: “) ;30while(!(scanf(“%d“,swi
30、tch(choice_12)case 1:search_name() ;break ;case 2:search_num() ;break ;void search_name(void)char tempNAMLEN ;printf(“Enter the name: “) ;while(scanf(“%s“,temp)int flag = 0 ;for (int i = 0; i name)Display(i) ;flag = 1 ;break ;if (!flag)printf(“No such student!n“) ;printf(“Enter the name carefully: “) ;continue ;if (flag)break ;