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

下载本文档

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

文档简介

1、第7章 软件测试1第六章第六章 复习复习返回节目录1 1、什么是结构化程序设计?、什么是结构化程序设计?要求在写代码时尽量使用三种基本控制结要求在写代码时尽量使用三种基本控制结构,避免使用构,避免使用gotogoto语句,按照语句,按照“由顶向下,由顶向下,逐步求精逐步求精”的原则进行设计。的原则进行设计。2 2、什么是程序设计的风格?、什么是程序设计的风格?是指一个程序员在编写程序时所表现的特是指一个程序员在编写程序时所表现的特点、结构和逻辑思路的风格。点、结构和逻辑思路的风格。第7章 软件测试2返回节目录3 3、程序复杂性度量有哪几种方法?、程序复杂性度量有哪几种方法? 每种方法的特点是什

2、么?每种方法的特点是什么? 代码行度量法代码行度量法根据经验估计根据经验估计 McCabeMcCabe度量法度量法根据流程图根据流程图 V V(g)=m n + 2g)=m n + 2 HalsteadHalstead的软件科学的软件科学根据其中的运算根据其中的运算符和操作数的总数来度量程序的复杂程度。符和操作数的总数来度量程序的复杂程度。(动态多变量计算公式)(动态多变量计算公式) H=nllog2n1+n2log2n2 第7章 软件测试3案例分析案例分析为以下流程图所示的程序段设计一组测为以下流程图所示的程序段设计一组测试用例试用例。N NX8 AND Y5X8 AND Y5X0 OR Y

3、0X0 OR Y0(x+z)/x(x+z)/yY YN NY YX16 OR Y10X16 OR Y10(x+y)/z(x+y)/zN NY Y(x+y)/y输入输入x、y、z第7章 软件测试4案例分析案例分析任务任务第一组:根据流程图编写代码。第一组:根据流程图编写代码。第二组:编写本模块的测试计划。第二组:编写本模块的测试计划。(每个逻辑判断都要测试)(每个逻辑判断都要测试)第三组:编写本模块的测试用例。第三组:编写本模块的测试用例。(每条语句都要测试)(每条语句都要测试)第四组:对本次模块测试作出总结。第四组:对本次模块测试作出总结。第7章 软件测试5第七章第七章软件测试软件测试7.1

4、7.1 软件测试的概述软件测试的概述7.2 7.2 软件测试方法软件测试方法7.3 7.3 软件测试步骤软件测试步骤7.4 7.4 软件可靠性软件可靠性7.5 7.5 调调 试试7.6 7.6 软件测试文档软件测试文档7.7 7.7 软件测试工具软件测试工具 小小 结结思考与练习思考与练习 返回章目录第7章 软件测试67.1.17.1.1软件测试历史回顾软件测试历史回顾 软件测试从初期的软件测试从初期的“程序调试程序调试”到如今的到如今的“软件测试软件测试”共经历了三个阶段:共经历了三个阶段: 初级时期初级时期(19501950年年19701970年),它是程序编好之后再进年),它是程序编好之

5、后再进行调试,目的是检查程序正确与否。行调试,目的是检查程序正确与否。 发展阶段发展阶段(1970197019801980年),人们开始重视对测试方法年),人们开始重视对测试方法的研究,涌出了大量的测试方法和技术,被人们称为第二代的研究,涌出了大量的测试方法和技术,被人们称为第二代软件技术,开始渐渐的用工程化观点来看待测试。软件技术,开始渐渐的用工程化观点来看待测试。 成熟时期成熟时期(1980-1980-现在),测试已逐步形成一套工程方现在),测试已逐步形成一套工程方法,发展了很多自动化测试程序,建立测试计划,制定测试法,发展了很多自动化测试程序,建立测试计划,制定测试方案,设计测试数据,实

6、施测试过程,进行评价分析等。方案,设计测试数据,实施测试过程,进行评价分析等。第7章 软件测试7 软件测试是在软件投入运行前,对软件测试是在软件投入运行前,对软件需软件需求分析、设计规格说明和编码的最终复审求分析、设计规格说明和编码的最终复审,是,是发现软件故障,保证软件质量,提高软件可靠发现软件故障,保证软件质量,提高软件可靠性的主要手段。随着人们对软件质量越来越高性的主要手段。随着人们对软件质量越来越高重视,软件测试在软件开发中的地位也越来越重视,软件测试在软件开发中的地位也越来越重要。重要。第7章 软件测试87.1.2 7.1.2 软件测试的目的软件测试的目的 1 1测试是为了发现程序中

7、的错误而执行程序测试是为了发现程序中的错误而执行程序的过程;的过程; 2 2好的测试方案是极可能发现迄今为止尚未好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;发现的错误的测试方案; 3 3成功的测试是发现了至今为止尚未发现的成功的测试是发现了至今为止尚未发现的错误的测试。错误的测试。 测试的正确定义是测试的正确定义是“为了发现程序中的错误为了发现程序中的错误而执行程序的过程而执行程序的过程”。第7章 软件测试9 测试目标还决定了测试方案的设计和选择。测试目标还决定了测试方案的设计和选择。 如果测试是为了表明程序是正确的,测试人员往如果测试是为了表明程序是正确的,测试人员往往会设计一

8、些不易暴露错误的测试方案;往会设计一些不易暴露错误的测试方案; 相反,如果测试是为了发现程序中的错误,测试人相反,如果测试是为了发现程序中的错误,测试人员就会力求设计出最能暴露错误的测试方案。员就会力求设计出最能暴露错误的测试方案。 因此,正确认识测试的目标对整个测试工作的进行因此,正确认识测试的目标对整个测试工作的进行具有指导意义。具有指导意义。 由于测试的目标是暴露程序中的错误,从心理学由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。角度看,由程序的编写者自己进行测试是不恰当的。因此,因此,在综合测试阶段应该由其他人员组成测试小组在综合测试阶段应该由

9、其他人员组成测试小组来完成测试工作。来完成测试工作。 第7章 软件测试107.1.3 7.1.3 测试用例测试用例 测试用例就是测试用例就是由测试数据与预期结果构成的由测试数据与预期结果构成的,在测试时将实际的输出与预期结果比较,若相在测试时将实际的输出与预期结果比较,若相同则表示没发现错误,否则表现测试有错误。同则表示没发现错误,否则表现测试有错误。 测试用例的组成测试用例的组成: :1.1.对程序输入数据的描述对程序输入数据的描述. . 2.2.由这些输入数据应产生的正确结果的精确描述由这些输入数据应产生的正确结果的精确描述第7章 软件测试117.1.3 7.1.3 测试用例测试用例 测试

10、:是一个或多个测试用例的集合测试:是一个或多个测试用例的集合, ,是一种活动是一种活动. . 测试步骤:测试步骤详细说明了如何测试步骤:测试步骤详细说明了如何设置设置, ,执行和评估特定的测试用例执行和评估特定的测试用例. .第7章 软件测试127.1.47.1.4测试的原则测试的原则测试原则测试原则: : 1. 1. 理想情况下,测试所有可能的输入。理想情况下,测试所有可能的输入。 2. 2. 程序员应避免测试自己的程序,程序设计机程序员应避免测试自己的程序,程序设计机构不应测试自己的程序。构不应测试自己的程序。 3. 3. 清楚程序是否做了该做的事。清楚程序是否做了该做的事。 4. 4.

11、像合法的预期的输入、输出数据一样,非法像合法的预期的输入、输出数据一样,非法的和非预期的输入数据也要编写测试用例。的和非预期的输入数据也要编写测试用例。 5. 5. 做好测试用例的保存工作,因为在改错或维做好测试用例的保存工作,因为在改错或维护后还要进行重新测试。护后还要进行重新测试。 6. 6. 程序模块测试后。遗留的错误数目往往与已程序模块测试后。遗留的错误数目往往与已经发现的错误数目成比例。经发现的错误数目成比例。第7章 软件测试137.27.2软件测试方法软件测试方法 软件测试的方法主要有三种:软件测试的方法主要有三种: 动态测试、静态测试和正确性证明。动态测试、静态测试和正确性证明。

12、动态测试动态测试一般是指上机测试。实际运行被测程序输入相应一般是指上机测试。实际运行被测程序输入相应的测试用例。判定执行结果是否符合预期的测试结果从而的测试用例。判定执行结果是否符合预期的测试结果从而检查程序的正确性检查程序的正确性, ,有效性。有效性。静态测试静态测试就是通过被测程序的静态审查。发现代码中潜在就是通过被测程序的静态审查。发现代码中潜在的错误。这种方法的主要特征是不利用计算机进行测试的错误。这种方法的主要特征是不利用计算机进行测试, ,而而采用其他手段达到测试的目的采用其他手段达到测试的目的, ,一般采用人工方式完成。所一般采用人工方式完成。所以也称人工测试或代码评审。以也称人

13、工测试或代码评审。正确性证明正确性证明一般指使用归纳断言法。一般指使用归纳断言法。第7章 软件测试14动态测试可分为两类动态测试可分为两类: :白盒法和黑盒法白盒法和黑盒法。白盒法(白盒法(White-box TestingWhite-box Testing)又称结构测试)又称结构测试,它是把程,它是把程序装在一个透明的白盒子里,既完全了解程序的结构序装在一个透明的白盒子里,既完全了解程序的结构和处理过程,按照程序内部的逻辑过程,来检验程序和处理过程,按照程序内部的逻辑过程,来检验程序的每条通路是否都能按照预定的要求正确工作。的每条通路是否都能按照预定的要求正确工作。黑盒法(黑盒法(Black

14、-box TestingBlack-box Testing)又称功能测试)又称功能测试,与此正好,与此正好相反它不管程序内部的结构与处理如何,只是把程序相反它不管程序内部的结构与处理如何,只是把程序看成一个不知内部结构的黑盒子,按照程序的预定的看成一个不知内部结构的黑盒子,按照程序的预定的功能和性能正常使用,检测程序是否能适当接受输入功能和性能正常使用,检测程序是否能适当接受输入数据并产生正确的输出信息,因此黑盒测试是从用户数据并产生正确的输出信息,因此黑盒测试是从用户观点出发的测试。观点出发的测试。第7章 软件测试15第7章 软件测试167 72 21 1白盒测试法白盒测试法白盒测试是根据被

15、测程序的内部结构设计白盒测试是根据被测程序的内部结构设计测试用例。因为从理论上讲它只涉及到被测试的测试用例。因为从理论上讲它只涉及到被测试的原程序,要求对某些程序的结构特性做到一定程原程序,要求对某些程序的结构特性做到一定程度的覆盖。度的覆盖。白盒法测试是基于覆盖的测试。白盒法测试是基于覆盖的测试。白盒测试分为逻辑覆盖、数据流测试、域白盒测试分为逻辑覆盖、数据流测试、域测试、符号测试、路径分析、程序变异以及程序测试、符号测试、路径分析、程序变异以及程序插装技术等。插装技术等。 第7章 软件测试17逻辑覆盖又分为:逻辑覆盖又分为:语句覆盖,判定覆盖、条件覆盖、判定语句覆盖,判定覆盖、条件覆盖、判

16、定/条件条件覆盖、条件组合覆盖、路径覆盖。覆盖、条件组合覆盖、路径覆盖。为了提高测试的效率应选择最少的测试为了提高测试的效率应选择最少的测试用例来满足指定的覆盖标准。用例来满足指定的覆盖标准。第7章 软件测试181.1.语句覆盖语句覆盖 语句覆盖是指选取足够的测试用例,使每一条语句都能至语句覆盖是指选取足够的测试用例,使每一条语句都能至少执行一次少执行一次。x=90,y=90;x=50,y=50;x=90,y=50。第7章 软件测试19基于这种思想,我们必须选取三条语句来进行测试,基于这种思想,我们必须选取三条语句来进行测试,它们是:它们是:x=90 x=90,y=90y=90;x=50 x=

17、50,y=50y=50;x=90 x=90,y=50y=50。第一条语句使第一条语句使“1T”1T”被执行一次;被执行一次;第二条语句使第二条语句使“3T”3T”被执行一次;被执行一次;第三条语句使第三条语句使“2T”2T”被执行一次。被执行一次。第7章 软件测试202 2 判定覆盖判定覆盖 判定覆盖又叫分支覆盖判定覆盖又叫分支覆盖, ,使指选取足够的测试用例,使指选取足够的测试用例,使每个判定的所有可能结果至少出现一次。也就使每个判定的所有可能结果至少出现一次。也就是说它需要设计若干个测试用例,是说它需要设计若干个测试用例,使程序中的每使程序中的每一个判定取真、取假的值至少经历一次(即判定一

18、个判定取真、取假的值至少经历一次(即判定的每个分支至少经过一次)。的每个分支至少经过一次)。x=90,y=90;x=50,y=50;x=90,y=70第7章 软件测试21但是,判定覆盖并不能满足我们的要求。但是,判定覆盖并不能满足我们的要求。例如:例如:、测试数据:、测试数据:x=100 x=100,y=40y=40,预期结果是,预期结果是T=2T=2,第一个判定为假,第二个判定为真。第一个判定为假,第二个判定为真。、测试数据:、测试数据:x=50 x=50,y=50y=50,预期结果是,预期结果是T=3T=3,第一个判定为假,第二个判定也为假。第一个判定为假,第二个判定也为假。不难看出在本程

19、序的第二个判断条件不难看出在本程序的第二个判断条件y=90, y=90, 如果错写成如果错写成y90y=80”x=80”和和“y=80”y=80”组成;组成;判定二由条件判定二由条件“x+y=140”x+y=140”、“x=90”x=90”和和“y=90”y=90”组组成。成。判定覆盖仅考虑判定的结果而没考虑每个条件的可能性判定覆盖仅考虑判定的结果而没考虑每个条件的可能性,而,而条件覆盖却要求每个条件的所有结果至少执行一次条件覆盖却要求每个条件的所有结果至少执行一次,由此可看出条件覆盖是优于判定覆盖的。由此可看出条件覆盖是优于判定覆盖的。x=90,y=70;x=40,y=90第7章 软件测试2

20、3这两对数据对该程序判定中条件的执行结果如表这两对数据对该程序判定中条件的执行结果如表7.17.1。第7章 软件测试24 这两对测试数据这两对测试数据, ,可以使五个条件分别取到真值和假值。可以使五个条件分别取到真值和假值。但是我们并不能确定条件覆盖比判定覆盖强,即我们但是我们并不能确定条件覆盖比判定覆盖强,即我们不不能确定条件覆盖在对每个条件进行测试的同时,也会使能确定条件覆盖在对每个条件进行测试的同时,也会使每个判定都取得所有可能的结果每个判定都取得所有可能的结果。让我们来分析一下该。让我们来分析一下该例中所选的两对测试数据是否可以满足判定覆盖的要求。例中所选的两对测试数据是否可以满足判定

21、覆盖的要求。第7章 软件测试254 4、判定、判定/ /条件覆盖条件覆盖判定判定/ /条件覆盖是指选取足够的测试条件覆盖是指选取足够的测试用例,使判定中每个条件的所有可能结果用例,使判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的所有至少出现一次,并且每个判定本身的所有可能结果也至少出现一次。可见判定可能结果也至少出现一次。可见判定/ /条条件覆盖实际上是将判定覆盖和条件覆盖的件覆盖实际上是将判定覆盖和条件覆盖的基本思想组合,使测试的功能效果更强。基本思想组合,使测试的功能效果更强。第7章 软件测试26对这组测试用例的分析如下表对这组测试用例的分析如下表7.37.3所示。所示。第7

22、章 软件测试275 5、条件组合覆盖、条件组合覆盖条件组合覆盖就是选取足够的测试用例,使条件组合覆盖就是选取足够的测试用例,使每个判定中条件结果的所有可能组合至少出现一每个判定中条件结果的所有可能组合至少出现一次。次。我们先列出两个判定的各种条件组合情况。我们先列出两个判定的各种条件组合情况。第7章 软件测试28第一判定:第一判定:a. x=80,y=80 a. x=80,y=80 b. x=80,y=80,y80c. x=80c. x=80d. x80,y80d. x80,y=90,y=90,x+y=140e. x=90,y=90,x+y=140 f. x=90,y=90,x+y=90,y=

23、90,x+y=90,y=140 g. x=90,y=140 h. x=90,y90,x+y=90,y90,x+y140 i. x=90,x+y=140 i. x=90,x+y=140 j. x=90,x+y140 j. x=90,x+y140 k. x90,y=140 k. x90,y=140 l. x90,y90,x+y140 l. x90,y90,x+y140第7章 软件测试29根据分析,我根据分析,我们选取测试用例如下:们选取测试用例如下:x=90 x=90,y=90y=90;x=90 x=90,y=70y=70;x=90 x=90,y=30y=30;x=70 x=70,y=90y=90

24、;x=30 x=30,y=90y=90;x=70 x=70,y=70y=70;x=50 x=50,y=50y=50。表表7.47.4列出了所选测试用例覆盖上述条件组合的情列出了所选测试用例覆盖上述条件组合的情况。显然,它们满足条件组合覆盖标准。况。显然,它们满足条件组合覆盖标准。第7章 软件测试306 6、路径测试、路径测试 路径覆盖是指选择足够的测试用例,使流程图路径覆盖是指选择足够的测试用例,使流程图中的每条路径至少经过一次。中的每条路径至少经过一次。例如图例如图7.2 7.2 ,所有可能路径分别是,所有可能路径分别是 ABCGABCG, ABDEGABDEG,ABDFGABDFG。它们具

25、体的测试用例如表。它们具体的测试用例如表7.57.5所示所示。第7章 软件测试317 72 22 2 黑盒测试法黑盒测试法 要用黑盒测试发现程序中存在的错误,必须用要用黑盒测试发现程序中存在的错误,必须用所有可能的输入条件和输出条件对程序进行测试,所有可能的输入条件和输出条件对程序进行测试,从而检测程序是否正确。因此,黑盒测试有两个比从而检测程序是否正确。因此,黑盒测试有两个比较明显的优点:较明显的优点: 黑盒测试与软件具体的实现无关,因此如果实黑盒测试与软件具体的实现无关,因此如果实现发生变化,测试用例仍然可以被使用;现发生变化,测试用例仍然可以被使用; 设计黑盒测试用例可以和软件实现同时进

26、行,设计黑盒测试用例可以和软件实现同时进行,因此可以大大压缩项目总的开发时间。因此可以大大压缩项目总的开发时间。 黑盒测试以软件规格说明书为依据选取测试数黑盒测试以软件规格说明书为依据选取测试数据,其正确性依赖于规格说明的正确性。据,其正确性依赖于规格说明的正确性。第7章 软件测试32下面将介绍几个常用的黑盒测试方法,主要包括下面将介绍几个常用的黑盒测试方法,主要包括等等价类划分、边界值分析、错误猜测和因果图价类划分、边界值分析、错误猜测和因果图等。等。1 1、等价类划分、等价类划分 等价类划分是一种典型的黑盒测试法,也是等价类划分是一种典型的黑盒测试法,也是一种非常实用的测试方法。一种非常实

27、用的测试方法。 等价类等价类 就是指某个数据域的集合,在这个集合里就是指某个数据域的集合,在这个集合里如果一个输入条件作为测试数据不能发现程序中的如果一个输入条件作为测试数据不能发现程序中的错误,那么就说明这个集合中的所有输入条件在测错误,那么就说明这个集合中的所有输入条件在测试时也不能发生错误(除非这个等价类的某个子集试时也不能发生错误(除非这个等价类的某个子集还属于另一个等价类)。还属于另一个等价类)。第7章 软件测试33 有效等价类有效等价类是指符合需求规格说明书要求的,有意是指符合需求规格说明书要求的,有意义的,合理的输入数据所构成的集合,它主要用义的,合理的输入数据所构成的集合,它主

28、要用于测试程序是否实现了需求规格说明书中的功能于测试程序是否实现了需求规格说明书中的功能要求。要求。无效等价类无效等价类是指不符合需求规格说明要求的,非法是指不符合需求规格说明要求的,非法的,无意义的输入数据所构成的集合,它只要用的,无意义的输入数据所构成的集合,它只要用于测试程序是否做了需求规格说明以外的事。于测试程序是否做了需求规格说明以外的事。第7章 软件测试342 2、边界值分析、边界值分析 实践表明,设计一些边界测试条件用例,使实践表明,设计一些边界测试条件用例,使程序运行在边界附近,这样常常取得良好的测试程序运行在边界附近,这样常常取得良好的测试效果。效果。 边界测试条件边界测试条

29、件是指相对于输入与输出等价类是指相对于输入与输出等价类直接在其边界上或稍高于其边界,或稍低于其边直接在其边界上或稍高于其边界,或稍低于其边界的状态条件。与等价类划分相比,边界值分析界的状态条件。与等价类划分相比,边界值分析以专门挑选边界附近的值作为测试用例。以专门挑选边界附近的值作为测试用例。第7章 软件测试353 3、错误猜测、错误猜测 人们的经验和直觉,在测试过程中也具有更人们的经验和直觉,在测试过程中也具有更大意义,通过经验和直觉推测出程序中可能存在大意义,通过经验和直觉推测出程序中可能存在的错误,从而可以针对那些可能的错误设计一些的错误,从而可以针对那些可能的错误设计一些测试用例。这种

30、方法就是错误猜测。测试用例。这种方法就是错误猜测。 错误猜测法主要是依靠测试人员的直觉和经错误猜测法主要是依靠测试人员的直觉和经验验,它的基本思路是尽可能多的列出程序中可能,它的基本思路是尽可能多的列出程序中可能出现的错误或容易发生错误的情况,然后根据它出现的错误或容易发生错误的情况,然后根据它们开发测试用例。们开发测试用例。第7章 软件测试364 4、因果图、因果图 因果图法最终生成的就是我们前面讲的判定树,因果图法最终生成的就是我们前面讲的判定树,它适合于检查程序输入条件的各种组合。它适合于检查程序输入条件的各种组合。采用因果图设计测试用例的具体步骤采用因果图设计测试用例的具体步骤: :1 1)分析软件规格说明描述,哪些是)分析软件规格说明描述,哪些是“原因原因”(输(输入条件的等价类),那些是入条件的等价类),那些是“结果结果”

温馨提示

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

评论

0/150

提交评论