收藏 分享(赏)

软件测试策略.ppt

上传人:暖洋洋 文档编号:1685640 上传时间:2018-08-17 格式:PPT 页数:81 大小:513.50KB
下载 相关 举报
软件测试策略.ppt_第1页
第1页 / 共81页
软件测试策略.ppt_第2页
第2页 / 共81页
软件测试策略.ppt_第3页
第3页 / 共81页
软件测试策略.ppt_第4页
第4页 / 共81页
软件测试策略.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

1、软件测试策略,测试流程图,软件测试策略,测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。,软件测试策略,组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。 系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。,软件测试策略,单元测试 (Unit Testing),单元测试又称模块测试,是针对软件设计的最小单位 程

2、序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。 单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。,1. 单元测试的内容,在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。,(1) 模块接口测试,在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致;,在做内外存交

3、换时要考虑:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写输入错误,IO错误是否检查并做了处理。,(2) 局部数据结构测试,不正确或不一致的数据类型说明 使用尚未赋值或尚未初始化的变量 错误的初始值或错误的缺省值 变量名拼写错或书写错 不一致的数据类型 全局数据对模块的影响,(3) 路径测试,选择适当的测试用例,对模块中重要的执行路径进行测试。 应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。 对基本执行路径和循环进行测试可以发现大量的路径错误。,(4)

4、错误处理测试,出错的描述是否难以理解 出错的描述是否能够对错误定位 显示的错误与实际的错误是否相符 对错误条件的处理正确与否 在对错误进行处理之前,错误条件是否已经引起系统的干预等,(5) 边界测试,注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。,2. 单元测试的步骤,模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。驱动模块 (driver) 桩模块

5、 (stub) 存根模块,如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。 对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。,主要测试以下五个方面: 1、模块接口: 内部检查:传输参数的数目、属性、单位、次序是否匹配;全程变量的定义是否一致;只做输入的变元有无被修改,等等。 外部检查:打开、结束、关闭文件的操作;文件和属性;IO错误处理;输出拼写,等等。 2、局部数据结构:数据说明(declaration);初始化与缺省值的设置;变量名拼写;数据类型的相容性

6、;上下溢出及地址异常,等等。,3、重要的执行通路:由于穷尽测试不可能,故通常针对最常见的错误设计测试方案。较常见的错误有: 计算次序问题 不同类型混合运算(例:比较类型不同的量) 初值设置错误 精度问题(例:精度不够导致两变量不可能相等,而程序中等待相等条件的出现) 表达式错误 循环终止条件错误(例:次数差1,或陷入死循环),4、出错处理通路:预见出现错误的条件,设置处理。较常见的问题有: 输出的错误信息难以理解,不能确定错误位置 描述的错误与实际错误不符 处理之前系统已经干预 处理不正确,1、代码审查(code inspection) Walk-through: 例如 Lucent Tech

7、nologies 的测试策略,是由三人一组(包括 author, reader, 和recorder),逐行检查源代码。 Rehearsal:由人扮演computer,模拟执行情况,优点: 一次审查可发现多个错误,不必改一个测一个。,单元测试的主要手段 :,2、制做测试软件:Stub (存根)和 Driver(驱动)软件的编写,属额外开支。模块高内聚可简化这一过程。,代码审查通常在开发人员之间开展,用眼睛检查代码是否符合编程规范。为什么有了软件测试,还要代码审查? 因为代码审查有一些独到的优点,可以弥补软件测试的不足: (1)软件测试不能发现代码风格不统一的问题,而代码审查则很容易做到; (2

8、)有经验的人可以一目十行地审查代码,很快就能抓住一些Bug(主要是常见的Bug)。 开发小组在执行代码审查之前要制定“代码审查表”,从编程规范中提取最重要的规则。 为了提高代码审查效率,检查者不必给每一个检查项填写结论,凡是正确的就跳过去,仅仅记录缺陷就行了。,组装测试(Integrated Testing),组装测试 (集成测试、联合测试) 通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。如需要考虑以下的问题: 一个模块的功能是否会对另一个模块的功能产生不利的影响 各个子功能组合起来,能否达到预期要求的父功能,通常,把模块组装成为系统的方式有两种一次性组装方式(big ba

9、ng)增殖式组装方式,组装测试(Integrated Testing),增殖式组装方式,这种组装方式又称渐增式组装 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 在组装的过程中边连接边测试,以发现连接过程中产生的问题 通过增殖逐步组装成为要求的软件系统。,组装测试(Integrated Testing),(1) 自顶向下的增殖方式,(2) 自底向上的增殖方式,(3) 混合增殖式测试,组装测试(Integrated Testing),增殖式组装方式的种类,1. 一次性组装方式 (big bang),它是一种非增殖式组装方式。也叫做整体拼装。 使用这种方式,首先对每个模块分别进

10、行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。,2. 增殖式组装方式,这种组装方式又称渐增式组装 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 在组装的过程中边连接边测试,以发现连接过程中产生的问题 通过增殖逐步组装成为要求的软件系统。,(1) 自顶向下的增殖方式,这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。,(2) 自底向上的增殖方式,这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。 因为

11、模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。,自顶向下增殖的方式和自底向上增殖的方式各有优缺点。 一般来讲,一种方式的优点是另一种方式的缺点。,(3) 混合增殖式测试,衍变的自顶向下的增殖测试首先对输入输出模块和引入新算法模块进行测试;再自底向上组装成为功能相当完整且相对独立的子系统;然后由主模块开始自顶向下进行增殖测试。,自底向上自顶向下的增殖测试首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;然后对含写操作的子系统做自顶向下的组装与测

12、试。 回归测试这种方式采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,再自底向上测试。,关键模块问题,在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。 关键模块的特征: 满足某些软件需求; 在程序的模块结构中位于较高的层次(高层控制模块); 较复杂、较易发生错误; 有明确定义的性能要求。,1、非渐增式测试 (Big-bang testing),两种方式的比较: Incremental testing 可以较早发现模块间的接口错误;Big-bang testing 最后才组装,因此错误发现得晚。 Big-bang testing 中发现错误后难以诊断定位; I

13、ncremental testing 中,出现的错误往往跟最新加入的模块有关。 Incremental testing 在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底。 Incremental testing 较 Big-bang testing 费时。 Big-bang testing 可以同时并行测试所有模块,能充分利用人力。,2、渐增式测试 (Incremental testing), Top-down testing 第1步:测试顶端模块,用存根程序(stub)代替直接附属的下层模块Stub: to simulate the activity of the compo

14、nent which is not yet tested.,3、Incremental testing 的几种策略,第2步:根据深度优先或宽度优先的策略,每次用一个实际模块代换一个stub。,第3步:在结合进一个模块的同时进行测试。,M,第4步:回归测试(regression testing)全部或部分地重复以前做过的测试。, Bottom - up testing 第1步:把低层模块组合成族,每族实现一个子功能。 第2步:用驱动程序(Driver)协调测试数据的IO,测试子功能族。,优点:在早期即对主要控制及关键的抉择进行检验。 问题:Stub只是对低层模块的模拟,测试时没有重要的数据自下往

15、上流,许多重要的测试须推迟进行,而且在早期不能充分展开人力。,Driver: to call a particular component and passes a test case to it.,第3步:去掉Driver,自下而上把子功能族合成更大的子功能族。,M,M,M,注意:两种策略的优、缺点刚好互补,但单用其中任一种都不实际,通常根据软件的特点将二者混用。,确认测试(Validation Testing),确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。 对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。

16、确认测试应交付的文档有:确认测试分析报告最终的用户手册和操作手册项目开发总结报告。,任务:验收软件的有效性(功能和性能达标)。 手段:黑盒测试;用户参与;主要用实际数据进行测试。 内容:按合同规定审查软件配置; 设计测试计划,使通过测试保证软件能满足所有功能、性能要求; 文档与程序一致,具有维护阶段所必须的细节; 严格按用户手册操作,以检查手册的完整性和正确性。,1. 进行有效性测试(黑盒测试),有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。 首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用

17、例。,通过实施预定的测试计划和测试步骤,确定软件的特性是否与需求相符;所有的文档都是正确且便于使用;同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试,在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。,2. 软件配置复查,软件配置复查的目的是保证软件配置的所有成分都齐全;各方面的质量都符合要求; 具有维护阶段所必需的细节;而且已经编排好分类

18、的目录。 应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。,验收测试(Acceptance Testing),在通过了系统的有效性测试就应开始系统的验收测试。 验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。 由用户参加设计测试用例,使用生产中的实际数据进行测试。,验收测试(Acceptance Testing),在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。 确认测试应交付的文档有:确认测试分析报告最终的用户手册和操作手册项目开发总结报告。,系统测试(System Te

19、sting),系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。 系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。,测试和测试,在软件交付使用之后,用户将如何实际使用程序,对于开发者来说是无法预测的。 测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。,测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品的界面和

20、特色。 测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。,测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开发者。 测试时,开发者通常不在测试现场。因而,测试是在开发者无法控制的环境下进行的软件现场应用。 在测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。,测试主要衡量产品的FLURPS。着重于产品的支持性,包括文档、客户培训和支持产品生产能力。 只有当测试达到一定的可靠程度时,才能开始测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此

21、阶段完全定稿。,测试种类,软件测试是由一系列不同的测试组成。主要目的是对以计算机为基础的系统进行充分的测试。 功能测试功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。,可靠性测试 如果系统需求说明书中有对可靠性的要求,则需进行可靠性测试。 平均失效间隔时间 MTBF (Mean Time Between Failures) 是否超过规定时限? 因故障而停机的时间 MTTR (Mean Time To Repairs) 在一年中应不超过多少时间。,强度测试强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如:把输入数据速

22、率提高一个数量级,确定输入功能将如何响应。设计需要占用最大存储量或其它资源的测试用例进行测试。,设计出在虚拟存储管理机制中引起“颠簸”的测试用例进行测试。设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试。 强度测试的一个变种就是敏感性测试。在程序有效数据界限内一个小范围内的一组数据可能引起极端的或不平稳的错误处理出现,或者导致极度的性能下降的情况发生。此测试用以发现可能引起这种不稳定性或不正常处理的某些数据组合。,性能测试性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。 通常,

23、对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度,等等。,恢复测试恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害 为此,可采用各种人工干预的手段,模拟硬件故障,故意造成软件出错。并由此检查:错误探测功能系统能否发现硬件失效与故障;,能否切换或启动备用的硬件;在故障发生时能否保护正在运行的作业和系统状态;在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业,等等。掉电测试:其目的是测试软件系统在发生电源中断时能否保护当时的状态且不毁坏数据,然后在电源恢复时从保留的断点处

24、重新进行操作。,启动停止测试这类测试的目的是验证在机器启动及关机阶段,软件系统正确处理的能力。这类测试包括反复启动软件系统 (例如,操作系统自举、网络的启动、应用程序的调用等)在尽可能多的情况下关机。,配置测试 这类测试是要检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。 它主要包括以下几种:配置命令测试:验证全部配置命令的可操作性(有效性);特别对最大配置和最小配置要进行测试。软件配置和硬件配置都要测试。,循环配置测试:证明对每个设备物理与逻辑的,逻辑与功能的每次循环置换配置都能正常工作。修复测试:检查每种配置状态及哪个设备是坏的。并用自动的或手工的方式进行配置状态间的转

25、换。,安全性测试安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞。 力图破坏系统的保护机构以进入系统的主要方法有以下几种:正面攻击或从侧面、背面攻击系统中易受损坏的那些部分;以系统输入为突破口,利用输入的容错性进行正面攻击;,申请和占用过多的资源压垮系统,以破坏安全措施,从而进入系统;故意使系统出错,利用系统恢复的过程,窃取用户口令及其它有用的信息;通过浏览残留在计算机各种资源中的垃圾(无用信息),以获取如口令,安全码,译码关键字等信息;浏览全局数据,期望从中找到进入系统的关键字;浏览那些逻辑上不存在,但物理上还存在的各种记录和资料等。,可使用性测试 可使用性测

26、试主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。 要保证在足够详细的程度下,用户界面便于使用;对输入量可容错、响应时间和响应方式合理可行、输出信息有意义、正确并前后一致;出错信息能够引导用户去解决问题;软件文档全面、正规、确切。,可支持性测试这类测试是要验证系统的支持策略对于公司与用户方面是否切实可行。 它所采用的方法是试运行支持过程(如对有错部分打补丁的过程,热线界面等);对其结果进行质量分析;评审诊断工具;维护过程、内部维护文档;修复一个错误所需平均最少时间。,安装测试安装测试的目的不是找软件错误,而是找安装错误。 在安装软件系统时,会有多种选择。要分配和

27、装入文件与程序库布置适用的硬件配置进行程序的联结。 而安装测试就是要找出在这些安装过程中出现的错误。,安装测试是在系统安装之后进行测试。它要检验:用户选择的一套任选方案是否相容;系统的每一部分是否都齐全;所有文件是否都已产生并确有所需要的内容;硬件的配置是否合理,等等。,过程测试 在一些大型的系统中,部分工作由软件自动完成,其它工作则需由各种人员,包括操作员,数据库管理员,终端用户等,按一定规程同计算机配合,靠人工来完成。 指定由人工完成的过程也需经过仔细的检查,这就是所谓的过程测试。,互连测试 互连测试是要验证两个或多个不同的系统之间的互连性。 兼容性测试 这类测试主要想验证软件产品在不同版

28、本之间的兼容性。有两类基本的兼容性测试:向下兼容交错兼容,容量测试 容量测试是要检验系统的能力最高能达到什么程度。例如,对于编译程序,让它处理特别长的源程序对于操作系统,让它的作业队列“满员”;对于信息检索系统,让它使用频率达到最大。在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。,文档测试这种测试是检查用户文档(如用户手册)的清晰性和精确性。 用户文档中所使用的例子必须在测试中一一试过,确保叙述正确无误。,一条测试规律,一般情况下,在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug,而系统测试又能找出其余Bug中的80%,最后的5%的Bug可能只有在用户的大范围

29、、长时间使用后才会曝露出来。因为测试只能够保证尽可能多地发现错误,无法保证能够发现所有的错误。,测试策略,测试的组织,通常,测试内部的个体分为测试人员和支持人员(管理人员属于支持人员)。测试的工作实体(最小组织单位)是测试小组和支持小组,分别由小组长全权负责。小组长向测试主管负责。,测试组织的方式与结构,测试的组织,一般地,测试小组根据测试项目或评测项目的需要临时组建,小组长也是临时指定。与项目组的最大区别是生命周期短,一般是2周到4个月。在系统测试期间或系统评测期间,测试组长负责整个测试的计划、组织工作,对内完全负责组员的工作安排、工作检查和进度管理。测试组的其他成员由具有一定的分析、设计和测试经验的专业人员组成,人数根据具体情况可多可少,一般3人为宜。,测试的组织,支持小组按照内部相关条例负责测试的后勤保障和日常管理工作,机构设置一般相对比较稳定。主要负责文档管理、测试理论和技术应用、网络管理、数据备份、设备管理和维护、员工内部培训、日常事务管理和检查等。,测试的组织,测试工程师的素质 沟通能力技术概念和能力熟悉业务的能力强的记忆力耐心强的责任心洞察力,工作运作机制测试的运作方式-制度化并形成应用建立一套规范化的测试工作流程建立一套规范化的测试文档模板建立畅通的信息共享和沟通机制,测试的组织,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报