软件测试策略与过程

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

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

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

资源描述

第2章软件测试方法与过程第2章软件测试策略与过程软件测试的复杂性与经济性1软件测试方法2软件测试阶段3其它测试类型4主要内容软件测试流程第2章软件测试策略与过程软件质量质量特性质量子特性度量功能性适合性准确性互操作性依从性安全性可靠性成熟性容错性易恢复性可使用性易理解性易学习性易操作性效率时间特性资源特性可维护性易分析性稳定性易变更性易测试性可移植性适应性易安装性遵循性易替换性度量由使用单位自行决定ISO软件质量度量模型2.1软件测试的复杂性与经济性测试无法对程序进行完全的测试缺陷测试无法保证被测程序中无遗留错误修复不能修复所有的软件故障软件测试复杂性对待缺陷的基本原则缺陷的群集现象缺陷有免疫力缺陷关联和依赖测试结果的处理原则对缺陷进行复查和确认测试结果的全面检查出错统计和分析妥善保存测试过程文档设计,25%规格说明书,54%其他,6%代码,15%软件缺陷构成2.1软件测试的复杂性与经济性测试发现缺陷需要投入(时间和成本)经济性遗留缺陷有风险最佳的测试量2.1软件测试的复杂性与经济性软件测试应追溯到用户需求应尽早和不断地测试穷尽测试是不可能的具有良好的测试态度避免测试自己的程序增量测试测试分级测试有重点避免测试的随意性测试原则2.1软件测试的复杂性与经济性2.2软件测试方法软件测试技术静态测试代码走查动态测试技术评审代码审查黑盒测试白盒测试功能测试性能测试攻击测试回归测试语句覆盖分支覆盖路径覆盖软件测试技术分类核心:在每种测试方法、测试阶段和测试业务中,一般包括1、功能测试(黑盒、白盒)2、性能测试(黑盒、白盒)方法目标/特性单元测试系统测试验收测试性能测试强壮性测试功能测试白盒测试黑盒测试测试阶段或层次适用性测试可靠性测试集成测试安全性测试软件测试业务分类2.2软件测试方法静态测试和动态测试主持人作者记录员列席人员内审员技术专业人员用户代表不正式正式互审走读审查会议运行程序不运行程序,仅通过分析或检查等其他手段达到检测的目的。通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能2.2软件测试方法–测试分类按是否需查看代码分类黑盒测试白盒测试功能测试数据测试结构测试逻辑测试客户需求事件驱动输入输出2.2软件测试方法–测试分类黑盒测试和白盒测试功能测试结构测试客户需求事件驱动输入输出白盒测试黑盒测试测试依据程序内部结构软件规格说明优点能对程序内部的特定部位进行覆盖能站在用户立场上进行测试缺点(1)无法检测程序本身逻辑错误(2)无法对未实现规格说明的程序部分进行测试(1)不能测试程序内部特定部位(2)发现不了规格说明错误或程序超出规格说明的行为2.2软件测试方法–测试分类人工测试和自动化测试人工测试是人为测试和手工测试的统称。人为测试的主要方法有桌前检查(deskchecking),代码审查(codereview)和走查(walkthrough)。经验表明,使用这种方法能够有效地发现30%到70%的逻辑设计和编码错误。手工测试指的是在测试过程中,按测试计划一步一步执行程序,得出测试结果并进行分析的测试行为。自动化测试指的是利用测试工具来执行测试,并进行测试结果分析的测试行为。2.2软件测试方法–测试分类按测试执行时是否需人工干预分类手工测试自动测试人工测试是人为测试和手工测试的统称。人为测试的主要方法有桌前检查(deskchecking),代码审查(codereview)和走查(walkthrough)。经验表明,使用这种方法能够有效地发现30%到70%的逻辑设计和编码错误。手工测试指的是在测试过程中,按测试计划一步一步执行程序,得出测试结果并进行分析的测试行为。自动化测试指的是利用测试工具来执行测试,并进行测试结果分析的测试行为。2.2软件测试方法–测试分类自动测试和手工测试手工模拟用户操作2.2软件测试方法–测试分类2.3软件测试的阶段一单元测试什么是单元测试单元测试是对软件基本组成单元进行测试,主要是为了发现单元内部可能存在的各种错误和不足主要工作分为两个步骤:人工静态检查和动态执行跟踪一般由开发组在开发组组长监督下进行什么是单元一个函数类或类内成员函数几个函数的集合2.3软件测试的阶段单元测试误区1、单元测试是一种浪费时间的工作2、我是个很棒的程序员,我是不是可以不进行单元测试?3、集成测试能捕捉到所有的Bug4、单元测试的成本效率不高单元测试环境1、详细设计说明书2、源程序清单3、驱动模块4、桩模块一、单元测试2.3软件测试的阶段单元测试的主要任务在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。一、单元测试2.3软件测试的阶段单元测试用例设计思路为系统运行设计测试用例证明单元至少在某种正常情况下能够运行了。为正向测试设计用例验证设计说明书所对应的功能或性能指标是否实现。为逆向测试设计用例验证被测软件单元有没有做它不应该做的事情。为满足特殊需求设计测试用例验证系统性能、安全性、保密性等。为代码覆盖设计用例满足特定覆盖标准一、单元测试2.3软件测试的阶段二、集成测试什么是集成测试集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统所进行的测试集成测试关注的重点模块接口的数据交换各子功能组合起来能否达到预期要求的父功能模块间是否有不利影响全局数据结构单个模块的误差是否会累积放大2.3软件测试的阶段单元测试与集成测试区别测试对象:单元测试对象是实现具体功能的单元,一般对应详细设计中所描述的设计单元。集成测试是针对概要设计所包含的模块以及模块组合进行的测试。测试方法:单元测试所使用的主要测试方法是基于代码的白盒测试。而集成测试所使用的主要测试方法是基于功能的黑盒测试。测试时间:集成测试要晚于单元测试,所以单元测试的好坏直接影响着集成测试。测试内容:单元测试主要包括模块内程序的逻辑等方面,集成测试主要是验证各个接口、接口之间的数据传递关系、模块组合后能否达到预期效果。二、集成测试2.3软件测试的阶段集成方法大爆炸集成Bigbangintegration(allmoduletogether)自顶向下集成Topdownintegration(fromhigherlevelsnotestdriversareneeded)自底向上集成Bottomupintegration(fromlowerlevelsNoteststubsnecessary)三明治集成Sandwichtesting(combinationofbottom-upandtop-down)2.3软件测试的阶段二、集成测试大爆炸集成1.目的尽可能缩短测试时间,使用最少的测试用例验证系统。2.定义大爆炸集成也称为一次性组装或整体拼装,这种集成测试策略的做法就是把所有通过单元测试的模块一次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险。2.3软件测试的阶段二、集成测试3.具体方法举例来说,假设要对某个系统的部分功能(包括4个模块)进行测试,其功能分解如图:ABDC2.3软件测试的阶段二、集成测试UnitTestDUnitTestCUnitTestBUnitTestASystemTest(A,B,C,D)测试过程Test(A;B;C;D)TestATestBTestCTestDTests◆TestA(withstubsforBandC)◆TestB(withdriverforAandstubforD)◆TestC(withdriverforA)◆TestD(withdriverforB)◆Test(A;B;C;D)ABDC2.3软件测试的阶段二、集成测试4.优点(1)可以并行测试所有模块。(2)需要的测试用例数目少。(3)测试方法简单、易行。5.缺点(1)由于不可避免存在模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不大。(2)如果一次集成的模块数量多,集成测试后可能会出现大量的错误。另外,修改了一处错误之后,很可能新增更多的新错误,新旧错误混杂,给程序的错误定位与修改带来很大的麻烦。(3)即使集成测试通过,也会遗漏很多错误。2.3软件测试的阶段二、集成测试6.适用范围(1)只需要修改或增加少数几个模块的前期产品稳定的项目;(2)功能少,模块数量不多,程序逻辑简单,并且每个组件都已经过充分单元测试的小型项目;(3)基于严格的净室软件工程(由IBM公司开创的开发接近零缺陷的软件的成功做法)开发的产品,并且在每个开发阶段,产品质量和单元测试质量都相当高的产品。2.3软件测试的阶段二、集成测试自顶向下集成自顶向下的集成测试就是按照系统层次结构图,以主程序模块为中心,从顶层控制(主控模块)开始,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试。采用同设计顺序一样的思路对被测系统进行测试,来验证系统的稳定性。2.3软件测试的阶段二、集成测试Top-downIntegrationTestingABCDGFELayerILayerIILayerIIITestATestA,B,C,D,E,F,GTestA,B,C,DLayerILayerI+IIAllLayers2.3软件测试的阶段二、集成测试自底向上集成1.定义自底向上集成是从系统层次结构图的最底层模块开始按照层次结构图,逐层向上进行组装和集成测试的方式。2.方法.从最底层的模块开始组装;.编制驱动程序,协调测试用例的输入与输出;.测试集成后的构件;.使用实际模块代替驱动程序,按程序结构向上组装测试后的构件;.重复上面的第二步,直到系统的最顶层模块被加入到系统中为止。2.3软件测试的阶段二、集成测试Bottom-upIntegrationABCDGFELayerILayerIILayerIIITestD,GTestFTestETestGTestCTestA,B,C,D,E,F,GTestB,E,F2.3软件测试的阶段二、集成测试三明治集成(混合集成)1.目的综合利用自顶向下和自底向上两种集成测试策略的优点2.定义三明治集成是一种混合增殖式测试策略,综合了自顶向下和自底向上两种集成方法,把系统划分成三层,中间一层为目标层,目标层上采用自顶向下集成,目标层下采用自底向上集成。2.3软件测试的阶段二、集成测试SandwichTestingStrategyABCDGFELayerILayerIILayerIIITestD,GTestFTestETestGTestATestA,B,C,D,E,F,GTestB,E,FBottomLayerTestsTopLayerTestsTestBTestDTestCTestA,B,C,D2.3软件测试的阶段二、集成测试三、系统测试什么是系统测试系统测试是将集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据等其它系统元素结合在一起,在实际运行(使用)环境下所进行的一系列测试活动。系统测试的目的通过与系统的需求定义比较,检查软件是否存在与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求。2.3软件测试的阶段系统测试方法强度测试性能测试恢复测试安全测试可靠性测试安装测试容量测试文档测试2.3软件测试的阶段压力测试?测试系统的性能和负载能力指标三、系统测试强度测试(压力测试)强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如:把输入数据速率提高一个数量级,确定输入功能将如何响应。设计需要占用最大存储量或其它资源的测试用例进行测试。2.3软件测试的阶段三、系统测试性能测试性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。性能测

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

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

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

×
保存成功