第4部分软件工程测试阶段

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

测试执行的步骤需求评审/设计评审单元测试组装测试/集成测试确认测试系统测试回归测试验收测试2单元测试:集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。集成测试:把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。确认测试:检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。系统测试:把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。验收测试:也称为交付测试。目的是确保软件准备就绪并且可以让最终用户将其用于执行软件的既定功能和任务。3测试执行的步骤:单元单元测试单元测试单元测试单元测试单元测试缺陷跟踪4测试执行的步骤:模块单元测试单元测试单元测试单元测试单元测试组装测试缺陷跟踪5测试执行的步骤:集成组装测试组装测试组装测试组装测试集成测试缺陷跟踪6测试执行的步骤:全面测试系统测试缺陷跟踪7测试执行的步骤:维护系统维护二次开发项目更新单元测试组装测试集成测试系统联调回归测试缺陷跟踪8单元测试又称模块测试,是针对软件设计的最小单位─程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。单元测试测试程序中单个子程序或过程。在设计得好的软件系统中,每个模块完成一个清晰定义的子功能,而且这个子功能和同级其它模块的功能之间没有相互依赖关系,因此,有可能把每个模块作为一个单独的实体来测试。单元测试(UnitTesting)9单元测试目标:检验程序最小单元有无错误接口、数据结构、边界、覆盖、逻辑检验单元编码与设计是否吻合时机:编码完成后,首先要实施的测试方法:静态测试动态白盒测试责任:开发工程师/开发小组10在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。单元测试的内容11单元测试12在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致;在做内外存交换时要考虑:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文写入错误;I/O错误是否检查并做了处理。(1)模块接口测试13不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错全局数据对模块的影响(2)局部数据结构测试14选择适当的测试用例,对模块中重要的执行路径进行测试。应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。对基本执行路径和循环进行测试可以发现大量的路径错误。(3)路径测试15出错的描述是否难以理解出错的描述是否能够对错误定位显示的错误与实际的错误是否相符对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经引起系统的干预等(4)错误处理测试16注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。(5)边界测试17首先集中注意力来测试程序中较小的结构块,其优点是:•便于错误定位。由于一开始把注意力集中在程序的较小单元上,发现错误,就可以肯定错误所在模块,因而便于纠错;•单元测试提供了同时测试多个模块的机会,使得测试过程得以并行进行。单元测试的优点18实施步骤:制定计算机软件单元测试计划,应在详细设计阶段完成;建立计算机软件单元测试环境、编写测试说明;执行计算机软件单元测试用例,并详细记录执行信息;根据每个测试用例的预期输出结果和实际运行结果,判定该测试是否通过;如果测试不通过,应分析错误原因,并在修正错误后进行回归测试,直至通过;完成计算机软件单元测试报告;测试完成并通过后,将被测软件和有关文档纳入配置管理。单元测试单元测试通过准则:完成并通过了计算机软件单元静态分析;计算机软件单元功能同详细设计要求一致;计算机软件单元接口同详细设计要求一致;能正确处理输入和运行中的错误;对测试发现的问题进行修改后,又执行并通过了有关测试;达到规定的测试覆盖类及覆盖率且单元执行正确;完成了计算机软件单元测试报告。20单元测试的被测对象是程序单元,而程序单元不是一个独立可运行的程序,在对每个单元进行单元测试时,也不能完全忽视它们和周围模块的相互关系。为了模拟这类关系,为程序单元的执行构造一个完整的环境,需设置两种辅助测试模块:驱动模块和桩模块。驱动模块用以模拟被测模块的上层模块,测试执行时由驱动模块调用被测模块使其运行;桩模块模拟被测模块执行时所调用的模块,测试执行时桩模块使被测模块能完整闭合地运行。单元测试中的驱动模块和桩模块21驱动模块被测模块桩模块桩模块桩模块上图表示了被测模块、驱动模块、桩模块所构成的单元测试执行环境。由于测试模块,可能调用多个其它模块,因此可能有多个桩模块。驱动模块和桩模块要设计得尽量简单,避免因其错误干扰被测模块运行和测试结果判别。开发高内聚(cohesion)度的模块,可以简化单元测试过程。模块测试执行环境构成图测试用例测试结果单元测试面向对象的单元测试测试思路以对象的类作为基本测试单位,查错范围主要是类定义之内的属性和服务,以及有限的对外接口(消息)所涉及的部分;对父类测试完成后,子类的测试重点只是那些新定义的属性和服务以及被改动的服务;具体测试内容基于类操作(或方法)的测试:测试类中的每个操作;基于类状态的测试:考察类的实例(对象)在其生命周期各个状态下的变化情况;基于类响应状态的测试:从类和实例的任务出发,以外界向对象发送消息序列的方法来测试类的各个响应状态。23组装测试又称集成测试、联合测试。通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度;在单元测试的同时可进行组装测试;发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。集成测试(IntegratedTesting)24集成测试目标:检验组成系统的模块接口有无错误代码实现的系统设计与总体设计是否吻合时机:主要的单元测试完成后,经常与单元测试同步进行方法:白盒测试、灰盒测试、黑盒测试责任:开发工程师/开发小组测试工程师25模块间的接口测试:接口测试是集成测试的基本任务。在接口测试中应从调用关系和数据项的相容性两方面考虑。数据项的相容性是指调用时数据传递的正确性。全局数据结构测试:全局数据结构是一种常用的接口方式,因此要在集成测试中进行测试。软件功能模块的功能测试:如果我们不是一下把所有的模块集成为一个整体软件,会获得一些中间功能模块,这也是规范有效的组装测试过程要求的。在测试了构成这个功能模块内接口的正确性后,我们还应测试整个功能模块是否满足相应的功能需求。虽然在接口测试时已证实功能模块的一些功能,但只是侧重于接口方面。因此,如果若干子功能形成了一个如设计文档中要求的一个高层功能,必须进行功能测试。性能测试:在必要时应进行组装成的中间功能模块的运行时间、运行空间、计算精度的测试。由于系统还没有完全结合进来,一些性能的度量容易进行,也容易较早察觉真实模块结合后给性能带来的影响。集成测试的主要内容26由模块组装成程序进行测试有两种方法,增量测试和非增量测试。增量测试是指不断地把待测模块组合到已经测试过的模块上去,然后再进行测试;非增量测试是指独立地测试每个模块,再把它们组合成完整的程序。增量测试相对于非增量测试的优点是:非增量测试先分散测试,再集中起来一次完成组合和测试,如果在模块接口处存在差错,只会组合后一下子暴露出来。使用增量测试方法可以较早地发现模块接口错误,这是由于较早地把模块组合起来进行测试所致。增量测试利用已测试过的模块取代非增量测试中所需要的驱动模块或桩模块,这样对后续模块的测试会使得前面已测试过的模块得到更多的检验,因而整个程序的测试能取得较好的效果。增量测试使调试工作变得容易,因为增量逐步组合和逐步测试模块,把可能出现的错误逐步分散暴露出来,并且由于每次组合一个模块,错误发生时,可以比较容易定位,这些错误肯定是在最新增加的模块的连接中出现的。而非增量测试,直到对各个模块测试结束,对整个程序进行组合时才能发现错误,这时再要确定错误的位置就非常困难,因为错误可能出现在程序的任何地方。集成测试的方法27它是一种非增量式组装方式。也叫做整体拼装。使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。1.一次性组装方式(bigbang)28这种组装方式又称渐增量组装。首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统在组装的过程中边连接边测试,以发现连接过程中产生的问题通过增量逐步组装成为要求的软件系统。2.增量式组装方式29这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。自顶向下的增量方式在测试过程中较早地验证了主要的控制和判断点。选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。(1)自顶向下的增量方式3031这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。(2)自底向上的增量方式32自顶向下增量的方式和自底向上增量的方式各有优缺点。一般来讲,一种方式的优点是另一种方式的缺点。33衍变的自顶向下的增量测试:首先对输入/输出模块和引入新算法模块进行测试;再自底向上组装成为功能相当完整且相对独立的子系统;然后由主模块开始自顶向下进行增量测试。(3)混合增量式测试34在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。关键模块的特征:满足某些软件需求;程序的模块结构中位于较高的层次(高层控制模块);较复杂、较易发生错误;有明确定义的性能要求。(4)关键模块问题35确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。确认测试(ValidationTesting)36通过实施预定的测试计划和测试步骤,确定:软件的特性是否与需求相符;所有的文档都是正确且便于使用;同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试。确认测试(ValidationTesting)37确认测试阶段要进行软件配置复查,软件配置复查的目的是保证:软件配置的所有成分都齐全;各方面的质量都符合要求;具有维护阶段所必需的细节;而且已经编排好分类的目录。应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。确认测试38在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功