课件软件工程第7章软件测试_第1页
课件软件工程第7章软件测试_第2页
课件软件工程第7章软件测试_第3页
课件软件工程第7章软件测试_第4页
课件软件工程第7章软件测试_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 软件测试 软件测试是在软件投入运行之前,对软件的需求分析、设计规格说明和编码的最后复审。 由于软件开发的各个阶段均包含了大量的人的创造性劳动,不可避免地会引入错误,尤其是大型、复杂的软件系统。软件测试的概念和意义什么是软件测试: 软件测试的定义:软件测试是为了发现错误而运行程序的过程。是根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。软件测试的概念和意义软件测试在软件生命期中,跨越两个阶段。 编写每一个模块后,进行单元测试。通常模块的编写者和测试者是同一个人。 每一个模块完成单元测试后,对软件进行各种综合测试。由专门的测试人

2、员完成。软件测试的概念和意义作用发现软件中的错误提高正确性、可靠性、质量工作量工作量占开发阶段的40%以上,甚至是其他开发阶段的35倍以上定义执行程序、排除的错误的过程;是对软件规格说明、设计和编码的最全面最后的审查软件测试的概念和意义 目前软件开发结构,将研制力量的40%以上投入到软件测试之中。 几个典型系统中软件测试的费用 系统名称 测试费用占软件开发预算的比例 SAGE 47% NAVAL TACTICAL 50% DATA SYSTEM GENINI 47% S ATURN V 44%软件测试的目标和原则软件测试的目的: 1、软件测试是为了发现错误而运行程序的过程。 2、一个好的测试用

3、例能够发现至今尚未发现的错误。 3、一个成功的测试是发现了至今尚未发现的错误的测试。E. W. Dijkstra 指出:“程序测试能证明错误的存在,但不能证明错误不存在。软件测试的目标和原则软件测试的原则:(1)应当把“尽早地和不断地测试”作为开发者的座右铭(2)软件测试工作应该由独立的专业的软件测试机构来完成,避免自测。(3)测试工作要全面,输入的数据,合理不合理都要选。但不可能实现“穷举”。例如,一个程序需要输入两个整型变量A、B,和一个输出变量C。如果机器字长为32位,则每一个输入数据的可能取值为232个,两个输人数据的所有组合共有: 232 232 264种。也就是说,要达到穷尽测试,

4、此程序要执行大约264次。假如每执行一次程序需要1毫秒,完成该测试大约需要五亿年!而且上述程序测试只是针对有效的输入数据进行的。为了保证测试能发现程序中的所有错误,穷举测试不还应对无效的输入数据进行测试。 软件测试的目标和原则(4)把Pareto原理应用到软件测试中。即对发现错误较多的程序段,应进行更深入的测试。经验表明,测试发现的错误中有80%的错误很可能是由20%的程序模块造成的,这是一种错误群集性现象,称为Pareto原理(5)妥善保存一切测试过程文档,作用是不言而喻的,测试的重现性往往要靠测试文档。(6)不要希望在极短的时间内完成一个高水平的测试。(7)错误经过修改后,相关的测试必不可

5、少。软件测试的范围软件测试的对象: 软件测试不等于程序测试,对软件定义与开发的整个期间所得到的各种文档资料,都是测试对象,包括需求规格说明、概要设计规格说明、详细设计规格说明、源程序等。软件测试的工作软件测试过程中的信息: 测试过程需要三类信息: 1、软件配置:包括需求规格说明、软件设计规格说明、源程序等; 2、测试配置:包括测试方案、测试用例、测试驱动程序等; 3、测试工具:计算机辅助测试的有关工具。如测试数据自动生成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。 软件测试的工作软件测试信息流: 测试结果分析可靠性分析排错软件配置测试配置测试工具测试结果预期结果错

6、误出错率数据改正的软件预测的可靠性软件测试的工作软件测试工作包括: 确认工作:是一系列的活动和过程,其目的是证实在一个给定的外部环境中,软件的逻辑正确性。它包括需求规格说明的确认和程序的确认。而程序的确认又分为: 静态测试分为两大类: 动态测试黑盒测试白盒测试软件测试的工作静态测试采用人工检测和计算机辅助静态分析的方法对程序进行检测2种方法动态测试事先设计好一组测试用例,然后通过运行程序来发现错误软件测试的工作静态: 静态测试指被测程序不在机器上运行,而采用人工检测和计算机辅助静态检测的手段对程序进行测试。 1、人工检测:人工审查程序或评审软件。人工审查程序偏重于编码质量的检验,而人工评审软件

7、除了审查编码还要对各阶段的软件产品进行检验。人工检测可以发现计算机不易发现的错误,据统计人工检测可发现30%70%的逻辑设计和编码错误,从而减少系统测试的总工作量。 2、计算机辅助静态检测:利用静态检测工具对程序进行测试。 软件测试的工作动态: 动态测试是通过运行程序发现错误。 一般意义上的测试都是动态测试。为使测试发现尽可能多的错误,动态测试时需采用一些有效的方法。一般有两种方法:一是测试产品的功能,二是测试产品的内部结构和处理程。分别称为黑盒测试和白盒测试。 软件测试方法一般有两种方法,黑盒法和白盒法。(1)黑盒测试B1ackbox testing)黑盒测试着眼于程序的外部特征,而不考虑程

8、序的内部结构。测试时、测试者把被测程序看作是一个黑盒,仅以程序的功能为依据,看其是否满足功能要求。因为黑盒测试着重于检查程序的功能,所以又叫功能测试。黑盒测试的内容包括:是否符合功能要求;输入数据是否能被正确地接收;输出结果是否正确;外部信息(如数据文件)是否能保证完整性等。(2) 白盒测试(Whitebox testing) 白盒测试着眼于程序的内部结构。测试者对程序的内部逻辑与处理过程了如指掌,并依据程序的逻辑结构,对程序的所有逻辑路径进行测试,确定其实际状态与预期的状态是否一致。 出于被测程序的结构对测试者来说是透明的,因此这类测试又叫结构测试或玻璃盒测试 软件测试常常采用“白盒测试”和

9、“黑盒测试两种方法,其中关键的技术是如何设计测试用例,以便用最小的代价达到测试目的。 测试用例就是测试时所选用的例子,通常把一次程序执行需要的测试数据称为一个测试用例。一个程序所需要的测试用例可以定义为:测试用例测试数据期望结果这里花括号表示重复。表明一个程序要使用多个测试用例。每一个测试用例都应该包括一组测试数据和一个相应的期望结果。而测试结果可以表示为测试结果测试数据期望结果实际结果可见,测试用例的设计是软件测试的中心内容,是搞好软件测试的关键。 黑盒测试边界值分析、错误推测、组合数据测试黑盒测试等价类划分 白盒测试循环测试白盒测试基本路径 白盒测试逻辑覆盖 软件测试方法 白盒测试是以程序

10、的结构为依据而进行的测试。可以参考以下一些基本的测试原则。1)、保证程序模块中每一个独立的路径至少测试一次;2)、保证所有判断的每一个分支至少测试一次;3)、保证每一个循环都在边界条件和一般条件下至少测试一次;4)、测试所有内部数据结构的有效性。软件测试方法白盒测试软件测试方法白盒测试 白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部结构为基础,设计测试用例。白盒测试有着重于程序流程图中各个判定框的逻辑覆盖法,有着重于循环的循环覆盖,有着重于程序执行路径的路径覆盖。所谓覆盖,就是使程序执行一次。 1、逻辑覆盖: 逻辑覆盖测试重点考察的是程序流程图中的判定框(菱形框)。从覆盖源程序语

11、句的详尽程度分析,逻辑覆盖测试大致有以下一些不同的覆盖标准。为便于理解,使用如下所示的程序,下图所示的是其流程图。变量A、B、X是需要输入的测试数据。 如右图:一个被测程序的流程图。图1 参考例子流程图(1)语句覆盖 为了暴露程序中的错误,程序中的每条语句至少应该执行一次。所以,语句覆盖的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。为了使每个语句都执行一次,图16.5中程序的执行路径应该是sacbed,为此只需要输入下面的测试数据(实际上x可以是任意实数): A2,B0,X4 软件测试方法白盒测试程序按流程图上的路径sacbed或1-4-5-6-1执行,该程序段的4个语句均

12、得到了执行,从而达到了语句覆盖。语句覆盖对程序的逻辑覆盖很少,在上面例子中两个判定条件都只测试了条件为真的情况,如果条件为假时处理有错误,显然不能发现。此外,语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。 在上面的例子中,为了执行sacbed路径,以测试每个语句,只需两个判定表达式(A1)AND(B0)和(A2)OR(x1)都取真值,因此使用上述一组测试数据就够了。但是,如果程序中把第一个判定表达式中的逻辑运算符“AND”错写成“OR”,或把第二个判定表达式中的条件“xl”误写成“xl,使用上面的测试数据并不能查出这些错误。综上所述,可以看出语句覆盖是很弱的

13、逻辑覆盖标准,为了更充分地测试程序采用下述的逻辑覆盖标准。 软件测试方法白盒测试(2) 判定覆盖比语句覆盖稍强的覆盖标准是判定覆盖。按判定覆盖准则进行测试是指,设计足够的测试用例,运行被测程序,使得程序中每个判断至少都获得一次“真”值和“假”值,或者说,使得程序中的每一个取“真”分支和取“假”分支至少经历一次,即判断的真假值均曾被满足。判定覆盖又称为分支覆盖软件测试方法白盒测试对于上述例子来说,能够分别覆盖路径sacbed(a框真,b框真)和sabd(a框假,b框假)的两组测试数据,或者可以分别覆盖路径sacbd(a框真,b框假)和sabed(a框假,b框真)的两组测试数据,都满足判定覆盖标准

14、。例如,用下面两组测试数据就可做到判定覆盖: 1) A2,B0,x3 (覆盖sacbed,a框真,b框真) 2) A1,B0,X1 (覆盖sabd,a框假,b框假)软件测试方法白盒测试上述两组测试用例都不仅满足了“判定覆盖”,同时也满足了“语句覆盖”。从这一点上看,判定覆盖比语句覆盖强。但是如果程序段中的第2个判定条件X1错写成了X1 AND B=0),判定包含了两个条件:A1及B=0。一个更强的覆盖标准是“条件覆盖”。 条件覆盖的含义是:设计若干测试用例,执行被测程序后,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。软件测试方法白盒测试例子中共有两个判定表达式,每个表达式中有两个条件

15、,为了做到条件覆盖,应该选取测试数据使得在a框有下述各种结果出现: A1的条件:条件为真( A1 ) 条件为假( A1 ) B0的条件:条件为真( B0 ) 条件为假(B0)在b框有下述各种结果出现: A2的条件:条件为真( A2 ) 条件为假(A2) X1的条件:条件为真( X1) 条件为假(X1)软件测试方法白盒测试只需要使用下面两组测试数据就可以达到上述覆盖标准(把4个条件的8种情况均作了覆盖): 1) A2,B0,X3(满足A1,B0,A2和X1的条件,执行路径sacbed,a框真,b框真) 2) Al,B1,X1(满足A1,B0,A2和xl的条件,执行路径sabd,a框假,b框假)

16、软件测试方法白盒测试一般来讲,条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,而判定覆盖却只关心整个判定表达式的值。比如上面两组测试用例,满足了条件覆盖,也同时满足了判定覆盖标准(a框取真假一次,b框取真假一次)。虽然如此,但上面的两组测试用例也只覆盖了程序全部路径的一半(缺a真b假,a假b真)。 软件测试方法白盒测试上述两个测试用例在覆盖4个条件的8种情况的同时,把两个判定的4个分支4、2和6、3也覆盖了。那么是否可以说,达到了条件覆盖,也就必然实现了判定覆盖呢?软件测试方法白盒测试事实上,也可能有相反的情况:虽然每个条件都取到了两个不同的结果,判定表达式却始终

17、只取一个值。例如,如果使用下面两组测试数据,则只满足条件覆盖标准并不满足判定理盖标准(第二个判定表达式的值总为真): 测试用例(1):A2,B0,X1(满足 A1,真B0,真 A2,真 X l,假的条件,执行路径sacbed,a框真,b框真) 软件测试方法白盒测试 测试 用例(2):A1,B1,X2(满足 A1,(A1, 假) B0,( B0, 假) A2,( A2 ,假) X1,( X1 ,真)的条件,执行路径sabed,a框假,b框真。每个条件的真、假值都取到了,满足条件覆盖,但并不满足判定理盖标准:第二个判定表达式的值总为真,遗漏了分支3。可见,条件覆盖比判定覆盖也强不了多少,还需要对条

18、件和分支兼顾覆盖。软件测试方法白盒测试(4) 条件判定组合覆盖既然判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,自然会提出一种能同时满足这两种覆盖标准的逻辑覆盖,这就是判定条件覆盖。 条件判定组合覆盖的含义是:设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次软件测试方法白盒测试对于例子而言,下述两组测试数据满足判定条件覆盖标准 1)A2,B=0,x3(满足A1,B0,A2和x1的条件,执行路径sacbed,a框真,b框真) 2)A1,Bl,xl(满足A1,B0,A2和xl的条件,执行路径sabd,a框假,b框

19、假)但是,这两组测试数据也就是为了满足条件覆盖标准最初选取的两组数据(测试用例1和测试用例5),因此,有时判定条件覆盖也并不比条件覆盖更强。软件测试方法白盒测试软件测试方法白盒测试条件组合覆盖(Condition Coverage)是设计足够的测试用例,使得每个判定表达式中条件的各种可能组合都至少出现一次。条件组合覆盖率的公式如下:条件组合覆盖率(条件组合被评价的数量)/(条件组合的总数)还是以本程序为例。程序中两个判定中有4个条件:A1,B0,A2,X1,综合起来共有8种组合: Al,BO; Al,BO; A1,BO; A1,B0; A2,X1; A2,X1; A2,X1; A2,X1。 (

20、5) 条件组合覆盖1)A2,B0,x3 (针对l,5两种组合,执行路径sacbed,a框真,b框真)2)A2,B1,x1 (针对2,6两种组合,执行路径sabed,a框假,b框真)3)Al,B0,x3 (针对3,7两种组合,执行路径sabed,a框假,b框真)4)Al,Bl,xl (针对4,8两种组合,执行路径sabd,a框假,b框假)软件测试方法白盒测试显然,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定条件覆盖标准。因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到,例如,上述四组测试数据都没有测试到路

21、径sacbd(a框真,b框假)。因此,要使程序中的每一条路径都得到检验,才能说程序受到了全面的检验。如此,还要用基本路径测试覆盖软件测试方法白盒测试六种覆盖的比较: 语句覆盖 每条语句至少执行一次 判定覆盖 每个判定的每个分支至少执行一次条件覆盖 每个判定的每个条件应取到各种可能的值判定/条件覆盖 同时满足判定覆盖和条件覆盖条件组合覆盖 每个判定中各条件的每一种组合至少出现一次路径覆盖 使程序中每一条可能的路径至少执行一次发现错误能力强力弱力软件测试方法白盒测试河北工业大学廊坊分院计算机系42基本路径测试的基本思想是,以软件过程性描述为基础(例如,程序流程图或源代码),通过分析它的控制流程计算

22、复杂度,导出基本路径集合,并设计一组测试用例,确保程序中的每个语句至少执行一次,每一条路径都通过一次。 基本路径测试的主要步骤是:首先根据详细设计或源程序代码导出控制流图,然后计算环路复杂性,接着参照环路复杂性确定线性独立的基本路径集,最后依据所需覆盖的路径集设计合适的测试用例。2、基本路径测试软件测试方法白盒测试画出程序的控制流图 计算程序环路复杂度 确定独立路径的基本集合 设计测试用例软件测试方法白盒测试河北工业大学廊坊分院计算机系44所谓独立路径,是指包括若干未曾处理的语句或条件的一条路径。独立路径 至少包含一条在本次定义路径之前不曾用到的边。进行程序的基本路径测试时,程序的环路复杂性给

23、出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。独立路径集合就是基本路径集。 基本路径集不是惟一的,对于给定的控制流图,可以得到不同的基本路径集。软件测试方法白盒测试河北工业大学廊坊分院计算机系45 (1)导出程序流程图的拓扑结构 控制流图是描述程序控制流的一种图示方式。其中基本的控制结构对应的图形符号如图16-2所示。在图16-2所示的图形符号中,圆圈称为控制流图的一个结点,它表示一个或多个无分支的语句或源程序语句。软件测试方法白盒测试河北工业大学廊坊分院计算机系46图16-2 控制流图的图形符号 软件测试方法白盒测试河北工业大学廊坊

24、分院计算机系47所谓控制图可以看成是“退化了的”程序流程图,也就是把程序流程图中每个处理符号都退化成一个点(或小圆圈),原来连接不同处理符号的箭头变成连接不同点的有向弧(称为边或路径),这样得到的有向图就称为控制图。控制图仅仅描绘程序内部的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件 图16-3(a)所示的是一个程序的流程图,它可以映射成图(b)所示的控制流图。 软件测试方法白盒测试河北工业大学廊坊分院计算机系48图16-3 程序流程图和对应的控制流图 河北工业大学廊坊分院计算机系49图8-10 复合条件增加谓词结点对于含有复合条件的判定框,要增加结点进行分解入口A1出口B=0

25、A=2X1X=X/AX=X+1FFFFTTTT123798456对于前面的例子,复合判定条件改成单一条件判定后得到程序流程图及其对应的程序图(2)计算程序环路复杂性通常环路复杂性可用以下3 种方法求得。 环形复杂度等于程序图在平面上围成的区域的个数加1。上图4个区域,因此V(G)5。 设E为控制流图的边数,N为图的结点数,则定义环路的复杂性为V(G)=EN+2。上图中节点数为9,弧数为l 2,因此环形复杂度为 V(G)5 若设P为控制流图中的判定结点数(每个判定都是单一条件的),则有V(G)=P+1。上图中判定结点数P4,故V(G)=P+15(3)确定基本路径集上例中,由于环路复杂度为5,故基

26、本路径数有5条。每条路径都包含一条新的边。5条基本路径如下:Path1:1-2-4-5-6-7Path2:1-2-3-4-5-6-7Path3:1-2-3-8-4-5-6-7Path4:1-2-3-8-4-5-9-7Path5:1-2-3-8-4-5-6-9-7注意,基本路径集并不是唯一的。(4)生成测试用例 基本路径覆盖的含义是选取足够的测试数据,使程序中的每条可能路径都至少执行一次。如果程序图中有回路,则要求每个回路至少执行一次。对于图中的例子,共有5条可能的执行路径,输入以下测试数据可以遍历程序所有路径,实现路径覆盖。Path1: 输入 A=1,B=0,X=1 预期结果:X=1Path2

27、: 输入 A=3,B=1,X=1 预期结果:X=1Path3: 输入 A=3,B=0,X=3 预期结果:X=1Path4: 输入 A=2,B=0,X=2 预期结果:X=2Path5: 输入 A=3,B=0,X=6 预期结果:X=33、循环测试 根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三种 1)简单循环简单循环可依据以下顺序分别设计测试用例进行测试:零次循环:从循环入口到出口;一次循环:检查循环初始值;二次循环:检查2次循环;m次循环:检查m次循环,其中m小于最大次数减1;进行最大次数循环、比最大次数多一次、少一次的循环。软件测试方法白盒测试(3)循环测试 根据循环的复杂性,可分为简

28、单循环、嵌套循环和串接循环三种 2)嵌套循环使用B.Beizer提出的测试方法,可以减少测试数目:对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值;逐步外推,对其外面一层循环进行测试。测试时保持当前层的所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值,同时考虑增加越界值和非法值的测试。反复进行,直到所有各层循环测试完毕。软件测试方法白盒测试2、控制结构测试(3)循环测试 根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三种 :3)串接循环 如果各个循环互相独立,则可以用与简单循环相同的方法进行测试。但如果几个循环不是互相独立的,第二个循环的执行与第

29、一个循环的某个值有关,则需要使用测试嵌套循环的办法来处理。软件测试方法白盒测试黑盒测试法 “黑盒”测的是功能,它检查的内容只包括程序功能是否能按照规格说明书的内容正常使用,程序是否接收输入数据产生正确的输出信息 方法有:等价类划分法、边界值分析法和错误推测法 1、等价类划分: 等价类:指某个输入域的子集合,在该集合中,各个输入数据对暴露程序中的错误是等效的。即如果使用某个等价类中的一个输入条件,作为测试数据检测出了错误,则用这一等价类中的其它数据进行测试会发现同样的错误,反之亦然。 软件测试方法黑盒测试黑盒测试法1、等价类划分: 等价类划分的含义:将输入数据域按有效的或无效的(或称合理的或不合

30、理的)划分成若干类,通过测试每个类的代表值,进行测试。如果某个等价类中任选一个测试用例,未发现程序错误,则该类中的其他测试用例,也不会发现程序错误。这样用少量有代表性的例子可代替大量测试目的相同的例子,有效地提高测试效率。 步骤: 划分等价类 有效等价类:对程序规格来说是正确的,有意义的数据; 无效等价类:对程序规格来说是错误的,无意义的数据。 软件测试方法黑盒测试黑盒测试法1、等价类划分:确定测试用例 ,选取的原则: 1)为每个等价类规定一个唯一的编号; 2)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复此步骤,直到所有的有效等价类均被覆盖为止; 3)设计一个测试用例,使其

31、尽可能多的覆盖尚未被覆盖的无效等价类,重复此步骤,直到所有的无效等价类均被覆盖为止; 软件测试方法黑盒测试黑盒测试法2、边界值分析: 边界值分析也是一种黑盒测试法,是对等价类划分法的补充。 实践经验表明,程序往往在处理边界情况时发生错误。边界情况指输入等价类、输出等价类边界上的情况。检查边界情况的测试用例是比较高效的,可以查出更多的错误。 选取刚好等于、刚好大于、刚好小于边界的值作为测试用例。 软件测试方法黑盒测试黑盒测试法3、错误推测: 错误推测法的基本思想:是列举出程序中可能有的错误和容易发生错误的特殊情况,并根据它们选择测试方案。 有经验的程序员通常可根据程序的特点和功能选择测试数据,这

32、些数据可能导致程序出现错误。软件测试方法黑盒测试12.1.4 软件测试的步骤软件测试的步骤图8-3 测试与开发前期工作的关系复 习: 软 件 开 发 过 程一一对应 计 划 & 实 施单元测试组装测试验收测试详细设计概要设计需求分析软件测试步骤软件测试策略: 测试过程分为4个步骤: 单元测试 组装测试 确认测试 系统测试单元测试单元测试单元测试被测模块被测模块被测模块组装测试设计信息确认测试系统测试已集成的软件已确认的软件可交付的软件软件需求系统其它元素已测试模块软件测试步骤1、单元测试 单元测试也称模块测试,是针对软件设计的最小单元程序模块进行测试的工作。目的是发现模块内部的错误。单元测试主

33、要从以下五个方面进行。 (1)模块接口测试(2)局部数据结构测试(3)路径测试(4)程序异常测试(5)边界条件测试软件测试步骤2、集成测试 集成测试也称组装测试,它的任务是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。 (1)一次性组装方式 一次性组装方式的基本思想是首先分别测试每个模块,然后将所有模块全部组装起来进行测试,形成最终的软件系统。 缺点: 一次将所有模块组装后的程序会很庞大,各模块之间相互影响,情况十分复杂 在测试过程中会同时出现很多错误,对这些错误的定位难度增大,修改的过程中可能又会引发其它错误或激发其它潜在的错误 测试工作十分的漫长。 软件

34、测试步骤(2)增殖式组装方式 增殖式组装方式是采用循序渐进的方式,每次增加一个模块到已测试好的模块中 1)自顶向下增殖方式具体的实施步骤如下: 先测试主控制模块,测试时使用存根模块代替所有直接附属主控制模块的功能模块; 用某种结合策略,用实际模块代替相应的存根模块; 对结合后的模块进行测试; 为了保证加入的模块没有引进新的错误,需要进行回归测试 重复操作2、3、4步,完成集成测试。 软件测试步骤2、集成测试(2)增殖式组装方式 2)自底向上增殖方式具体的结合策略如下: 将低层模块组合成实现某个子功能的簇; 写一个驱动程序,用来提供该功能簇的执行入口和输入/输出界面; 对该功能簇进行测试; 在低

35、层继续寻找模块,将该功能簇扩大,重新修改驱动程序,以适应对当前功能簇的测试。 不断重复第3、4步,完成测试。 软件测试步骤2、集成测试 (3)混合增殖式测试 自顶向下增殖方式和自底向上增殖方式各有优缺点,在实际的测试过程中,可根据具体情况将两种方法结合起来使用。 1)改进的自顶向下的增殖测试:它的基本思想是对涉及输入输出模块和复杂算法的模块先采用自底向上的测试方法,将这些模块组装成为功能相对完整且相对独立的子系统,然后由主模块开始自顶向下进行增殖测试。 2)混合测试法:它首先对软件结构中较底层的模块自底向上组装测试,然后对软件结构中较上层的模块采用自顶向下的方法进行组装与测试。软件测试步骤3、确认测试 确认测试也称有效性测试,目的是验证软件的有效性,即验证软件的功能和性能及其它特性是否符合用户要求 。确认测试是软件交付使用前一项很重要的活动,它最终决定用户对该软件的认可程度。测试和测试 测试是邀请用户参加,在开发场地进行的测试,由开发组成员或用户实际操作运行,对测试过程中出现的问题,由开发者记录下来,作为修改的依据。 它的最大特点是整个测试过程是在受控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论