软件测试基础课件.ppt
《软件测试基础课件.ppt》由会员分享,可在线阅读,更多相关《软件测试基础课件.ppt(142页珍藏版)》请在三一办公上搜索。
1、1,第二章 软件测试基础,2,本章要点 软件测试基础知识;白盒测试和黑盒测试的定义;常见的白盒和黑盒测试设计技术;白盒测试与黑盒测试的区别;测试计划和测试报告的编制;测试用例的定义和编制方法。,3,本章目标理解并掌握白盒测试和黑盒测试,以及二者的优缺点和各自的应用范围;能够熟练使用几种常见测试用例设计技术;了解测试计划和测试文档的作用,以及应该包含的内容和制定方法;了解测试报告的基本内容,以及测试用例的基本内容和编制方法。,4,经过改进的程序图定义:节点要么是整个语句,要么是语句的一部分,边表示控制流(从节点i到节点j有一条边,当且仅当对应节点j的语句或语句的一部分,可以立即在节点i对应的语句
2、或语句的一部分之后执行)。程序的有向图公式化能够非常准确地描述程序的测试方面的问题。基本结构化程序设计的构造,例如:串行、选择和循环等可以用如图 2-1所示的有向图表示。,5,图2-1 结构化程序设计构造的有向图,6,2.2白盒测试 白盒测试是一种可视的测试软件的方法,即它把测试对象看作一个透明的盒子,测试人员要了解程序结构和处理过程,按照程序内部逻辑测试程序,检查程序中的每条通路是否按照预定要求正确工作。白盒测试的过程如图2-7所示:,图2-7 白盒测试过程示意图,7,那么,在对被测软件进行白盒测试时,主要对程序进行哪些方面的检查呢?有如下几点:()保证一个模块中的所有独立执行路径至少测试一
3、次;()对所有逻辑判定取值“true”和“false”的两种情况都至少测试一次;()在循环边界和运行界限内执行循环体;()测试内部数据结构的有效性。在软件测试领域,有六种基本的测试类型:单元测试,集成测试,功能测试/系统测试,可接受性测试,回归测试和Beta测试。白盒测试可以用在其中的三种测试类型中:1、单元测试,8,2、集成测试 3、回归测试 2.2.1白盒测试与调试的异同 白盒测试和调试有哪些不同点呢?1、从承担的任务来看,白盒测试同其他类型测试一样,它的任务是发现所开发的项目中的缺陷;但是,调试不属于测试,其任务是纠正软件中的缺陷。2、从最终的结果来看,白盒测试有预知的结果,不可预知的只
4、是程序是否通过测试,并且成功测试的结果是发现错误的症状,从而引起调试的进行;而调试的结果是消除项目中的错误。,9,3、从执行的过程来看,测试是一个发现错误、改正错误、重新测试的过程;而调试是一个推理过程。4、从准备工作来看,测试从已知的条件开始,使用预先定义的程序;调试一般是以不可知的内部条件开始,做统一性调试。5、从执行的计划性来看,测试是有计划的并要进行测试设计;而调试则不受时间约束。6、从执行的人员来看,测试经常是由独立的测试组在不了解软件设计的条件下完成的,而调试必须由程序员来完成。,10,7、从所使用的工具来看,大多数白盒测试的执行和设计可有工具支持,而调试程序员能利用的工具主要是调
5、试器。2.2.2白盒测试的用例设计 白盒测试用例设计技术就是研究如何用最少的测试用例最大限度地发现软件中的错误,目前主要有基本路径测试、等价类划分/边界值分析测试、覆盖测试、循环测试、数据流测试、程序插桩测试、变异测试等等方法。下面主要对几种常见的方法加以介绍:一、基本路径测试 二、等价类划分/边界值分析(Equivalence partitioning/boundary value analysis),11,三、控制流/覆盖测试(Control-flow/Coverage Testing)方法覆盖 方法覆盖可用于衡量测试用例所覆盖的方法的百分比。语句覆盖(Statement Coverage
6、)语句覆盖是一种衡量测试所覆盖的程序语句百分比的措施。通过测试应该达到100%程序语句覆盖的目标,可以标识圈数,然后执行最少的一组测试用例就可以达到语句覆盖的目标。判断/分支覆盖 判断/分支覆盖是为了衡量在测试过程中覆盖了多少个程序中的布尔表达式。,12,图2-11 各种循环图,四、循环测试是一种白盒测试技术,注重于循环构造的有效性。n 循环结构测试用例的设计循环可以划分为以下几种模式,如图2-11:,13,可以使用如下方法设计循环测试用例:一、简单循环:二、嵌套循环:三、串接循环:四、无结构循环:五、数据流测试:六、程序插装:程序插装(Program Instrumentation)是指在程
7、序中设置断点或打印语句,在执行过程中了解程序的一些动态特性。,14,七、变异测试 变异测试(Mutation Testing)的提出始于70年代末期,是一种错误驱动测试,即针对某类特定程序错误而进行的测试,也是一种比较成熟的排错性测试方法(排错性测试方法的基本思想是通过检验测试数据集的排错能力来判断软件测试的充分性)。,15,逻辑覆盖,语句覆盖 判定覆盖 条件覆盖,判定条件覆盖 条件组合覆盖 路径覆盖,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。,16,语句覆盖(Statement coverage):每个语句至少执行一次。,例:,问题:若AND错写为OR,或X1错
8、写为X1,则错误无法由上例测出。,Test case:A=2,B=0,X=4.,17,判定覆盖(Branch coverage):在的基础上,每个判定的每个分支至少执行一次。,Test cases:A=3,B=0,X=3A=2,B=1,X=1,问题:若X1错写为X1,仍然无法被测出。,18,条件覆盖(Condition coverage):在的基础上,使每个判定表达式的每个条件都取到各种可能的结果。,Test cases:A=2,B=0,X=4(满足A1,B=0;A=2,X1)A=1,B=1,X=1(满足A1,B0;A 2,X1),问:条件覆盖?判定覆盖,答:不一定。反例:A=2,B=0,X=
9、1 A=1,B=1,X=2,判定/条件覆盖:即判定覆盖条件覆盖,19,条件组合覆盖:每个判定表达式中条件的各种可能组合都至少出现一次。,全部可能的条件组合为:A1,B=0 A1,B 0 A1,B=0 A1,B 0 A=2,X1 A=2,X 1 A 2,X1 A 2,X 1,Test cases:A=2,B=0,X=4(T T)A=2.B=1,X=1(F T)A=1,B=0,X=2(F T)A=1,B=1,X=1(F F),问题:没有测试到(T F)的情形,20,考察control flow graph 的角度,还可考虑下述覆盖:点覆盖,边覆盖,=语句覆盖,路径覆盖(Path coverage)
10、:每条可能的路径都至少执行一次,若图中有环,则每个环至少经过一次。,=判定覆盖,Test cases:A=1,B=1,X=1 A=1,B=1,X=2 A=3,B=0,X=1 A=2,B=0,X=4,路径覆盖 条件组合覆盖,21,循环测试路径选择,循环分为4种不同类型:简单循环、连锁循环、嵌套循环和非结构循环。(1)简单循环 零次循环:从循环入口到出口 一次循环:检查循环初始值 二次循环:检查多次循环 m次循环:检查在多次循环 最大次数循环、比最大次数多一次、少一次的循环。,22,例:求最小值,k=i;for(j=i+1;j=n;j+)if(Aj Ak)then k=j;,23,a,c,e,24
11、,测试用例选择,25,(2)嵌套循环 对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值;逐步外推,对其外面一层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值。反复进行,直到所有各层循环测试完毕。,26,27,对全部各层循环同时取最小循环次数,或者同时取最大循环次数(3)连锁循环如果各个循环互相独立,则可以用与简单循环相同的方法进行测试。但如果几个循环不是互相独立的,则需要使用测试嵌套循环的办法来处理。(4)非结构循环这一类循环应该使用结构化程序设计方法重新设计测试用例。,28,基本路径测试,基本路径测试方法把覆盖的路径数压缩到
12、一定限度内,程序中的循环体最多只执行一次。它是在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。,29,1.程序的控制流图,符号为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。,30,在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的复合条件表达式,则需要改为一系列只有单个条
13、件的嵌套的判断。,31,32,33,计算环路复杂性的方法:-V(G)=简单判定节点数+1 V(G)=E-N+2(E 是边数,N是定点数)V(G)=封闭区域数+1V(G)=4,1,2,3,4,5,6,7,8,34,根据环路复杂性产生基本路径集Path 1:1-2-3-8Path 2:1-2-3-8-1-2-3Path 3:1-2-4-5-7-8 Path 4:1-2-4-6-7-8准备测试用例覆盖所有基本路径,35,基本路径测试法步骤 基本路径测试法适用于模块的详细设计及源程序,其主要步骤如下。以详细设计或源代码作为基础,导出程序的控制流图。计算得到的控制流图G的环路复杂性V(G)。确定线性无关
14、的路径的基本集。生成测试用例,确保基本路径集中每条路径的执行。,36,例如,在图示的控制流图中,一组独立的路径是path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-9-10-1-11path4:1-2-3-6-7-9-10-1-11路径 path1,path2,path3,path4组成了控制流图的一个基本路径集。,37,2.程序环路复杂性,程序的环路复杂性给出了程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。从控制流图来看,一条独立路径是至少包含有一条在其它独立路径中从未有过的边的路径。,38,
15、3.导出测试用例,导出测试用例,确保基本路径集中的每一条路径的执行。根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到 用逻辑覆盖方法。,39,每个测试用例执行之后,与预期结果进行比较。如果所有测试用例都执行完毕,则可以确信程序中所有的可执行语句至少被执行了一次。必须注意,一些独立的路径(如例中的路径1),往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。,40,最后,归纳一下白盒测试中各种测试方法的应用策略。在白盒测试中,可以使用各种测试方法的综合策略如下。(1)在测试中,应尽量先使用工具进行静态结构分析。(2)测试中可采
16、取先静态后动态的组合方式:先进行静态结构分析、代码检查,再进行覆盖率测试。,41,(3)利用静态分析的结果作为导引,通过代码检查和动态测试的方式对静态发现结果进行进一步的确认,使测试工作更为有效。(4)覆盖率测试是白盒测试的重点,一般可使用基本路径测试法达到语句覆盖标准;对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率。,42,(5)在不同的测试节点,测试的侧重点不同:在单元测试阶段,以代码检查、逻辑覆盖为主;在集成测试阶段,需要增加静态结构分析等;在系统测试阶段,应根据黑盒测试的结果,采取相应的白盒测试。,43,白盒测试总结:,“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测
17、试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一、穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序;第二、穷举路径测试不可能查出程序中因遗漏路径而出错。第三、穷举路径测试可能发现不了一些与数据相关的错误。,44,黑盒测试也称作功能测试和行为测试,主要是根据功能需求来测试程序是否按照预期工作。黑盒测试的目的是尽量发现代码所表现的外部行为的错误,主要有以下几类:功能不正确或不完整;接口错误;接口所使用的数据结构错误;行为或性能错误;初始化和终
18、止错误。黑盒测试的示意图如图2-14 所示。从图2-14中,我们可以看出黑盒测试只考虑程序的输入和输出,无须考虑程序的内部代码。,2.3黑盒测试,45,图2-14 黑盒测试示意图,46,2.3.1黑盒测试和白盒测试的异同 本书归纳出以下几点:执行测试人员不同 黑盒测试通常由用户以及非开发人员来进行;而白盒测试通常要有了解软件内部结构的开发人员来做。测试覆盖目标不同 如果我们用一个盒子来代替整个软件系统,那么黑盒测试可以看成是一种系统测试。而对盒子内部的多个单元的测试就可以称作为白盒测试。另外一种区别就是,二者的覆盖目标不同。黑盒测试的目标是覆盖所有的用户需求;而白盒测试的目标是覆盖所有的代码。
19、,47,3、测试动机不同 有效的安全测试有时也需要详细了解代码以及系统结构,此时把这些技术称作白盒测试。另外一种风险测试的目标可能就只是测试软件是否能够为用户提供预期输出。可用性测试就是如此,所以被称作黑盒测试。4、测试方法不同 一个最普通的区别就是行为测试设计是基于功能需求来定义测试,而结构测试则是基于代码本身来定义测试的。这就是两种设计测试的方法。因为行为测试是基于外部功能定义的,所以称作黑盒测试;结构测试则是基于代码内部结构来定义的,所以称作白盒测试。,48,5、评估测试方法不同 一些技术是使用代码工具来跟踪软件内部的工作过程,因此称为白盒测试技术。与之相比,黑盒测试技术只是简单的观察程
20、序的正常输出。2.3.2黑盒测试的用例设计 常用的黑盒测试用例设计方法主要有以下几种:功能图分析方法,等价类划分方法,边界值分析方法,错误推测方法,因果图方法,判定表驱动分析方法,正交实验设计方法和功能图分析方法等。下面对上述方法分别作以简要介绍。,49,一、基于用户需求的测试 黑盒测试用例就是基于用户需求的,也是从研究客户需求工作开始的。二、对等区间划分 对等区间划分是一种黑盒测试方法,该方法也称为等价类划分,是一种设计测试用例的非常形式化的方法。三、边界值分析法 边界值分析方法是对等价类划分方法的补充。长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输
21、出范围的内部。,50,四、状态转换测试 状态转换测试适用于软件被设计成一个状态机或实现了一种被建模成一种状态机的情况。可以设计测试用例测试状态间转换,测试用例创建引起转换的事件。可以设计负面测试的测试用例用于测试状态与事件的非法组合。五、分支测试 在分支测试中,测试用例用于测试单元的控制流分支或决策点。通常用于实现决策覆盖(Decision Coverage)的测试目标。六、错误推测法 错误推测法就是根据经验和直觉推测程序中所有可能存在的各种错误,借助边界值分析等方法有针对性的设计测试用例的方法。,51,七、因果图方法 因果图方法适合于检查程序输入条件的各种组合情况。使用该方法首先要理解软件所
22、表示的对象及其关系,然后,定义一组保证“所有对象与其他对象都具有所期望的关系”的测试序列。,52,等价类划分,等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。,53,使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。划分等价类等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。,54,等价类的划分有两种
23、不同的情况:有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。,55,划分等价类等价类的原则。(1)如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。例如,在程序的规格说明中,对输入条件有一句话:“项数可以从1到999”则有效等价类是“1项数999”两个无效等价类是“项数1”或“项数999”。在数轴上表示成:,56,(2)如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个
24、有效等价类和一个无效等价类。例如,在Pascal语言中对变量标识符规定为“以字母打头的串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。,57,(4)如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以
25、上身分的人员的输入值的集合。(5)如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。,58,边界值分析(Boundary Value Analysis),边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。边界值分析是一种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。注意:程序最容易在边界发生错误;通常与等价划分结合进行。,59,边界值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 基础 课件

链接地址:https://www.31ppt.com/p-3916749.html