




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《软件工程》讲稿
第二部分课程内容第八章软件测试
学习目标
:了解软件测试的基本概念和内涵;理解软件测试的作用和地位;掌握两种基本测试方法(黑盒测试和白合测试);了解测试的过程(测试原则、测试方法、测试分类、测试结束的条件等);了解调试和纠错的基本内容;掌握测试用例的设计方法;了解熟悉软件测试工具。8.1软件测试概述
一直以来软件测试都没有确切的定义,不同的研究人员在理解软件测试时又不同的侧重点,所以表达时也有所不同,但本质都是一样的那就是为了寻找软件中的错误。目前软件测试主要有三种描述:1983年,IEEE(国际电子电气工程师协会)提出的软件测试定义为:“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它能否满足规定的需求或是弄清预计结果和实际的结果直接的差异”。这里强调的是软件的实际结果与规定的需求间的一致性,以及与预期结果间的差异。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例去执行程序,以发现软件故障的过程。这里它强调寻找软件的故障。8.1软件测试概述
软件测试是一种质量保证活动,其动机就是通过一些经济有效的方法,发现软件中存在的缺陷,从而保证软件质量。这里强调的也是发现软件中存在的缺陷。软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。两种传统的测试方法分别是白盒法测试和黑盒法测试。其中白盒测试的对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。8.1软件测试概述
8.1.1黑盒测试黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部功能和结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。黑8.1软件测试概述
盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误:一是功能不正确或遗漏;二是界面错误和数据库访问错误;三是性能错误、初始化和终止错误等。从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等,下面逐一介绍。8.1软件测试概述
等价类划分法等价类划分法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒测试用例设计方法。1.划分等价类:等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据,取得较好的测试结果,等价类划分可有两种不同的类型:有效等价类和无效等价类。8.1软件测试概述
有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。无效等价类:与有效等价类的定义相反,指对于程序的规格说明来说是不合理的,无意义的输入数据构成的集合,用来验证程序的健壮性和可靠性。设计测试用例时,要同时考虑这两种等价类,因为,软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。2.划分等价类的方法:下面给出六条确定等价类的原则。①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类.8.1软件测试概述
②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类.③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类.④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类.⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则).8.1软件测试概述
⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类.3.设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类,然后从划分出的等价类中按以下三个原则设计测试用例:①为每一个等价类规定一个唯一的编号;②设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;③设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。8.1软件测试概述
边界值分析边界值分析是通过选择等价类边界的测试用例。边界值分析法不仅重视输入条件边界,而且也必须考虑输出域边界。它是对等价类划分方法的补充。1.边界值分析方法的考虑:长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部,因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用例,首先应确定边界情况,通常输入和输出等价类的边界,就是应着重测试的边界情况,应当选取正好等于,刚刚大于或刚刚小于边界的值8.1软件测试概述
作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。2.基于边界值分析方法选择测试用例的原则:(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据;(2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;(3)根据规格说明的每个输出条件,使用前面的原则1);(4)根据规格说明的每个输出条件,应用前面的原则2);8.1软件测试概述
(5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例;(6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例;(7)分析规格说明,找出其它可能的边界条件。错误推测法错误推测法是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如,在单元测试时曾列出的许多在模块中常见的错误,8.1软件测试概述
以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况,输入表格为空格或输入表格只有一行,这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。因果图法因果图法同前面介绍的等价类划分方法和边界值分析方法不太一样,前面的方法都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况,但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多,因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来8.1软件测试概述
考虑设计测试用例,这就需要利用因果图(逻辑模型)。因果图方法最终生成的是判定表.它适合于检查程序输入条件的各种组合情况。因果图生成测试用例的基本步骤如下:(1)分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予一个标识符;(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图;(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在8.1软件测试概述
因果图上用一些记号表明约束或限制条件;(4)把因果图转换为判定表;(5)把判定表的每一列拿出来作为依据,设计测试用例。前面因果图方法中已经用到了判定表,判定表(DecisionTable)是分析和表达多逻辑条件下执行不同操作的情况下的工具,在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了,由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。判定表通常由四个部分组成.条件桩(ConditionStub):列出了问题得所有条件,通常认为列出得条件的次序无关紧要。8.1软件测试概述
动作桩(ActionStub):列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。条件项(ConditionEntry):列出针对它左列条件的取值,在所有可能情况下的真假值。动作项(ActionEntry):列出在条件项的各种取值情况下应该采取的动作。规则:任何一个条件组合的特定取值及其相应要执行的操作,在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。判定表的建立步骤:(根据软件规格说明)①确定规则的个数,假如有n个条件,每个条件有两个8.1软件测试概述
取值(0,1),故有2*n种规则;②列出所有的条件桩和动作桩;③填入条件项;④填入动作项,等到初始判定表;⑤简化,合并相似规则(相同动作)。Beizer
指出了适合使用判定表设计测试用例的条件:①规格说明以判定表形式给出,或很容易转换成判定表.②条件的排列顺序不会也不影响执行哪些操作.③规则的排列顺序不会也不影响执行哪些操作.④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.8.1软件测试概述
⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.正交试验设计法,就是使用已经造好了的正交表格来安排试验并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率。黑盒测试的优点:1、基本上不用人管理,如果程序停止运行了一般就是被测试程序中断了;2、设计完测试例之后,下面的工作就相当简单了,只要按照用例检测即可。黑盒测试的缺点:1、结果取决于测试用例的设计,测试用例的设计部分8.1软件测试概述
主要来源于经验;2、没有状态转换的概念,目前一些成功的例子基本上都是针对流程来做的,还做不到针对被测试程序的状态转换来做;3、就没有状态概念的测试来说,寻找和确定造成程序出错的原因是很麻烦的,必须把周围可能的测试用例单独确认一遍,而就有状态的测试来说,就更麻烦,尤其原因不是一个单独的测试用例造成的问题,这些在堆的问题中表现的更为突出。8.1软件测试概述
8.1.2白盒测试白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是8.1软件测试概述
通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准包含语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖,它们发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次,判定覆盖每个判定的每个分支至少执行一次,条件覆盖每个判定的每个条件应取到各种可能的值,判定/条件覆盖同时8.1软件测试概述
满足判定覆盖条件覆盖,条件组合覆盖每个判定中各条件的每一种组合至少出现一次,路径覆盖使程序中每一条可能的路径至少执行一次。白盒法全面了解程序内部逻辑结构,对所有逻辑路径进行测试,白盒法是穷举路径测试。在使用这一方案时,即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序;第二,穷举路径测试不可能查出程序中因遗漏路径而出错;第三,穷举路径测试可能发现不了一些与数据相关的错误。其中运用最为广泛的是基本路径测试法,基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。8.1软件测试概述
设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下4个步骤和一个工具方法:1)程序的控制流图:描述程序控制流的一种图示方法。2)程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。3)导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。8.1软件测试概述
4)准备测试用例:确保基本路径集中的每一条路径的执行。基本路径测试法的步骤如下:第一步:画出控制流图流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。8.1软件测试概述
第二步:计算圈复杂度圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。有以下两种方法计算圈复杂度:流图中区域的数量对应于环型的复杂性;给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。最后,按照白盒测试三步法完成测试。8.1软件测试概述
白盒测试三步法是首先根据代码的功能,人工设计测试用例进行基本功能测试;然后统计白盒覆盖率,为未覆盖的白盒单位设计测试用例,实现完整的白盒覆盖,比较理想的覆盖率是实现100%语句、条件、分支、路径覆盖;最后自动生成大量的测试用例,捕捉"程序员未处理某些特殊输入"形成的错误。第1步的测试用例通常是现成的,因为详细设计文档会规定程序的基本功能,没有文档的,程序员在编程时也要想清楚程序的功能,这些基本功能就是基本测试用例;第2步是在第1步的基础上,检查未覆盖的白盒单位,由于未覆盖的逻辑单位通常对应未测试的等价类,因此第2步可以找出第1步所遗漏的测试用例;8.1软件测试概述
第3步用自动动态测试弥补第2步的固有缺陷。"三步法"尽量避免重复工作,白盒方法和黑盒方法相结合,人工方法和自动方法相补充,如果第2步的覆盖率比较理想,那么基本上可以保证找出所有等价类。在开发过程允许的限度内,"三步法"已接近极限,当得起"彻底测试"四个字。8.1软件测试概述
8.1.3黑盒测试与白盒测试比较黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照8.1软件测试概述
规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。黑盒测试与白盒测试的比较见表8.7所示:8.1软件测试概述
白盒测试技术:深入到代码一级的测试,使用这种技术发现问题最早,效果也是最好的。该技术主要的特征是测试对象进入了代码内部,根据开发人员对代码和对程序的熟悉程度,对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,在JAVA平台使用Xunit
系列工具进行测试,Xunit
测试工具是类一级的测试工具对每一个类和该类的方法进行测试。黑盒测试技术:黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面:8.1软件测试概述
正确性:计算结果,命名等方面。可用性:是否可以满足软件的需求说明。边界条件:输入部分的边界值,最大最小和非法数据等性能:正常使用的时间内系统完成一个任务需要的时间压力测试:多用户情况可以考虑使用压力测试工具,查看服务器CPU使用率,内存占用情况,如果有必要可以模拟大量数据输入,对硬盘的影响等等信息。错误恢复:错误处理,页面数据验证,包括突然间断电,输入脏数据等。安全性测试:防火墙、补丁包、杀毒软件等兼容性:不同浏览器,不同应用程序版本在实现功能时的表现不同的上网方式。8.2现代软件测试过程测试必须按照软件需求和设计阶段所制订的测试计划进行,其结果以“测试分析报告”的形式提交。到目前为止,证明软件百分之百正确是不可能的,而且进行穷举测试也是不可能的。因此,我们的测试策略是在一定的开发周期和某种经济条件下,通过有限的测试以尽可能多地发现错误。按软件工程中的40—20—40规则(编程工作占开发工作的20%,编程前---计划、需求分析、概要设计和详细设计,和编程后---测试的工作量各占开发工作的40%)。测试在整个软件的开发中必须占40%左右的工作量。各类测试在测试总工作量所占的比例根据具体项目及开发人员的配置情况而定。8.2现代软件测试过程8.2.1软件测试原则与分类1.软件测试要遵循下面几个基本原则:程序员或程序设计机构不应测试自己设计的程序;测试用例设计不仅要有确定的输入数据,而且要有确定的、详尽的预期输出数据;测试用例设计不仅要有合理的输入数据,还要有不合理的输入数据;除了检查程序是否做完了它应做的事之外,还要检查它是否做了不应做的事;保留全部测试用例,并作为软件配置的组成部分之一;程序中存在错误的概率与该段程序中已经发现的错误数成正比。8.2现代软件测试过程2.对于一套完整的软件而言,其测试分为如下的几类:
模块测试(单元测试、分调、单调);组装测试(整体测试、集成测试、联调);有效性测试(确认测试);系统(组装、集成)测试;并行测试(平行测试、双轨制运行);α测试、β测试;验收测试(接收测试):由用户完成;此外部分测试可能需要进行回归测试。8.2现代软件测试过程8.2.2软件测试方法和测试技术现在的软件测试方法和测试技术分类如下所示:8.2现代软件测试过程1.程序的静态分析检查逻辑设计和编码错误。不涉及程序的实际执行,用人工进行分析。桌前检查(DeskCheck):程序员自己检查程序效果不太理想。解决办法:互相交换程序检查。代码会审(CodeInspections):由一组人通过阅读、讨论和争议,对程序进行静态分析的过程。步行检查(Walkthroughs):预先准备测试数据,让与会者充当“计算机”一检查程序的状态。有时比真正运行程序可能发现更多的错误。8.2现代软件测试过程2.程序的动态测试在程序的测试中,十全十美的测试情况是不存在的,即任何程序的测试都是不彻底的,测试不能发现程序中的所有错误。在测试方法中,最简单的,也是最差的一种测试方法是随机输入的测试。这种将随机选择的输入值作为输入数据的测试往往检测不出较多的错误。通常,在程序的测试中采用两类方法:黑盒法和白盒法。无论是白盒法还是黑盒法,关键都是如何选择高效的测试用例(高效的测试用例是指一个用例能够覆盖尽可能多的测试情况,从而提高测试效率)。8.2现代软件测试过程8.2.3软件测试结束的标志依照测试工作量及下述标准可判定是否可以结束测试过程:1.如果测试没有发现错误,说明测试失败,则必须更换测试人员作进一步测试;2.如果有规律地出现一些严重的,需要修改设计的错误,则说明软件的质量和可靠性存在问题,必须重写相应模块,甚至整个软件;3.如果软件功能正常,发现的错误容易纠正,则说明软件的质量和可靠性可接受(不排除测试不充分的可能)。理解测试的目的是个很重要的意识问题,如果说测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个8.2现代软件测试过程目标靠拢,因而下意识地选用一些不易暴露错误的测试示例,这样的测试是虚假的。尽管已经明白了测试的目的是为了发现尽可能多的缺陷,但当测试人员真的发现了一堆缺陷时,却不可直接去接触开发者,否则会引起不必要的误会。8.2.4软件测试步骤软件测试一般可分为5个不同的阶段,即单元测试、集成测试、系统测试、并行测试和验收测试。每个阶段的测试工作都有相应的侧重点,而且由不同的人员来实施相关测试工作,在软件测试实施的过程中要把握好每个阶段应该达到的目的,掌握好相应的测试方法,按照相应的步骤来实现对软件的完整的测试工作。下面分别介绍这5个阶段相关的内容。8.2现代软件测试过程图8.7软件测试步骤8.2现代软件测试过程图8.7给出了现在软件测试的基本步骤,其中单元测试一般认为并不包括于测试阶段而是包括于编程阶段。因此单元测试计划一般由模块编写人员制定,而单元测试一般也由模块编写人员进行。1.单元测试单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。8.2现代软件测试过程单元测试的优点:(1)它是一种验证行为。(2)它是一种设计行为。(3)它是一种编写文档的行为。(4)它具有回归性。2.集成测试集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。8.2现代软件测试过程集成测试常用方案选型:自顶向下集成测试自顶向下集成(Top-DownIntegration)方式是一个递增的组装软件结构的方法。从主控模块(主程序)开始沿控制层向下移动,把模块一一组合起来。分两种方法:第一:先深度:按照结构,用一条主控制路径将所有模块组合起来;第二:先宽度:逐层组合所有下属模块,在每一层水平地沿着移动。自底向上集成测试自底向上的集成(Bottom-UpIntegration)方式是最常使用的方法。其他集成方法都或多或少地继承、吸收了8.2现代软件测试过程这种集成方式的思想。自底向上集成方式从程序模块结构中最底层的模块开始组装和测试。核心系统先行集成测试该测试法的思想是先对核心软件部件进行集成测试,在测试通过的基础上再按各外围软件部件的重要程度逐个集成到核心系统中。每次加入一个外围软件部件都产生一个产品基线,直至最后形成稳定的软件产品。核心系统先行集成测试法对应的集成过程是一个逐渐趋于闭合的螺旋形曲线,代表产品逐步定型的过程。高频集成测试高频集成测试是指同步于软件开发过程,每隔一段时间对开发团队的现有代码进行一次集成测试。如某些自动化8.2现代软件测试过程集成测试工具能实现每日深夜对开发团队的现有代码进行一次集成测试,然后将测试结果发到各开发人员的电子邮箱中。该集成测试方法频繁地将新代码加入到一个已经稳定的基线中,以免集成故障难以发现,同时控制可能出现的基线偏差。3.系统测试系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。它的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统"做得怎样"。这阶段8.2现代软件测试过程又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。8.2现代软件测试过程4.并行测试并行(运行)测试(平行测试、双轨制运行、试运行)就是同时运行新开发的系统和将被它取代的旧系统(人工系统或计算机系统),以便比较新旧两个系统的处理结果。并行(运行)测试在开发方的指导下主要由用户方承担。双轨制运行的时间长短取决于项目的类型。一般从半个月到三个月。5.验收测试该类测试经常采用实际数据进行测试,由最终用户和开发单位共同完成,以最终用户为主。验收测试作为试运行(并行测试)的最后一步,一般都只是一个形式,时间也比较短,经过验收后的软件将正式移交给用户,系统进入维护期。8.2现代软件测试过程8.2.5软件测试文档测试必须按照软件需求和设计阶段所制订的“测试计划”进行,其结果以“测试分析报告”的形式提交。与软件测试直接相关的文档主要有:“测试计划(可细化为测试计划,测试设计说明,测试用例说明和测试规格说明)”和“测试分析报告(可细化为测试项传递报告,测试日志,测试事件报告和测试总结报告)”。“测试计划”包括整个软件的组装测试和有效性测试,但不包括各模块的单元测试,编制该文档的目的是提供一个对该软件的总体测试安排,包括对每一项测试活动的详细设计规定和调度顺序,以及测试数据的整理方法和评价准则。8.3测试用例的设计8.3.1测试用例概述测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。测试用例是将软件测试的行为活动做一个科学化的组织归纳.目的是能够将软件测试的行为转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一.测试用例目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。8.3测试用例的设计下面说说测试用例、输入数据及预期输出。输入数据是测试用例的核心,对输入数据的定义是:被测试函数所读取的外部数据及这些数据的初始值。预期输出是指:返回值及被测试函数所写入的外部数据的结果值。返回值就不用说了,被测试函数进行了写操作的参数(输出参数)、成员变量、全局变量、IO媒体,它们的预期的结果值都是预期输出。一个测试用例,就是设定输入数据,运行被测试函数,然后判断实际输出是否符合预期。8.3测试用例的设计8.3.2测试用例设计原则测试用例的核心是输入数据。预期输出是依据输入数据和程序功能来确定的,也就是说,对于某一程序,输入数据确定了,预期输出也就可以确定了,至于生成/销毁被测试对象和运行测试的语句,是所有测试用例都大同小异的,因此,我们讨论测试用例时,只讨论输入数据。输入数据包括四类:参数、成员变量、全局变量、IO媒体,这四类数据中,只要所测试的程序需要执行读操作的,就要设定其初始值,其中,前两类比较常用,后两类较少用。显然,把输入数据的所有可能取值都进行测试,是不可能也是无意义的,我们应该用一定的规则选择有代表性的数据作为输入数据,主要有三种:正常输入,边界输入,非法输入
8.3测试用例的设计测试用例通常根据它们所关联关系的测试类型或测试需求来分类,而且将随类型和需求进行相应地改变。最佳方案是为每个测试需求至少编制两个测试用例:一个测试用例用于证明该需求已经满足,通常称作正面测试用例;另一个测试用例反映某个无法接受、反常或意外的条件或数据,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例。
8.3测试用例的设计8.3.3编制测试用例设计着重介绍一些编制测试用例的具体做法。1.测试用例文档编写测试用例文档应有文档模板,须符合内部的规范要求。测试用例文档将受制于测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急救护理课程说课
- 护理教学计划制定原则
- 大学生法制教育专题
- 天气预报中班课程教案
- 专题01:汉字考点串讲-2023-2024学年九年级语文上学期期末考点大串讲统编版课件共2
- 小型家用面条机设计答辩
- 器质性情感障碍护理查房
- 小班健康卫生教育
- 电教设备维修协议合同
- 石材釆购合同协议
- 期末考试-公共财政概论-章节习题
- 《飞机结构与系统》课件-机翼结构
- 运动与身体教育智慧树知到期末考试答案章节答案2024年温州大学
- 电梯维保服务考核标准及评分办法
- (正式版)JBT 3300-2024 平衡重式叉车 整机试验方法
- 2024全新校医合作协议(重点条款版)
- 小脑梗死的护理查房
- 水产养殖公司合伙人股权分配协议
- 急救医疗资源整合优化研究
- 牛津译林7A-Unit3、4单元复习
- 专题四“挺膺担当”主题团课
评论
0/150
提交评论