软件工程 第17章:软件测试.ppt
《软件工程 第17章:软件测试.ppt》由会员分享,可在线阅读,更多相关《软件工程 第17章:软件测试.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程软件工程Software Engineering2022/12/221广东工业大学计算机学院第第17章章 软件测试软件测试o软件测试是软件质量保证的关键阶段,是对软件设软件测试是软件质量保证的关键阶段,是对软件设计和编码的最终检查计和编码的最终检查 o本章内容:本章内容:o17.1 软件测试概述软件测试概述o17.2 测试方法测试方法o17.3 测试用例的设计测试用例的设计o17.4 测试过程测试过程o17.5 调试调试2022/12/222广东工业大学计算机学院17.1 软件测试概述软件测试概述o软件测试就是在软件投入运行前,对软件的需求分软件测试就是在软件投入运行前,对软件的需求分
2、析、设计、实现编码进行最终审查。表面上看,在析、设计、实现编码进行最终审查。表面上看,在软件工程的其他阶段,都是建设性的,而软件测试软件工程的其他阶段,都是建设性的,而软件测试是摧毁性的。但是,软件测试的最终目的是建立一是摧毁性的。但是,软件测试的最终目的是建立一个可靠性高的软件系统的一部分。它的定义为:是个可靠性高的软件系统的一部分。它的定义为:是为了发现错误而执行程序的过程。为了发现错误而执行程序的过程。2022/12/223广东工业大学计算机学院17.1.1 软件测试的目的软件测试的目的o(1)软件测试是为了发现错误而执行程序的过程。)软件测试是为了发现错误而执行程序的过程。o(2)一个
3、好的测试用例能够发现至今尚未发现的)一个好的测试用例能够发现至今尚未发现的错误。错误。o(3)一个成功的测试是发现了至今尚未发现的错)一个成功的测试是发现了至今尚未发现的错误的测试。误的测试。2022/12/224广东工业大学计算机学院17.1.2 软件测试的原则软件测试的原则 o(1)测试用例由输入数据和预期的输出数据两部)测试用例由输入数据和预期的输出数据两部分组成。分组成。o(2)在输入数据的选择上,不仅要选择合理的输)在输入数据的选择上,不仅要选择合理的输入数据,还要选择不合理的输入数据。入数据,还要选择不合理的输入数据。o(3)用穷举测试是不可能的。)用穷举测试是不可能的。o(4)应
4、该在真正的测试工作开始之前很长时间内,)应该在真正的测试工作开始之前很长时间内,就根据软件的需求和设计来制定测试计划,在测试就根据软件的需求和设计来制定测试计划,在测试工作开始后,要严格执行,排除随意性。工作开始后,要严格执行,排除随意性。2022/12/225广东工业大学计算机学院o(5)长期保留测试用例。)长期保留测试用例。o(6)对发现错误较多的程序段,应进行更深入的)对发现错误较多的程序段,应进行更深入的测试。测试。o(7)为了达到最佳测试效果,应该有第三方来构)为了达到最佳测试效果,应该有第三方来构造测试用例。造测试用例。2022/12/226广东工业大学计算机学院17.2 测试方法
5、测试方法 o软件测试方法一般分为动态测试方法与静态测试方软件测试方法一般分为动态测试方法与静态测试方法。动态测试方法中又根据测试用例的设计方法不法。动态测试方法中又根据测试用例的设计方法不同,分为黑盒测试与白盒测试两类。同,分为黑盒测试与白盒测试两类。2022/12/227广东工业大学计算机学院17.2.1 静态测试静态测试 o静态测试是采用人工检测和计算机辅助静态分析的静态测试是采用人工检测和计算机辅助静态分析的手段对程序进行检测,方法如下:手段对程序进行检测,方法如下:o(1)人工测试:是指不依靠计算机运行程序,而)人工测试:是指不依靠计算机运行程序,而靠人工审查程序或评审软件。人工审查程
6、序的重点靠人工审查程序或评审软件。人工审查程序的重点是对编码质量进行检查,而软件审查除了审查编码是对编码质量进行检查,而软件审查除了审查编码还要对各阶段的软件产品(各种文档)进行复查。还要对各阶段的软件产品(各种文档)进行复查。人工检测可以发现计算机不易发现的错误,特别是人工检测可以发现计算机不易发现的错误,特别是软件总体设计和详细设计阶段的错误。据统计,能软件总体设计和详细设计阶段的错误。据统计,能有效地发现有效地发现30%70%的逻辑设计和编码错误,的逻辑设计和编码错误,可以减少系统测试的总工作量。可以减少系统测试的总工作量。2022/12/228广东工业大学计算机学院o(2)计算机辅助静
7、态分析:指利用静态分析软件)计算机辅助静态分析:指利用静态分析软件工具对被测试程序进行特性分析,从程序中提取一工具对被测试程序进行特性分析,从程序中提取一些信息,主要检查用错的局部变量和全程变量、不些信息,主要检查用错的局部变量和全程变量、不匹配参数、错误的循环嵌套、潜在的死循环及不会匹配参数、错误的循环嵌套、潜在的死循环及不会执行到的代码等。还可以分析各种类型的语句出现执行到的代码等。还可以分析各种类型的语句出现的次数、变量和常量的引用表、标识符的使用方式、的次数、变量和常量的引用表、标识符的使用方式、过程的调用层次及违背编码规则等。静态分析中还过程的调用层次及违背编码规则等。静态分析中还可
8、以用符号代替数值求得程序结果,以便对程序进可以用符号代替数值求得程序结果,以便对程序进行运算规律的检验。行运算规律的检验。2022/12/229广东工业大学计算机学院17.2.2 动态测试动态测试o动态测试与静态测试相反,主要是设计一组输入数动态测试与静态测试相反,主要是设计一组输入数据,然后通过运行程序来发现错误。在软件的设计据,然后通过运行程序来发现错误。在软件的设计中,出现了大量的测试用例设计方法。测试任何工中,出现了大量的测试用例设计方法。测试任何工程化产品,一般有两种方法:程化产品,一般有两种方法:o(1)了解了产品的功能,然后构造测试,来证实)了解了产品的功能,然后构造测试,来证实
9、所有的功能是完全可执行的。所有的功能是完全可执行的。o(2)知道测试产品的内部结构及处理过程,可以)知道测试产品的内部结构及处理过程,可以构造测试用例,对所有的结构都进行测试。构造测试用例,对所有的结构都进行测试。o前一种方法称为黑盒测试法,后一种方法称为白盒前一种方法称为黑盒测试法,后一种方法称为白盒测试法。测试法。2022/12/2210广东工业大学计算机学院1.黑盒测试法黑盒测试法o该方法把被测试对象看成一个黑盒子,测试人员完该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的全不考虑程序的内部结构和处理过程,只在软件的界面上进行测试,用来证实软件功能
10、的可操作性,界面上进行测试,用来证实软件功能的可操作性,检查程序是否满足功能要求,是否能很好地接收数检查程序是否满足功能要求,是否能很好地接收数据,并产生正确的输出。因此,黑盒测试又称为功据,并产生正确的输出。因此,黑盒测试又称为功能测试或数据驱动测试。一般用来检验系统的基本能测试或数据驱动测试。一般用来检验系统的基本特征。特征。o黑盒测试的任务是发现以下错误:黑盒测试的任务是发现以下错误:o(1)是否有不正确或遗漏了的功能。)是否有不正确或遗漏了的功能。o(2)在界面上,能否正确地处理合理和不合理的)在界面上,能否正确地处理合理和不合理的输入数据,并产生正确的输出信息。输入数据,并产生正确的
11、输出信息。2022/12/2211广东工业大学计算机学院o(3)访问外部信息是否有错。)访问外部信息是否有错。o(4)性能上是否满足要求等。)性能上是否满足要求等。o(5)初始化和终止错误。)初始化和终止错误。o用黑盒法测试时,必须在所有可能的输入条件和输用黑盒法测试时,必须在所有可能的输入条件和输出条件中确定测试数据出条件中确定测试数据 2022/12/2212广东工业大学计算机学院2.白盒测试法白盒测试法 o该方法把测试对象看作一个透明的盒子,测试人员该方法把测试对象看作一个透明的盒子,测试人员能了解程序的内容结构和处理过程,以检查处理过能了解程序的内容结构和处理过程,以检查处理过程为目的
12、,对程序中尽可能多的逻辑路径进行测试,程为目的,对程序中尽可能多的逻辑路径进行测试,在所有的点检验内部控制结构和数据结构是否和预在所有的点检验内部控制结构和数据结构是否和预期相同。期相同。o简单地来看,会认为通过全面的白盒测试法的程序简单地来看,会认为通过全面的白盒测试法的程序将是将是“完全正确完全正确”的程序。但是同样,的程序。但是同样,“全面全面”的白的白盒测试法也是不可能的。盒测试法也是不可能的。2022/12/2213广东工业大学计算机学院o因为白盒测试不检查功能,因此即使每条路径都测因为白盒测试不检查功能,因此即使每条路径都测试并正确了,程序仍可能有错。例如要求编写一个试并正确了,程
13、序仍可能有错。例如要求编写一个升序的程序,错编成降序程序(功能错误),就是升序的程序,错编成降序程序(功能错误),就是穷举路径测试也无法发现。再如由于疏忽漏写了路穷举路径测试也无法发现。再如由于疏忽漏写了路径,白盒测试也发现不了。径,白盒测试也发现不了。o所以,黑盒法和白盒法都不能使测试达到彻底。为所以,黑盒法和白盒法都不能使测试达到彻底。为了让有限的测试发现更多的错误,需精心设计测试了让有限的测试发现更多的错误,需精心设计测试用例。用例。2022/12/2214广东工业大学计算机学院17.3 测试用例的设计测试用例的设计17.3.1 白盒技术白盒技术o白盒测试是结构测试,所以一般都是以程序的
14、内部白盒测试是结构测试,所以一般都是以程序的内部逻辑结构为基础来设计测试用例。逻辑结构为基础来设计测试用例。o1.逻辑覆盖逻辑覆盖o下面根据如图下面根据如图17-1所示的程序,分别讨论几种常所示的程序,分别讨论几种常用的覆盖技术。用的覆盖技术。图图17-1 测试流程图测试流程图2022/12/2215广东工业大学计算机学院几种常用的逻辑覆盖技术几种常用的逻辑覆盖技术o1)语句覆盖o2)判定覆盖o3)条件覆盖o4)判定/条件覆盖o5)条件组合覆盖o6)路径覆盖2022/12/2216广东工业大学计算机学院表表17-1 6种覆盖标准的对比种覆盖标准的对比发现错误能力覆盖标准要求弱强语句覆盖每条语句
15、至少执行一次判定覆盖每个判定的每个分支至少执行一次条件覆盖每个判定的每个条件应取到各种可能的值判定/条件覆盖同时满足判定覆盖和条件覆盖条件组合覆盖每个判定中各条件的每一种组合至少出现一次路径覆盖使程序中每一条可能的路径至少执行一次2022/12/2217广东工业大学计算机学院2.循环覆盖循环覆盖 o1)单循环o设设n为可允许执行循环的最大次数。可设计测试数为可允许执行循环的最大次数。可设计测试数据实现下列的情况:据实现下列的情况:o(1)跳过循环。)跳过循环。o(2)只执行循环一次。)只执行循环一次。o(3)执行循环)执行循环m次,其中次,其中mn。o(4)执行循环)执行循环n次和次和n+1次
16、。次。2022/12/2218广东工业大学计算机学院o2)嵌套循环o对嵌套循环结构的测试步骤为:对嵌套循环结构的测试步骤为:o(1)将外循环固定,对内层进行单循环测试。)将外循环固定,对内层进行单循环测试。o(2)由里向外,进行下一层的循环测试。)由里向外,进行下一层的循环测试。2022/12/2219广东工业大学计算机学院3.基本路径测试基本路径测试设计基本路径测试的步骤为:设计基本路径测试的步骤为:(1)以详细设计或源程序为基础,导出程序流程图的)以详细设计或源程序为基础,导出程序流程图的拓扑结构拓扑结构程序图。程序图。o (a)程序流程图 (b)程序图o 图17-2 程序流程图和程序图
17、2022/12/2220广东工业大学计算机学院o(2)程序图)程序图G的环路复杂性的环路复杂性V(G)的计算的计算 o例如,图例如,图17-2(b)的)的V(G)=4,还可以按如下两种方法,还可以按如下两种方法计算:计算:oV(G)=判定结点数判定结点数+1=3+1=4。oV(G)=边的数量边的数量-节点数量节点数量+2=11-9+2=4。o(3)确定只包含独立路径的基本路径集。)确定只包含独立路径的基本路径集。o例如,在图例如,在图17-2(b)所示的图中,一组独立的路径是:)所示的图中,一组独立的路径是:opath1:111opath2:1234510111opath3:123689101
18、11opath4:12367910111o(4)设计测试用例,确保基本路径集合中每条路径的执行。)设计测试用例,确保基本路径集合中每条路径的执行。2022/12/2221广东工业大学计算机学院17.3.2 黑盒技术黑盒技术o黑盒测试是注重于测试软件的功能需求,因此需要黑盒测试是注重于测试软件的功能需求,因此需要研究需求说明和概要设计说明中有关程序功能或输研究需求说明和概要设计说明中有关程序功能或输入、输出之间的关系等信息,并且要根据功能得到入、输出之间的关系等信息,并且要根据功能得到预期的输出结果,从而与测试后的结果进行分析比预期的输出结果,从而与测试后的结果进行分析比较。黑盒测试不是白盒测试
19、的替代,而是检查出和较。黑盒测试不是白盒测试的替代,而是检查出和白盒测试不同类型的错误。黑盒测试一般是在测试白盒测试不同类型的错误。黑盒测试一般是在测试的后期使用。用黑盒技术设计测试用例的方法一般的后期使用。用黑盒技术设计测试用例的方法一般有以下有以下4种,但没有一种方法能提供一组完整的测种,但没有一种方法能提供一组完整的测试用例,以检查程序的全部功能。在实际测试中应试用例,以检查程序的全部功能。在实际测试中应该把各种方法结合起来使用。该把各种方法结合起来使用。2022/12/2222广东工业大学计算机学院1.等价类划分等价类划分 o等价类划分是选择测试子集的办法。它将输入数据等价类划分是选择
20、测试子集的办法。它将输入数据域按有效的或无效的(也称合理的或不合理的)划域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,认为测试等价类的代表值的结分成若干个等价类,认为测试等价类的代表值的结果就等于对该类其他值的测试。果就等于对该类其他值的测试。o利用等价类测试的步骤如下:利用等价类测试的步骤如下:o1)划分等价类)划分等价类o2)确定测试用例)确定测试用例2022/12/2223广东工业大学计算机学院划分等价类可以遵照的经验:划分等价类可以遵照的经验:o(1)如果某个输入条件规定了取值范围或值的个数,则可)如果某个输入条件规定了取值范围或值的个数,则可确定一个合理的等价类(输入
21、值或数在此范围内)和两个确定一个合理的等价类(输入值或数在此范围内)和两个不合理等价类(输入值或个数小于这个范围的最小值或大不合理等价类(输入值或个数小于这个范围的最小值或大于这个范围的最大值)。于这个范围的最大值)。o(2)如果规定了输入数据的一组值,而且程序对不同的输)如果规定了输入数据的一组值,而且程序对不同的输入值做不同的处理,则每个允许的输入值是一个合理等价入值做不同的处理,则每个允许的输入值是一个合理等价类,此外还有一个不合理等价类(任何一个不允许的输入类,此外还有一个不合理等价类(任何一个不允许的输入值)。值)。o(3)如果规定了输入数据必须遵循的规则,可确定一个合)如果规定了输
22、入数据必须遵循的规则,可确定一个合理等价类(条例规则)和若干个不合理等价类(从各种不理等价类(条例规则)和若干个不合理等价类(从各种不同角度违反规则)。同角度违反规则)。o(4)如果已划分的等价类中各元素在程序中的处理方式不)如果已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分为更小的等价类。同,则应将此等价类进一步划分为更小的等价类。o正确分析被测程序的功能和输入条件是正确划分等价类的基础。正确分析被测程序的功能和输入条件是正确划分等价类的基础。2022/12/2224广东工业大学计算机学院2)确定测试用例o(1)为每一个等价类编号。)为每一个等价类编号。o(2)设计一
23、个合理等价类的测试用例,对于各个)设计一个合理等价类的测试用例,对于各个输入条件,使其尽可能多地覆盖尚未被覆盖过的合输入条件,使其尽可能多地覆盖尚未被覆盖过的合理等价类。重复这步,直到覆盖了所有的合理等价理等价类。重复这步,直到覆盖了所有的合理等价类。类。o(3)设计一个不合理等价类的测试用例。因为在)设计一个不合理等价类的测试用例。因为在输入中有一个错误存在时,往往会屏蔽掉其他错误输入中有一个错误存在时,往往会屏蔽掉其他错误显示,因此设计不合理的等价类的测试数据时,只显示,因此设计不合理的等价类的测试数据时,只覆盖一个不合理等价类。重复这一步,直到所有不覆盖一个不合理等价类。重复这一步,直到
24、所有不合理等价类被覆盖。合理等价类被覆盖。2022/12/2225广东工业大学计算机学院例例:用等价类划分法设计测试用例用等价类划分法设计测试用例o例如,有一报表处理系统,要求用户输入处理报表例如,有一报表处理系统,要求用户输入处理报表的日期。假设日期限制在的日期。假设日期限制在1990年年1月至月至1999年年12月,即系统只能对该段时期内的报表进行处理。月,即系统只能对该段时期内的报表进行处理。如果用户输入的日期不在此范围内,则显示输入错如果用户输入的日期不在此范围内,则显示输入错误信息。该系统规定日期由年、月的误信息。该系统规定日期由年、月的6位数字字符位数字字符组成,前组成,前4位代表
25、年,后两位代表月。现用等价类位代表年,后两位代表月。现用等价类划分法设计测试用例,来测试程序的划分法设计测试用例,来测试程序的“日期检查功日期检查功能能”。2022/12/2226广东工业大学计算机学院(1)划分等价类并编号)划分等价类并编号o划分成划分成3个有效等价类,个有效等价类,7个无效等价类,如表个无效等价类,如表17-3所示。所示。表表17-3“报表日期报表日期”的输入条件的等价类表的输入条件的等价类表输入等价类合理等价类不合理等价类报表日期的类型及长度1.6位数字字符2.有非数字字符3.少于6个数字字符4.多于6个数字字符年份范围5.在19901999之间6.小于19907.大于1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第17章:软件测试 17 软件 测试
限制150内