软件工程教学第7章软件测试课件.ppt
《软件工程教学第7章软件测试课件.ppt》由会员分享,可在线阅读,更多相关《软件工程教学第7章软件测试课件.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 软件测试软件测试 软件测试的理论基础软件测试的理论基础7.1软件测试的方法软件测试的方法 7.2软件测试的流程及技术软件测试的流程及技术 7.3 软件测试职业素质培养软件测试职业素质培养7.47.1 7.1 软件测试的理论基础软件测试的理论基础7.1.1软件测试的定义软件测试的定义测测试试的的英英文文单单词词是是text,即即检检验验或或考考试试之之意意。测测试试是是软软件件生生存存周周期期中中十十分分重重要要的的一一个个过过程程,是产品发布、提交给最终用户前的稳定化阶段。是产品发布、提交给最终用户前的稳定化阶段。软软件件测测试试是是测测试试中中的的特特例例,它它的的测测试试对
2、对象象是是软软件件。“软软件件测测试试”的的经经典典定定义义是是在在规规定定条条件件下下对对程程序序进进行行操操作作,以以发发现现错错误误,对对软软件件质质量量进行评估。进行评估。7.1.2软件测试的发展历程软件测试的发展历程 1、从测试到调试、从测试到调试软件测试是伴随着软件的产生而产生的。早期的软软件测试是伴随着软件的产生而产生的。早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于窄,开发人员将测试等同于“调试调试”,
3、目的是纠正软件中,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工已经知道的故障,常常由开发人员自己完成这部分的工作。作。2、开发与测试融合、开发与测试融合软件测试的目的是为了检验软件系统是否满足需求。软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的,而且只是开发后期的活动,它再也不是一个一次性的,而且只是开发后期的活动,而是与整个开发流程融合成一体。而是与整个开发流程融合成一体。7.1.3软件测试的目的和目标软件测试的目的和目标软件测试的目的决定了如何去组织测试。软件测试的目的决定了如何去组织测试。如果测试的目的是为了尽可能多地找出软件如果测试的目的是为了
4、尽可能多地找出软件缺陷,那么测试就应该直接针对软件比较复缺陷,那么测试就应该直接针对软件比较复杂的部分或是以前出现软件缺陷比较多的位杂的部分或是以前出现软件缺陷比较多的位置。置。不同的机构会有不同的测试目的,相同不同的机构会有不同的测试目的,相同的机构也可能有不同测试目的,可能是测试的机构也可能有不同测试目的,可能是测试不同区域或是对同一区域的不同层次的测试。不同区域或是对同一区域的不同层次的测试。测试的目的或定义:测试的目的或定义:1.测试是为了发现程序中的错误而执行程测试是为了发现程序中的错误而执行程序的过程;序的过程;2.好的测试方案是极可能发现迄今为止尚好的测试方案是极可能发现迄今为止
5、尚未发现的错误的测试方案;未发现的错误的测试方案;3.成功的测试是发现了至今为止尚未发现成功的测试是发现了至今为止尚未发现的错误的测试。的错误的测试。软件缺陷的生命周期软件缺陷的生命周期潜伏期错误引入缺陷被发现修复7.1.4软件测试的原则软件测试的原则1尽早开展测试工作尽早开展测试工作;2完全测试不可把握最优测试量完全测试不可把握最优测试量;3严防寄生虫现象严防寄生虫现象;4并非所有的软件缺陷都能修复并非所有的软件缺陷都能修复;5严防杀虫剂现象严防杀虫剂现象;6难以说清的软件缺陷难以说清的软件缺陷;7产品说明书不断变化产品说明书不断变化;8软件测试人员在产品小组中不受欢迎。软件测试人员在产品小
6、组中不受欢迎。软件测试的方法可以从宏观和微观两软件测试的方法可以从宏观和微观两个方面看:从宏观看,软件测试方法也就个方面看:从宏观看,软件测试方法也就是讨论软件测试的方法论。从微观看,软是讨论软件测试的方法论。从微观看,软件测试方法就是软件测试过程中所使用的件测试方法就是软件测试过程中所使用的具体的测试方法。具体的测试方法。7.2 7.2 软件测试的方法软件测试的方法7.2.1静态测试和动态测试静态测试和动态测试 从是否需要执行被测软件的角度,可从是否需要执行被测软件的角度,可分为静态测试和动态测试。分为静态测试和动态测试。1静态测试静态测试静态测试是指无须执行被测代码,而静态测试是指无须执行
7、被测代码,而是借助专用的软件测试工具评审软件文档是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。的不足之处,减少错误出现的概率。2动态测试动态测试动态测试是使被测代码在相对真实环动态测试是使被测代码在相对真实环境下运行,从多角度观察程序运行时能体境下运行,从多角度观察程序运行时能体现的功能、逻辑、行为、结构等行为,以现的功能、逻辑、行为、结构等行为,以发现其中的错误现象。发现其中的错误现象。7.2.1静态测试和动态测试静态测试和动态
8、测试 黑黑盒盒测测试试是是基基于于功功能能的的测测试试,只只关关心心软软件件的的功功能能,而而不不考考虑虑其其内内部部结结构构,也也叫叫功功能能测测试试;白白盒盒测测试试只只关关心心软软件件内内部部逻逻辑辑结结构构,测测试试覆覆盖盖率率,是是由由逻逻辑辑驱驱动动的的测测试试。为为了了较较快快得得到到测测试试效效果果,通通常常先先进进行行功功能能测测试试,达达到到所所有有功功能能后后,为为确确定定软软件件的的可可靠性进行必要的覆盖测试。靠性进行必要的覆盖测试。7.2.2白盒测试和黑盒测试白盒测试和黑盒测试白盒测试也称结构测试或逻辑驱动测白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测
9、试程序,试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工中的每条通路是否都能按预定要求正确工作。作。1 1白盒测试白盒测试(1)逻辑覆盖)逻辑覆盖逻辑覆盖是以程序内部的逻辑结构为基础的逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计技术,属白盒测试。最彻底的白盒测试用例设计技术,属白盒测试。最彻底的白盒测试是覆盖程序中的每一条路径,但是由于程序测试是覆盖程序中的每一条路径,但是由于程序中含有循环,要执行每一条路径是不可能的。因
10、中含有循环,要执行每一条路径是不可能的。因此我们只是希望采用的测试用例覆盖程序内部逻此我们只是希望采用的测试用例覆盖程序内部逻辑的程度尽量高些。为了衡量测试的覆盖程度,辑的程度尽量高些。为了衡量测试的覆盖程度,需要建立一些作为测试彻底度的定量衡量标准。需要建立一些作为测试彻底度的定量衡量标准。目前常用的覆盖标准是:目前常用的覆盖标准是:语句覆盖;判定覆盖;条件覆盖;语句覆盖;判定覆盖;条件覆盖;判定判定/条件覆盖;条件组合覆盖。条件覆盖;条件组合覆盖。a.语句覆盖语句覆盖语句覆盖就是设计若干个测试用例,运行所语句覆盖就是设计若干个测试用例,运行所测的程序,使得每一可执行语句至少执行一次。测的程
11、序,使得每一可执行语句至少执行一次。b.判定覆盖判定覆盖判定覆盖就是设计若干个测试用例,使程序判定覆盖就是设计若干个测试用例,使程序中的每个判断至少出现一次中的每个判断至少出现一次“真值真值”和一次和一次“假值假值”,即程序中的每个分支都至少执行一次。,即程序中的每个分支都至少执行一次。c.条件覆盖条件覆盖条件覆盖是指利用若干个测试用例,使被测条件覆盖是指利用若干个测试用例,使被测试的程序中,对应每个判断中每个条件的所有可试的程序中,对应每个判断中每个条件的所有可能情况均至少执行一次。能情况均至少执行一次。d.判定判定/条件覆盖条件覆盖判定判定/条件覆盖就是设计足够多的测试用例,条件覆盖就是设
12、计足够多的测试用例,使得程序中每个判断条件的所有可能的结果至少使得程序中每个判断条件的所有可能的结果至少取到一次,又使每次判断的每个分支至少通过一取到一次,又使每次判断的每个分支至少通过一次。次。e.条件组合覆盖条件组合覆盖解决上述问题的新标准是条件组合覆盖。条解决上述问题的新标准是条件组合覆盖。条件组合覆盖就是设计足够多的测试用例,使得每件组合覆盖就是设计足够多的测试用例,使得每个判断的所有可能的条件取值组合至少执行一次。个判断的所有可能的条件取值组合至少执行一次。(2)基本路径覆盖)基本路径覆盖逻辑覆盖测试主要关注的是程序内部的逻辑逻辑覆盖测试主要关注的是程序内部的逻辑结构,最彻底的测试就
13、是覆盖程序中的每一条路结构,最彻底的测试就是覆盖程序中的每一条路径,但在实际应用中,一个不太复杂的程序,要径,但在实际应用中,一个不太复杂的程序,要覆盖的路径数都是一个庞大的数目,而要执行每覆盖的路径数都是一个庞大的数目,而要执行每一条路径更是不可能的。因此我们希望通过一定一条路径更是不可能的。因此我们希望通过一定的方法将要覆盖的路径数压缩到一个有限的范围的方法将要覆盖的路径数压缩到一个有限的范围内,通过合理地选择一组穿过程序的测试路径,内,通过合理地选择一组穿过程序的测试路径,以实现达到某种测试度量,而确保程序中每一个以实现达到某种测试度量,而确保程序中每一个语句都执行一次。语句都执行一次。
14、a.控制流图控制流图控制流图是用来考察测试路径的有用工具。控制流图是用来考察测试路径的有用工具。控制流图是程序控制结构的图形表示,实际上就控制流图是程序控制结构的图形表示,实际上就是一种简化了的流程图。其基本元素是结点和控是一种简化了的流程图。其基本元素是结点和控制流。制流。用程序流程图和控制流图来表示的程序基本用程序流程图和控制流图来表示的程序基本用程序流程图和控制流图来表示的程序基本用程序流程图和控制流图来表示的程序基本控制结构。控制结构。控制结构。控制结构。b.路径的选取路径的选取所谓路径测试,就是对控制流图中每所谓路径测试,就是对控制流图中每一条可能的程序执行路径至少测试一次,一条可能
15、的程序执行路径至少测试一次,如果程序中含有循环,则每个循环至少执如果程序中含有循环,则每个循环至少执行一次。行一次。1243abecd设计覆盖所有点和设计覆盖所有点和所有边的测试路径,然所有边的测试路径,然后将测试路径结合起来后将测试路径结合起来就可以得到实现路径覆就可以得到实现路径覆盖的测试路径。盖的测试路径。黑盒测试也称功能测试,它是通过测试来黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性盒子,在完全不考虑程序内部结构和内部特性的
16、情况下,在程序接口进行测试,它只检查程的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正用,程序是否能适当地接收输入数据而产生正确的输出信息。确的输出信息。黑盒测试着眼于程序外部结构,不考虑内黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进部逻辑结构,主要针对软件界面和软件功能进行测试。行测试。2 2黑盒测试黑盒测试(1)等价类划分)等价类划分等价类划分是一种典型的黑盒测试方法。其基本思想是将等价类划分是一种典型的黑盒测试方法。其基本思想是将程序的输入区域划
17、分为若干个等价类,用每个等价类中的一个程序的输入区域划分为若干个等价类,用每个等价类中的一个具有代表性的输入数据作为测试数据。具有代表性的输入数据作为测试数据。在划分等价类时,我们可以将之划分为两类在划分等价类时,我们可以将之划分为两类:a.有效等价类:是指对程序的规格说明是合理的、有意义的有效等价类:是指对程序的规格说明是合理的、有意义的输入数据所构成的集合。有效等价类可以是一个,也可以是多输入数据所构成的集合。有效等价类可以是一个,也可以是多个。利用它可以检验程序是否实现了程序的规格说明预先规定个。利用它可以检验程序是否实现了程序的规格说明预先规定的功能和性能。的功能和性能。b.无效等价类
18、:是指对程序的规格说明是不合理的或无意义无效等价类:是指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。无效等价类至少有一个。利用它可的输入数据所构成的集合。无效等价类至少有一个。利用它可以检验程序中的功能和性能是否不符合程序的规格说明。以检验程序中的功能和性能是否不符合程序的规格说明。确定等价类有以下几条原则:确定等价类有以下几条原则:1)如果一个输入条件规定了输入值的范围,则可确定)如果一个输入条件规定了输入值的范围,则可确定一个有效等价类和两个无效等价类。一个有效等价类和两个无效等价类。2)如果一个输入条件规定了值的个数,则可确定一个)如果一个输入条件规定了值的个数,则可确定一
19、个有效等价类和两个无效等价类。有效等价类和两个无效等价类。3)如果一个输入条件规定了值的集合,而且有理由确)如果一个输入条件规定了值的集合,而且有理由确信程序对每个输入数据都分别进行处理,则可以确定一信程序对每个输入数据都分别进行处理,则可以确定一个有效等价类(在集合中的所有元素)及一个无效等价个有效等价类(在集合中的所有元素)及一个无效等价类(不在集合中的元素)。类(不在集合中的元素)。4)如果一个输入条件规定了)如果一个输入条件规定了“必须如何必须如何”的条件,则可的条件,则可以确定一个有效等价类及一个无效等价类。以确定一个有效等价类及一个无效等价类。5)如果有理由确信某一个已划分的等价类
20、中各元素在)如果有理由确信某一个已划分的等价类中各元素在程序中处理方式不同,则应将此等价类划分成更小的等程序中处理方式不同,则应将此等价类划分成更小的等价类。价类。选择测试用例的基本步骤是:选择测试用例的基本步骤是:1)给每个等价类规定一个唯一的编号;)给每个等价类规定一个唯一的编号;2)设计新的测试用例,使它覆盖尽可能多的尚未被覆)设计新的测试用例,使它覆盖尽可能多的尚未被覆盖的有效等价类,重复这一步,直到所有有效等价类盖的有效等价类,重复这一步,直到所有有效等价类均被覆盖为止;均被覆盖为止;3)设计新的测试用例,使它覆盖一个且仅一个未被覆)设计新的测试用例,使它覆盖一个且仅一个未被覆盖的无
21、效等价类,重复这一步,直到所有无效等价类盖的无效等价类,重复这一步,直到所有无效等价类均被覆盖为止。均被覆盖为止。必须注意,对有效等价类,一个测试用例可以覆必须注意,对有效等价类,一个测试用例可以覆盖几个,因此应该用尽可能少的测试用例去覆盖所有盖几个,因此应该用尽可能少的测试用例去覆盖所有有效等价类;对无效等价类,一个测试用例只能覆盖有效等价类;对无效等价类,一个测试用例只能覆盖一个,这是因为程序中的某些错误检测往往会抑制其一个,这是因为程序中的某些错误检测往往会抑制其他的错误检测。他的错误检测。(2 2)边界值分析)边界值分析边界值分析是对等价类划分法的补充。边界值分析是对等价类划分法的补充
22、。所谓边界值分析,就是选择这样的测试用例,它能所谓边界值分析,就是选择这样的测试用例,它能使被测程序在边界值及其附近运行,从而更有效地暴露使被测程序在边界值及其附近运行,从而更有效地暴露程序中隐藏的错误。因为经验告诉我们,程序常常在处程序中隐藏的错误。因为经验告诉我们,程序常常在处理边界情况时易于犯错误,所以检查边界情况的测试用理边界情况时易于犯错误,所以检查边界情况的测试用例往往是高效的。所以输入等价类和输出等价类就是我例往往是高效的。所以输入等价类和输出等价类就是我们应着重测试的边界情况。应当选取正好等于、刚刚大们应着重测试的边界情况。应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数
23、。于或刚刚小于边界的值作为测试数。用边界值分析法设计测试用例时,有以下几条原则:用边界值分析法设计测试用例时,有以下几条原则:1 1)如果输入条件规定了值的范围,则取刚达到这个范围的边)如果输入条件规定了值的范围,则取刚达到这个范围的边界的值,以及刚刚超出范围的无效数据作为测试用例。界的值,以及刚刚超出范围的无效数据作为测试用例。2 2)如果输入条件规定了值的个数,则用最大个数、最小个数、)如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多比最大个数多1 1、比最小个数少、比最小个数少1 1的数作为测试用例。的数作为测试用例。3 3)对每个输出条件使用第()对每个输出条件使用第(
24、1 1)条原则。)条原则。4 4)对每个输出条件使用第()对每个输出条件使用第(2 2)条原则。)条原则。5 5)如果程序的输入域或输出域是个有序集合,则应选取集合)如果程序的输入域或输出域是个有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。的第一个元素和最后一个元素作为测试用例。6 6)如果程序中使用了一个内部数据结构,则应当选择这个内)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。部数据结构的边界上的值作为测试用例。7 7)分析规格说明,找出其他可能的边界条件。)分析规格说明,找出其他可能的边界条件。(3 3)错误推测法)错误推测法错误
25、推测法就是根据经验或直觉来推测程序容易错误推测法就是根据经验或直觉来推测程序容易发生的各种错误,然后有针对性地设计能检查出这些发生的各种错误,然后有针对性地设计能检查出这些错误的测试用例。由于错误推测法是基于经验的,因错误的测试用例。由于错误推测法是基于经验的,因而没有确定的产生测试用例的步骤。而没有确定的产生测试用例的步骤。错误推测法的基本思路是:列举出程序中所有可错误推测法的基本思路是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。择测试用例。(4 4)因果图)因果图 1 1)基本概念)基本概念 等价类划分法和边界
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 教学 软件 测试 课件
限制150内