软件工程第12章34187.pptx
《软件工程第12章34187.pptx》由会员分享,可在线阅读,更多相关《软件工程第12章34187.pptx(125页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第12章章软件测试软件测试软件测试是对软件规格说明、软件设计软件测试是对软件规格说明、软件设计和编码的最全面也是最后的审查。和编码的最全面也是最后的审查。通过软件测试,可以发现软件中绝大部通过软件测试,可以发现软件中绝大部分潜伏的错误,从而可以大大提高软件分潜伏的错误,从而可以大大提高软件产品的正确性、可靠性,进而可显著提产品的正确性、可靠性,进而可显著提高产品质量。高产品质量。统计表明,软件测试工作往往占软件开统计表明,软件测试工作往往占软件开发总工作量的发总工作量的40%以上。甚至以上。甚至35倍以上。倍以上。第第12章章软件测试软件测试本章将介绍:本章将介绍:软件测试的基本知识;软件测
2、试的基本知识;软件测试的常用方法和技术;软件测试的常用方法和技术;软件测试的过程;软件测试的过程;软件的调试与排错技术;软件的调试与排错技术;软件测试的工具。软件测试的工具。第第12章章软件测试软件测试12.1 软件测试的基本知识软件测试的基本知识12.2 软件测试技术软件测试技术12.3 软件测试过程软件测试过程12.4 调试调试12.5 测试工具测试工具12.1 软件测试的基本知识软件测试的基本知识软件测试是执行程序发现并排除软件测试是执行程序发现并排除程序中潜伏的错误的过程。程序中潜伏的错误的过程。软件测试是软件投入运行前,对软件测试是软件投入运行前,对软件需求分析、设计、实现的强软件需
3、求分析、设计、实现的强有力的最终审查。有力的最终审查。12.1.1 软件测试的目标与原则软件测试的目标与原则测试用例测试用例为了进行有效的测试而设计的输为了进行有效的测试而设计的输入数据和预期的输出结果数据。入数据和预期的输出结果数据。Myers在其软件测试著作中对软件测试的目标在其软件测试著作中对软件测试的目标提出以下观点:提出以下观点:软件测试是为了发现错误而运行程序的过程;软件测试是为了发现错误而运行程序的过程;一个好的测试用例能够发现至今尚未发现的一个好的测试用例能够发现至今尚未发现的 错误;错误;一个成功的测试是发现了至今尚未发现的错一个成功的测试是发现了至今尚未发现的错 误的测试。
4、误的测试。测试原则测试原则应尽早和不断地进行软件应尽早和不断地进行软件“测试测试”,即将这种,即将这种“测试测试”贯穿于软件开发的各个阶段,坚持各贯穿于软件开发的各个阶段,坚持各个阶段的技术评审,以便尽早地发现和预防错个阶段的技术评审,以便尽早地发现和预防错误。误。测试用例中,不仅要选择合理的输入数据,还测试用例中,不仅要选择合理的输入数据,还要选择不合理的输入数据。要选择不合理的输入数据。在开发各阶段应事先分别制定出相应的测试计在开发各阶段应事先分别制定出相应的测试计划,在测试开始后应严格执行,防止随意性。划,在测试开始后应严格执行,防止随意性。对发现错误较多的程序模块,应进行重点测试。对发
5、现错误较多的程序模块,应进行重点测试。Pareto指出,测试发现错误的指出,测试发现错误的80%集中在集中在20%的模块中。发现错误较多的模块质量较差,需的模块中。发现错误较多的模块质量较差,需重点测试,并要测试是否引入了新的错误。重点测试,并要测试是否引入了新的错误。测试原则测试原则避免程序员测试自己的程序。避免程序员测试自己的程序。测试用例的设计应有第三方参与。对于大型软测试用例的设计应有第三方参与。对于大型软件的测试,一般的做法是:设计者与测试者共件的测试,一般的做法是:设计者与测试者共同完成单元测试任务,而综合测试由专门的测同完成单元测试任务,而综合测试由专门的测试机构负责,有时其中也
6、可以有设计者参加试机构负责,有时其中也可以有设计者参加用穷举测试是不现实的,一般通过设计测试用用穷举测试是不现实的,一般通过设计测试用例,充分覆盖所有条件或所有语句即可。例,充分覆盖所有条件或所有语句即可。长期妥善保存测试计划、测试用例、出错统计长期妥善保存测试计划、测试用例、出错统计和有关的分析报告。和有关的分析报告。12.1.2 软件测试的步骤软件测试的步骤图图14-1-1 测试步骤测试步骤部件部件代码代码部件部件代码代码单元测试单元测试单元测试单元测试单元测试单元测试部件部件代码代码集成测试集成测试功能测试功能测试性能测试性能测试验收测试验收测试安装测试安装测试设计设计规格说明规格说明系
7、统系统功能需求功能需求其他其他软件需求软件需求用户需求用户需求规格说明规格说明用户用户环境环境集成后集成后的模块的模块功能功能系统系统验证,验证,生效的生效的软件软件被接受被接受的系统的系统在使用中的系统在使用中的系统测试后测试后的模块的模块12.1.2 软件测试的步骤软件测试的步骤q在本书中,从软件工程的角度:在本书中,从软件工程的角度:将单元测试与详细设计对应起来,即在详细设计阶段将单元测试与详细设计对应起来,即在详细设计阶段就应制定出单元测试计划;就应制定出单元测试计划;而集成测试又称为综合测试,可以把概要设计和集成而集成测试又称为综合测试,可以把概要设计和集成测试对应起来,在概要设计阶
8、段就可以制定集成测试测试对应起来,在概要设计阶段就可以制定集成测试计划;计划;将功能测试、性能(行为)测试、验收测试统称为验将功能测试、性能(行为)测试、验收测试统称为验收测试(也称确认测试),与软件系统需求分析阶段收测试(也称确认测试),与软件系统需求分析阶段对应起来,在需求分析阶段就应制定出验收准则和验对应起来,在需求分析阶段就应制定出验收准则和验收测试计划,验收测试应提交经用户确认的软件产品;收测试计划,验收测试应提交经用户确认的软件产品;最后,将软件、硬件等要素构成一个完整的基于计算最后,将软件、硬件等要素构成一个完整的基于计算机的系统,再进行系统测试,使系统测试与系统定义机的系统,再
9、进行系统测试,使系统测试与系统定义相对应,即在系统定义阶段就应制定系统测试计划。相对应,即在系统定义阶段就应制定系统测试计划。12.1.2 软件测试的步骤软件测试的步骤图图14-1-2 软件工程的开发与测试的关系软件工程的开发与测试的关系系统工程系统工程需求分析需求分析概要设计概要设计设计、编码设计、编码单元测试单元测试集成测试集成测试验收测试验收测试系统测试系统测试12.1.3 测试阶段的信息流测试阶段的信息流图图14-1-3 测试阶段的信息流测试阶段的信息流测试测试评价评价排错排错可靠性可靠性模型模型软件配置软件配置测试配置测试配置测试结果测试结果错误错误错误统计错误统计预期结果预期结果正
10、确的程序正确的程序可靠性预测可靠性预测12.1.3 测试阶段的信息流测试阶段的信息流q测试的输入流有软件配置和测试配置。测试的输入流有软件配置和测试配置。软件配置由需求规格说明、设计说明、软件配置由需求规格说明、设计说明、源代码等组成;源代码等组成;测试配置包括测试计划、测试用例(其测试配置包括测试计划、测试用例(其中包括预期的结果)、测试工具等组成。中包括预期的结果)、测试工具等组成。测试结果评价测试结果评价经常发现严重的错误并需要修改软件,经常发现严重的错误并需要修改软件,则软件的质量和可靠性一定不高,需要则软件的质量和可靠性一定不高,需要进一步测试;进一步测试;如果测试所发现的错误不多且
11、易于改正,如果测试所发现的错误不多且易于改正,软件功能看起来也较完善,则需考虑两软件功能看起来也较完善,则需考虑两种可能:种可能:1)软件质量和可靠性确实令人满意;)软件质量和可靠性确实令人满意;2)测试不全面,很可能还潜伏着严重错)测试不全面,很可能还潜伏着严重错误;误;如果测试过程没有发现任何错误,则很如果测试过程没有发现任何错误,则很有可能是测试配置不合理。有可能是测试配置不合理。12.1.4 软件测试的常用方法软件测试的常用方法1静态测试静态测试l静静态态测测试试是是采采用用人人工工检检测测和和计计算算机机辅辅助助静静态态分分析的方法对程序进行检测。析的方法对程序进行检测。人人工工检检
12、测测是是指指靠靠人人工工走走查查程程序序或或评评审审软软件件。这这种种走走查查与与评评审审主主要要针针对对编编码码的的质质量量和和软软件件开开发发各各个个阶阶段段的的文文档档,特特别别是是总总体体设设计计和和详详细细设设计计阶阶段段的的错错误误。能能发发现现30%70%的的逻逻辑辑设设计计和和编码错误。编码错误。计计算算机机辅辅助助静静态态分分析析是是指指利利用用静静态态分分析析软软件件工工具具对对程程序序进进行行静静态态分分析析,主主要要检检测测变变量量是是否否用用错错、参参数数是是否否匹匹配配、循循环环嵌嵌套套是是否否有有错错、是是否否有有死死循循环环和和永永远远执执行行不不到到的的死死代
13、代码码等等等等。同同时时,它还可对程序的特性进行分析。它还可对程序的特性进行分析。12.1.4 软件测试的常用方法软件测试的常用方法2动态测试动态测试 动态测试是指事先设计好一组测试用例,动态测试是指事先设计好一组测试用例,然后通过运行程序来发现错误。然后通过运行程序来发现错误。动态测试有两种测试方法:动态测试有两种测试方法:黑盒测试;黑盒测试;白盒测试。白盒测试。12.1.4 软件测试的常用方法软件测试的常用方法黑盒测试,又称为功能测试黑盒测试,又称为功能测试把被测把被测的程序模块看成一个黑匣子,即完全不的程序模块看成一个黑匣子,即完全不考虑程序的内部结构和处理过程,测试考虑程序的内部结构和
14、处理过程,测试仅在程序的接口上进行。仅在程序的接口上进行。白盒测试白盒测试把被测的程序看成一个透把被测的程序看成一个透明的白匣子,即完全了解程序的内部结明的白匣子,即完全了解程序的内部结构和详细的处理过程,测试是在程序的构和详细的处理过程,测试是在程序的内部结构上进行。即要求针对每一条逻内部结构上进行。即要求针对每一条逻辑路径都要设计测试用例,检查每一个辑路径都要设计测试用例,检查每一个分支和每一次循环的情况。分支和每一次循环的情况。穷举测试是不现实的。如上图,设循环体应执穷举测试是不现实的。如上图,设循环体应执行行30次,循环体中有次,循环体中有4个独立的分支,则最多个独立的分支,则最多有有
15、4 30 10 18个逻辑路径,假设每运行一个测试个逻辑路径,假设每运行一个测试用例平均花费用例平均花费1毫秒,则需花费毫秒,则需花费3千多万年。一千多万年。一般选用少量最有效的测试用例,以便覆盖每一般选用少量最有效的测试用例,以便覆盖每一个条件、每一个路径和每一个语句,从而以最个条件、每一个路径和每一个语句,从而以最少的代价发现尽可能多的错误。少的代价发现尽可能多的错误。开始开始结束结束12.1.5 软件测试中常见的错误类型软件测试中常见的错误类型按照错误的影响和造成的后果进行分类,按照错误的影响和造成的后果进行分类,可分为:较小错误,中等错误,较严重可分为:较小错误,中等错误,较严重错误,
16、严重错误,非常严重的错误,最错误,严重错误,非常严重的错误,最严重的错误。严重的错误。按照软件生存周期各个阶段分类,可分按照软件生存周期各个阶段分类,可分为:问题定义错误、需求分析规格说明为:问题定义错误、需求分析规格说明错误、设计错误、编码错误等等。错误、设计错误、编码错误等等。这里重点介绍一种按照错误的性质和范这里重点介绍一种按照错误的性质和范围进行分类的方法,可以将错误分为如围进行分类的方法,可以将错误分为如下几类:下几类:按照错误的性质和范围进行分类按照错误的性质和范围进行分类1功能错误功能错误 需求规格说明错误。主要是指其中需求规格说明错误。主要是指其中有错误、多余或遗漏的功能,有二
17、有错误、多余或遗漏的功能,有二义性或自相矛盾。义性或自相矛盾。设计实现错误。设计或实现的功能设计实现错误。设计或实现的功能不是规格说明或用户所要求的功能。不是规格说明或用户所要求的功能。按照错误的性质和范围进行分类按照错误的性质和范围进行分类2系统错误系统错误 外部接口错误。如与打印机的接口错误。外部接口错误。如与打印机的接口错误。内部接口错误。指各程序模块间的联系存在错内部接口错误。指各程序模块间的联系存在错误。如输入误。如输入/输出、数据保护、子程序访问等。输出、数据保护、子程序访问等。硬件结构错误。如错误地理解硬件结构错误。如错误地理解I/O指令、中断指令、中断处理、设备启动和初始化等而
18、引起的错误。处理、设备启动和初始化等而引起的错误。软件结构错误。由于软件结构不合理或不清晰软件结构错误。由于软件结构不合理或不清晰所引起的错误。往往在系统满载时才能发现。所引起的错误。往往在系统满载时才能发现。操作系统错误。该类错误是由于不了解操作系操作系统错误。该类错误是由于不了解操作系统而引起的,操作系统本身也有错误。统而引起的,操作系统本身也有错误。控制与顺序错误。包括事件的时间顺序不正确、控制与顺序错误。包括事件的时间顺序不正确、等待一个不可能发生的事件等等。等待一个不可能发生的事件等等。资源管理错误。既资源使用不当。资源死锁等。资源管理错误。既资源使用不当。资源死锁等。按照错误的性质
19、和范围进行分类按照错误的性质和范围进行分类3加工错误(算法错误)加工错误(算法错误)计算与操作错误。指计算、函数求值和一般计算与操作错误。指计算、函数求值和一般操作过程中的错误。操作过程中的错误。初始化错误。如忘记了初始化工作区、数据初始化错误。如忘记了初始化工作区、数据区,错误地对循环变量赋初值,不正确的初区,错误地对循环变量赋初值,不正确的初始化等等。始化等等。局部控制和次序错误。如遗漏路径、不可达局部控制和次序错误。如遗漏路径、不可达到的代码段、循环嵌套或终止条件不正确、到的代码段、循环嵌套或终止条件不正确、死循环等等。死循环等等。逻辑错误。如多分支、判断条件不正确等。逻辑错误。如多分支
20、、判断条件不正确等。按照错误的性质和范围进行分类按照错误的性质和范围进行分类4数据错误数据错误 动态数据错误。动态数据错误。静态数据错误。静态数据指直接或间接地出现静态数据错误。静态数据指直接或间接地出现在程序或数据库中的数据,其内容和格式都是在程序或数据库中的数据,其内容和格式都是固定的。因此在内容或格式上都可能存在错误。固定的。因此在内容或格式上都可能存在错误。数据内容错误。是指由于内容被破坏或被错误数据内容错误。是指由于内容被破坏或被错误地解释而造成的错误。地解释而造成的错误。数据结构错误。包括数据结构说明错误和数据数据结构错误。包括数据结构说明错误和数据结构使用错误。结构使用错误。数据
21、属性错误。数据属性是指数据内容的含义数据属性错误。数据属性是指数据内容的含义或语义,如整数、字符等。数据属性错误是指或语义,如整数、字符等。数据属性错误是指对数据属性的错误解释和错误使用而导致的错对数据属性的错误解释和错误使用而导致的错误。误。按照错误的性质和范围进行分类按照错误的性质和范围进行分类5代码错误代码错误 代码错误主要包括语法错误、键入错误、代码错误主要包括语法错误、键入错误、对语句的理解错误等。对语句的理解错误等。例如,例如,Myers(1976)指出,美国第一个)指出,美国第一个去金星的太空任务的失败是由于在一个去金星的太空任务的失败是由于在一个Fortran do循环中缺少一
22、个逗号。循环中缺少一个逗号。12.2 软件测试技术软件测试技术 12.2.1 白盒测试白盒测试 白盒测试的原则是:白盒测试的原则是:保证程序中每一独立的路径至少执行一次;保证程序中每一独立的路径至少执行一次;保证所有判定的每一个分支至少执行一次;保证所有判定的每一个分支至少执行一次;保证每个判定表达式中每个条件的所有可能结保证每个判定表达式中每个条件的所有可能结果至少出现一次;果至少出现一次;保证每一循环都在边界条件和一般条件至少各保证每一循环都在边界条件和一般条件至少各执行一次;执行一次;验证所有内部数据结构的有效性。验证所有内部数据结构的有效性。几种典型的白盒测试技术几种典型的白盒测试技术
23、1逻辑覆盖逻辑覆盖 l逻辑覆盖是指设计测试用例对程序的内逻辑覆盖是指设计测试用例对程序的内部分支逻辑结构进行部分或全部覆盖的部分支逻辑结构进行部分或全部覆盖的技术。技术。1)语句覆盖)语句覆盖 2)判定覆盖)判定覆盖 3)条件覆盖)条件覆盖 4)判定)判定/条件覆盖条件覆盖 5)条件组合覆盖)条件组合覆盖 6)路径覆盖)路径覆盖逻辑覆盖逻辑覆盖1)语句覆盖)语句覆盖 使程序中的每个语句至少执行一次。使程序中的每个语句至少执行一次。令令x=2,y=0,z=4作为测试数据,程序执作为测试数据,程序执行路径为行路径为abcde,使语句段,使语句段1和和2各执行一各执行一次,实现了语句覆盖。它不能检测
24、所有次,实现了语句覆盖。它不能检测所有判定条件的错误。比如,错把判定条件的错误。比如,错把z1写成了写成了z1)AND(y=0)(x=2)OR(z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde2)判定覆盖)判定覆盖分支覆盖分支覆盖判定覆盖是指设计足够多的测试用例,判定覆盖是指设计足够多的测试用例,使每个判定的每种可能结果都至少出现使每个判定的每种可能结果都至少出现一次,也就是使每个判定的每个分支都一次,也就是使每个判定的每个分支都至少执行一次。至少执行一次。可以设计如下两组数据以满足判定覆盖:可以设计如下两组数据以满足判定覆盖:x=3,y=0,z=1(通过路径(通过路径ab
25、ce););x=2,y=1,z=2(通过路径(通过路径acde)。)。判定覆盖必然满足语句覆盖。覆盖程度仍然判定覆盖必然满足语句覆盖。覆盖程度仍然不高。比如,错把不高。比如,错把z1写成了写成了z1)AND(y=0)(x=2)OR(z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde3)条件覆盖)条件覆盖条件覆盖是指设计足够的测试用例,使每个判定表条件覆盖是指设计足够的测试用例,使每个判定表达式中的每个条件的每种可能值都至少出现一次。达式中的每个条件的每种可能值都至少出现一次。如图,共有如图,共有4个条件:个条件:x 1,y=0,x=2,z 1。条件覆盖要求设计测试用例,覆盖第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 12 34187
限制150内