当前位置:文档之家› 学生信息管理系统测试报告

学生信息管理系统测试报告

学生信息管理系统测试报告Modified by JACK on the afternoon of December 26, 20201.引言编写目的本测试报告为学生信息管理系统项目的测试报告,目的在于测试总结以及分析测试结果,描述系统是否符合需求。

学生信息管理系统是应用于学校学生信息的管理以及维护的软件。

可以方便的管理学生信息,维护以及修改学生信息。

项目背景随着高校学生数量的增多,信息复杂度增加,十分有必要通过学生信息管理系统来完成学生信息的管理,修改及维护。

开发学生信息管理系统在当今高校是十分有必要的。

用户群使用于学校。

基本定义五类测试错误类型。

A类:严重错误,包括以下各种错误:⏹由于程序所引起的死机,非法退出⏹死循环⏹因错误操作导致的程序中断⏹功能错误⏹数据通讯错误B类:较严重错误,包括以下各种错误:⏹程序错误⏹程序接口错误C类:一般性错误,包括以下各种错误:⏹操作界面错误(包括数据窗口内列名定义、含义是否一致)⏹打印内容、格式错误⏹删除操作未给出提示⏹与日常生活不符D类:较小错误,包括以下各种错误:⏹界面不规范⏹辅助说明描述不清楚⏹错误操作未给用户提示⏹提示窗口文字未采用行业术语参考资料[1]《编程思想》,机械工业出版社,2007[2]《软件测试方法和技术(第二版)》,清华大学出版社2 测试概要测试目的:在于为执行测试提供用例,指导测试的实施,查找分析缺陷,评估测试质量并执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

测试声明:测试人员在软件开发过程中的任务:1、寻找Bug;2、软件各种属性的组合程度良好;2、避免软件开发过程中的缺陷;3、衡量软件的品质;4、关注用户的需求。

测试环境软件硬件配置表2-1配置表环境VC++硬件配置CPU:CPU奔腾Ⅲ以上内存:512M以上硬盘:500G或以上软件配置VC++运行界面运行界面如下:图2-1 系统开始界面测试执行此次测试严格按项目测试计划执行,按时完成了测试计划规定的测试对象的测试。

针对测试计划规定的测试策略,在测试执行中都有实现,在测试执行过程中,依据测试计划和测试用例,对系统进行了完整的测试。

测试用例1. 增添模块功能测试:主要测试学生信息能否按一定要求与格式正确输入。

流程图及测试用例:如下图。

(1)(2)3、修改模块功能测试:测试能否正确的按要求修改学生信息并保存。

流程图及测试用例:如下图。

(3)4、查找功能功能测试:测试能否按照学生姓名或者学号正确的查找到学生信息。

流程图及测试用例:如下图。

测试项search模块按照查找模块流程图输入用例:451HansLee425212301测试用例间的关联00015、排序模块功能测试:测试能否根据学生学号正确排序。

测试用例:如下图。

6、其他功能及缺陷测试:显示功能以及菜单显示功能还有系统退出功能。

有的模块并不能很好的处理好用户随意格式的输入,并不能很好的友好显示错误。

如增添模块的用例所示,程序陷入死循环。

.1功能性A. 可以合理增添查询学生信息。

B. 可以删除学生信息。

C. 可以合理修改学生信息。

D.可以查询到任意已录入学生信息。

E.可以对已录入学生进行排序。

F.可以输出显示学生信息。

易用性程序界面提示友好丰富,可以很好的根据提示完成操作。

单元测试及其测试用例Add等价类划分Add等价类划分——name测试用例:3.\\\Add等价类划分——school number测试用例:\Add等价类划分——age测试用例:Add等价类划分——sex测试用例:Add等价类划分——brithday测试用例: 6 25\6\246 246 2410. 2014 0 113 331 02 31 可以检查出错误2 29 可以检查出错误1 33 可以检查出错误20. 2013 4 33 可以检查出错误Add等价类划分——city测试用例:woAdd等价类划分——county测试用例:woAdd等价类划分——village测试用例:woAdd等价类划分——phone number测试用例:可以检查出错误可以检查出错误Add等价类划分——e-mail address测试用例:123#123#123#Delete等价类划分Delet等价类划分——Search测试用例:可以检查出错误Delet等价类划分——change测试用例:可以检查出错误Modify等价类划分Modify等价类划分——Search测试用例:可以检查出错误Modify等价类划分——name或number测试用例:可以检查出错误Modify等价类划分——option测试用例:可以检查出错误集成测试集成测试概要集成测试定义此阶段测试基于单元测试的完成。

主要目的检测系统是否达到需求对业务及数据流的处理是否符合标准,检测系统对业务流处理是否存在逻辑不严谨及错误检测需求是否存在不合理的标准及要求。

. 2 集成测试实现此阶段将前面的模块测试进行汇总由于大多数测试已经做过,汇总一起就只进行了简单的测试看是否各模块之间有影响。

系统测试系统测试概要系统测试定义用于核实用户与软件之间的交互。

系统测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。

系统测试实现主要通过功能测试实现。

与综合测试相同。

3.改进建议在整个系统测试执行期间,项目组开发人员能够提出的各种缺陷,在一定程度上较好地保证了测试执行的效率以及测试最终期限。

但是在整个软件测试活动中还是暴露了一些问题,如,测试执行时间相对较少,测试通过标准要求较低;细节性错误较多,测试时对管理平台不够熟悉,使用时效率偏低;测试时对系统了解不够透彻,测试执行时存在理解偏差,导致提交无效缺陷。

通小组的协力合作,学生信息管理系统如期完成并达到交付标准。

建议:需求提出方可以再使用该系统的基础上,继续搜集用户的使用需求反馈,并结合市场同类产品的优势,在今后的版本中不断补充并完善功能。

在项目开始的时候应该制定编码标准,需求变更标准,开发和测试人员都严格按照标准进行,可以在后期减少因为开发,测试不一致而导致的问题,同时也可以降低沟通成本。

●发布版本的时候,正确布置测试环境,减少因为测试环境出现的无效bug。

●开发人员解决bug的时候,填写bug原因以及解决方式,方便bug的跟踪。

●开发人员在开发版本上发现bug,可以通知测试人员,因为开发人员发现的bug很有可能在测试版本上出现,而测试人员和开发人员的思路不同,有可能测试人员没有发现该bug,而且,这样可以保证发现的bug都能够被跟踪。

4 测试结论存在致命错误系统不合格,需要重新修改某些语句。

下面从各方面说明系统存在的问题:功能系统正确的实现了用户对学生信息增、删、改、查和排序的需求,小巧便捷。

易用性现有系统实现了如下易用性:1.输入方式可理解性2.输入限制的正确性3.操作提示信息正确性,一致性,可理解性4.输入限制提示信息的正确性,可理解性,一致性5.学生信息增、删、改、查及显示的易用性现有系统存在如下易用性缺陷:1.界面排版不美观,尤其是显示学生信息时2.输入解释性说明不够详尽可靠性现有系统的可靠性控制不够严密,很多控制是通过用户输入,错误的输入有可能引起未知的错误,导致系统进入死循环。

现有系统的容错性不高,如果系统出现错误,无返回值,系统易崩溃。

此为严重错误。

安全性程序中输入一些特定序列可能引起死循环。

5 心得体会通过本次测试学生信息管理系统项目,总结测试阶段的测试以及分析测试结果,基本预期完成了系统,软件测试的真正意义在于发现错误,而不在于验证软件是正确的,再严密的测试也不能完全发现软件当中的错误,要确保软件基本可用,要加强软件的响应的环节,还要增强软件的可移植性和兼容性,白盒测试来解决系统缓冲溢出,黑盒测试来解决用户交互的bug,从而全方面的提高系统的可用性,健壮性,安全性,稳定性,通过小组成员的通力合作,基本完成了软件功能,但是软件中还存在很多问题,需要进一步完善提高,比如程序中很多函数的判断语句带有scanf()函数,当输入一系列特定的不合理数据时会使程序进入死循环。

系统有待修改与完善。

6 附件(程序代码)#include <>#include <>#include <> .void Age(int i) ; .void Sex(int i) ; .void Bir(int i) ; .void Addr(int i) ; .void Phonum(int i) ; .void Mail(int i) ; .ame) ;getchar() ;printf("Enter your school number: ") ;while(!(scanf("%s",stu[count].num) && strlen(stu[count].num) == NUMLEN - 1))printf("Enter your school number(ten digits),try again: ") ;getchar() ;printf("Enter your age: ") ;while(!(scanf("%d",&stu[count].age) && stu[count].age >= 15 && stu[count].age <= 30))printf("Age ranges from 15 to 30, try again: ") ;getchar() ;printf("Enter your sex: ") ;while(!(scanf("%c",&stu[count].sex) && (stu[count].sex == 'm' || stu[count].sex == 'f')))printf("The sex is %c\n",stu[count].sex) ;getchar() ;Get_bir() ; &stu[count]., &stu[count]. && check(stu[count].bir))) {Sleep(1000);printf("Wrong !! Try again: ") ;}}bool check (struct BIRTHDAY bir){if (2 ==if(leap_year)if <= 29)return true ;else{printf("%d year %d month has %d days\n",,, ;printf(" 2 month has no more than 29 days even the year is a leap year!!\n") ;return false ;}else if <= 28)return true ;else{printf("%d year is not a leap year, so 2 month shouldn't have more than 28 days\n") ;return false ;}else if > 31){printf("Have you ever seen a month that has %d days\n", ;return false ;}if(31 ==if( < 8 && %2 == 1) || >= 8 && % 2 == 0))return true ;else{printf("%d month is not a solar month,so it shouldn't have more than 30 days.\n", ;return false ;}elsereturn true ;}bool leap_year(int year){return ((0 == year%4 && year% 100 != 0) || (0 == year%400)) true : false ; }void Get_addr(void){printf("Enter your province: ") ;while(!scanf("%s",stu[count].)printf("Something went wrong!! Try again: ") ;getchar() ;printf("Enter your city: ") ;while(!scanf("%s",stu[count].)printf("Something went wrong!! Try again: ") ;getchar() ;printf("Enter your county: ") ;while(!scanf("%s",stu[count].)printf("Something went wrong!! Try again: ") ;getchar() ;printf("Enter your village: ") ;while(!scanf("%s",stu[count].)printf("Something went wrong!! Try again: ") ;getchar() ;}void Get_phonum(void){printf("Enter phone number: ") ;while(!(scanf("%s",stu[count].phonum) && (strlen(stu[count].phonum) == PHOLEN - 1 || strlen(stu[count].phonum) == PHOLEN - 5)))printf("Wrong!! Try again: ") ;getchar() ;}void Get_mail(void){printf("Enter e-mail address: ") ;while(!scanf("%s",stu[count].mail))printf("Wrong!! Try again: ") ;getchar() ;}void Search(void){if(!count)printf("No person!! Please add first.\n") ;else{int choice_12 = 0 ;printf("Search by name, input 1(one); by number, input 2\n") ;printf("Enter your choice: ") ;while(!(scanf("%d",&choice_12) && (1 == choice_12 || 2 == choice_12)))printf("Enter 1 or 2, Try again: ") ;switch(choice_12){case 1:search_name() ;break ;case 2:search_num() ;break ;}}}void search_name(void){char temp[NAMLEN] ;printf("Enter the name: ") ;while(scanf("%s",temp)){int flag = 0 ;for (int i = 0; i < count; ++ i)if (0 == strcmp(temp,(stu+i)->name)){Display(i) ;flag = 1 ;break ;}if (!flag){printf("No such student!!\n") ;printf("Enter the name carefully: ") ;continue ;}if (flag)break ;}}void search_num(void){char temp[NUMLEN] ;printf("Enter the number: ") ;while(scanf("%s",temp)){int flag = 0 ;for (int i = 0; i < count; ++ i)if (0 == strcmp(temp,(stu+i)->num)){Display(i) ;flag = 1 ;break ;}if (!flag){printf("No such person!!\n") ;printf("Enter the number carefully: ") ;continue ;}if (flag)break ;}}void Display(int i){printf("name \tnumber\tage sex\n") ;printf("%s \t%s\t%d %c\n",stu[i].name,stu[i].num,stu[i].age,stu[i].sex) ;printf("birthday: %d %d %d\n",stu[i].,stu[i].,stu[i]. ;printf("address: %s %s %s %s\n",stu[i].,stu[i].,stu[i].,stu[i]. ;printf("phone number: %s\te-mailaddress: %s\n",stu[i].phonum,stu[i].mail) ;}n") ;else{int choice_12 = 0 ;printf("Search by name, input 1; by number, input 2\n") ;printf("Enter your choice now: ") ;while (!(scanf("%d",&choice_12) && (1 == choice_12 || 2 == choice_12)))printf("Enter 1 or 2. Try again: ") ;switch (choice_12){case 1:change_name() ;break ;case 2:change_num() ;break ;}}}void change(int i){printf("1) name \t2) number \t3) age \t4) sex\n") ;printf("5) birthfay \t6) address\t7) phonum\t8) e-mail\n") ;int choice_18 = 0 ;bool FLAG = true ;while(FLAG){printf("Enter the corresponding option: ") ;while(!(scanf("%d",&choice_18) && choice_18 < 9 && choice_18 > 0))printf("Enter 1 or 2 or ... or 8. Try again: ") ;switch (choice_18){case 1:Name(i) ;FLAG = yes_or_no() ;break ;case 2:Num(i) ;FLAG = yes_or_no() ;break ;case 3:Age(i) ;FLAG = yes_or_no() ;break ;case 4:Sex(i) ;FLAG = yes_or_no() ;break ;case 5:Bir(i) ;FLAG = yes_or_no() ;break ;case 6:Addr(i) ;FLAG = yes_or_no() ;break ;case 7:Phonum(i) ;FLAG = yes_or_no() ;break ;case 8:Mail(i) ;FLAG = yes_or_no() ;break ;}}}bool yes_or_no(void){getchar() ;char flag = '0' ;printf("Continue (y\\n): ") ;while(!(scanf("%c",&flag) && ('y' == flag || 'Y' == flag || 'n' == flag || 'N' == flag)))printf("Enter 'y'('Y') or 'n'('N'). Try again: ") ;if ('y' == flag || 'Y' == flag)return true ;elsereturn false ;}void change_name(void){char temp[NAMLEN] ;printf("Enter the name: ") ;while(scanf("%s",temp)){int flag = 0 ;for (int i = 0; i < count; ++ i)if (0 == strcmp(temp,(stu+i)->name)){change(i) ;flag = 1 ;break ;}if (!flag){printf("No such student!!\n") ;printf("Enter the name carefully: ") ;continue ;}elsebreak ;}}void change_num(void){char temp[NUMLEN] ;printf("Enter the number: ") ;while (scanf("%s",temp)){int flag = 0 ;for (int i = 0; i < count; ++ i)if (0 == strcmp(temp,(stu+i)->num)){change(i) ;flag = 1 ;break ;}if (!flag){printf("No such person!!\n") ;printf("Enter the number carefully: ") ;continue ;}elsebreak ;}}void Name(int i){char temp_name[NAMLEN] ;while(!scanf("%s",temp_name))printf("Enter carefully! Try again: ") ;getchar() ;if (confirm()){strcpy(stu[i].name,temp_name) ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged!\n") ;}void Num(int i){char temp_num[NUMLEN] ;while(!(scanf("%s",temp_num) && 10 == strlen(temp_num))) printf("Enter carefully! Try again: ") ;getchar() ;if (confirm()){strcpy(stu[i].num,temp_num) ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged!\n") ;}void Age(int i){int temp_age = 0 ;while(!(scanf("%d",&temp_age) && temp_age < 31 && temp_age > 14)) printf("Age ranges from 15 to 30. Try again: ") ;getchar() ;if(confirm()){stu[i].age = temp_age ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged!\n") ;}void Sex(int i){char temp_sex = '0' ;while(!(scanf("%c",&temp_sex) && ('m' == temp_sex || 'f' == temp_sex))) printf("Enter 'm' or 'f'. Try again: ") ;getchar() ;if(confirm()){stu[i].sex = temp_sex ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged!\n") ;}void Bir(int i){struct BIRTHDAY temp_bir ;printf("Enter the birthday like this: 2048 8 15\n") ;printf("Enter the birthday now: ") ;while(!(scanf("%d %d %d", &, &, & && check(temp_bir)))printf("Enter carefully. Try again: ") ;getchar() ;if(confirm()){ir = temp_birstu[i]. = ;stu[i]. = ;stu[i]. = ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged!\n") ;}void Addr(int i){struct ADDRESS temp_addr ;printf("Enter the address like this: henan zhengzhou hongxing zhaozhuang\n") ;printf("Enter the new address now: ") ;while(!scanf("%s %s %s %s",, , , )printf("Enter carefully. Try again: ") ;getchar() ;if(confirm()){ddr = temp_addrstrcpy(stu[i]., ;strcpy(stu[i]., ;strcpy(stu[i]., ;strcpy(stu[i]., ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged!\n") ;}void Phonum(int i){char temp_phonum[PHOLEN] ;printf("Enter the new phone number now: ") ;while(!(scanf("%s",temp_phonum) && (7 == strlen(temp_phonum) || 11 == strlen(temp_phonum))))printf("Enter carefully. Try again: ") ;getchar() ;if(confirm()){strcpy(stu[i].phonum,temp_phonum) ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged!\n") ;}void Mail(int i){char temp_mail[MAILEN] ;printf("Enter the new e-mail address: ") ;while(!scanf("%s",temp_mail))printf("Enter carefully. Try again: ") ;getchar() ;if(confirm()){strcpy(stu[i].mail,temp_mail) ;printf("Update successfully!\n") ;}elseprintf("Information remains unchanged.\n") ;}bool confirm(void){char flags = '0' ;printf("Do you really want to change that (y\\n): ") ;while (!(scanf("%c",&flags) && ('y' == flags || 'Y' == flags || 'n' == flags || 'N' == flags)))printf("Enter 'y'('Y') or 'n'('N'). Try again: ") ;if ('y' == flags || 'Y' == flags)return true ;elsereturn false ;}n") ;else{int choice_12 = 0 ;printf("Search by name, input 1; by number, input 2\n") ;printf("Enter your choice now: ") ;while(!(scanf("%d",&choice_12) && (1 == choice_12 || 2 == choice_12)))printf("Enter 1 or 2. Try again: ") ;switch (choice_12){case 1:delete_name() ;break ;case 2:delete_num() ;break ;}}}void del(int i){if (confirm()){for (int j = i; j < count; ++ j)stu[j] = stu[j+1] ;-- count ; n") ;else{struct STUDENT temp_stu ;for (int i = 0; i < count; ++ i)for (int j = i; j < count; ++ j)if (strcmp(stu[i].num,stu[j].num) >= 0){temp_stu = stu[i] ;stu[i] = stu[j] ;stu[j] = temp_stu ;}printf("Sort successfully.\n") ;}}void Menu(void){printf("\t\t 1) Add 2) Delete 3) Modify 4) Search\n") ;printf("\t\t 5) Output 6) Sort 7) Menu 0) Exit\n") ;}int get_ch(){int choi(0) ;printf("Enter your choice: ") ;while (!(scanf("%d",&choi) != EOF && choi >= 0 && choi < 8)) printf("Enter integers from 0 to 7. Try again: ") ;return choi ;}void Show(void){printf("\t\t\t|||||||||||||||||||||||||||||||||\n") ;printf("\t\t\t|| ||\n") ;printf("\t\t\t|| WELCOME TO COME HERE ||\n") ;printf("\t\t\t|| ||\n") ;printf("\t\t\t|||||||||||||||||||||||||||||||||\n\n") ; }。

相关主题