您好,欢迎访问三七文档
1阜阳师范学院本科毕业设计题目:班级管理系统的测试学号:姓名:年级:系别:专业:完成日期:指导老师:班级管理系统的测试姓名:学号:指导教师:摘要在软件生命周期的各个阶段,都有可能会产生差错。虽然在每个阶段结束之前都有严格的复审,以期望2能尽早的发现错误,但是经验表明审查并不能发现所有差错。如果在软件投入生产性运行之前,没有发现大部分错误,则这些错误迟早会在运行过程中暴露出来,甚至造成严重的后果,等到那时去改这些错误的代价会很高。测试的目的就是在软件投入生产性运行之前,尽可能地发现软件中的错误,测试是对软件规格说明、设计和编码的最后复审,所以软件测试贯穿在整个软件开发期的全过程。要对软件进行测试首先要明白软件要实现的功能,否则无法对软件进行测试。本文在分析软件测试的方法、目的、流程图等基本概念的基础上,重点介绍了对自己开发的班级管理系统的测试。关键词:安装测试、功能测试、性能测试、单元测试1.软件测试的概念1.1软件测试的定义软件测试(Softwaretesting)是软件生存期(Softwarelifecycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。1.2软件测试的目的、原则、基本要求1.2.1测试的目的1.检验开发出来的软件是否符合用户的需求。2.尽可能多地发现程序中的错误和缺陷。1.2.2基本要求(测试人员)1.了解软件的总体设计思路和详细设计过程2.对整套软件的数据流程要十分清晰1.2.3测试用例由测试数据和相应的预期结果构成。在测试之前,一定要设计好测试数据和相应的预期结果,这是测试用例的基本原则和进行有效测试的最好途径之一1.2.4测试原则1.根据测试数据来确定预期的输出结果。2.彻底检查每个测试结果(正确的、错误的),并对测试结果进行认真和仔细的分析。3.对非法的和非预期的输入数据也要像合法的和预期的输入数据一样编写测试用例。34.以挑剔的眼光来看待每个程序模块,不要设想程序中不会出现错误。程序做了它不该做的事情,即使是正确的,我们也应该把它视为错误。5.程序模块经测试后,残存的错误数目一般与已发现的错误数目成正比例。也就是说,一个模块中发现的错误越多,那么它可能残存的错误数目也就越多,对这样的程序模块,一定要进行严格和更彻底的测试。6.要保存测试用例。2.软件测试的方法2.1软件测试的基本方法软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。2.1.1黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边界值分析、因—果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。2.1.2白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关4的错误。2.1.3ALAC(Act-like-a-customer)测试图(1)ALAC测试是一种基于客户使用产品的知识开发出来的测试方法。ALAC测试是基于复杂的软件产品有许多错误的原则。最大的受益者是用户,缺陷查找和改正将针对哪些客户最容易遇到的错误。2.2单元测试的基本方法单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。2.2.1单元测试任务单元测试任务包括:1模块接口测试;2模块局部数据结构测试;3模块边界条件测试;4模块中所有独立执行通路测试;5模块的各条错误处理通路测试。模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:1.输入的实际参数与形式参数的个数是否相同和属性是否匹配;2.输入的实际参数与形式参数的量纲是否一致;3.调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;4.调用其他模块时所给实际参数的属性是否与被调模块的形参的属性是否匹配;5.调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;6.调用预定义函数时所用参数的个数、属性和次序是否正确;7.是否存在与当前入口点无关的参数引用;8.是否修改了只读型参数;9.对全程变量的定义各模块是否一致;软件有好多错误图ALAC测试客户通常会遇到错误只占很小比例改进测试的有效性,使测试针对哪些客户最容易遇到的错误510.是否把某些约束作为参数传递。如果模块内包括外部输入输出,还应该考虑下列因素:1.文件属性是否正确;2.OPEN/CLOSE语句是否正确;3.格式说明与输入输出语句是否匹配;4.缓冲区大小与记录长度是否匹配;5.文件使用前是否已经打开;6.是否处理了文件尾;7.是否处理了输入/输出错误;8.输出信息中是否有文字性错误;检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:1.不合适或不相容的类型说明;2.变量无初值;3.变量初始化或缺省值有错;4.不正确的变量名(拼错或不正确地截断);5.出现上溢、下溢和地址异常。除了局部数据结构外,如果可能,单元测试时还应该查清全局数据对模块的影响。在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:1.误解或用错了算符优先级;2.混合类型运算;3.变量初值错;4.精度不够;5.表达式符号错。比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:1.不同数据类型的对象之间进行比较;2.错误地使用逻辑运算符或优先级;3.因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;4.比较运算或变量出错;5.循环终止条件或不可能出现;66.迭代发散时不能退出;7.错误地修改了循环变量。一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:1.输出的出错信息难以理解;2.记录的错误与实际遇到的错误不相符;3.在程序自定义的出错处理段运行之前,系统已介入;4.异常处理不当;5.错误陈述中未能提供足够的定位出错信息。边界条件测试是单元测试中最后,也是最重要的一项任务。众所周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。2.2.2单元测试过程一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub),下图显示了一般单元测试的环境。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法。提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。7图(2)2.3综合测试的基本方法时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误,等等。综合测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误。某设计人员习惯于把所有模块按设计要求一次全部组装起来,然后进行整体测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底。下面讨论两种增量式集成方法。2.3.1自顶向下集成自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一条路径作为主控制路径,这多少带有随意性,一般根据问题的特性确定。以图(3)为例,若选择了最左一条路径,首先将模块M1,M2,M5和M8集成在一起,再将M6集成起来,然后考虑中间和右边的路径。广度优先策略则不然,它沿着控制层次结构水平地向下移动。仍然以下图为例,它首先把M2、M3和M4与主控模块集成在一起,再将M5和M6和其他模块集成起来。自顶向下综合测试的具体步骤为:1.以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;2.依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块;3.每集成一个模块立即测试一遍;4.只有每组测试完成后,才着手替换下一个桩模块;5.为避免引入新错误,须不断地进行回归测试(即全部或部分地重复已做过的测试)。8
本文标题:软件测试毕业设计
链接地址:https://www.777doc.com/doc-4223060 .html