书签 分享 收藏 举报 版权申诉 / 134
上传文档赚钱

类型第7章-软件测试技术-普通高等院校计算机类专业系列教材-软件工程教学课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4848049
  • 上传时间:2023-01-17
  • 格式:PPT
  • 页数:134
  • 大小:621KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第7章-软件测试技术-普通高等院校计算机类专业系列教材-软件工程教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    软件 测试 技术 普通 高等院校 计算机 类专业 系列 教材 软件工程 教学 课件
    资源描述:

    1、第7章 软件测试技术 第7章 软件测试技术 7.1 软件测试基础软件测试基础 7.2 白盒测试技术白盒测试技术 7.3 黑盒测试技术黑盒测试技术 7.4 软件测试计划和测试分析报告软件测试计划和测试分析报告 7.5 软件测试策略软件测试策略 7.6 小结小结 第7章 软件测试技术 7.1 7.1 软件测试基础软件测试基础7.1.1 7.1.1 软件测试的概念、目的和原则软件测试的概念、目的和原则 1.1.软件测试的概念软件测试的概念 软件测试是在软件投入运行前对软件需求分析、软件设计规格说明和软件编码进行查错和纠错(包括代码执行活动与人工活动)。找错的活动称测试,纠错的活动称调试。可以说,软件

    2、测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。第7章 软件测试技术 2.2.软件测试的目的软件测试的目的 Glen Myers在他的软件测试著作中就软件测试的目的提出下列观点:(1)测试是一个为了寻找错误而运行程序的过程。(2)一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。(3)一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。第7章 软件测试技术 正确认识测试的目的是十分重要的,只有这样,才能设计出最能暴露错误的测试

    3、方案。测试的目的应从用户角度出发,通过软件测试暴露软件中潜在的错误和缺陷,而不是从软件开发者的角度出发,希望测试成为表明软件产品不存在错误,验证软件已正确实现用户的要求的过程。否则,开发者测试时会选择不易测试出错误和缺陷的用例,这与上述测试目的相违背。一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。测试的目标是能够以耗费最少时间与最小工作量找出软件系统中潜在的各种错误与缺陷。另外,我们应该认识到:测试只能证明程序中错误的存在,但不能证明程序中没有错误。因为即使实施了最严格的测试,仍然可能还有尚未被发现的错误或缺陷存在于程序当中,因而测试不能证明程序没有错误,但可能查出程序中的错误。第7章

    4、 软件测试技术 3.3.软件测试的基本原则软件测试的基本原则 人们为了提高测试的效率,在长期测试实验中积累了不少经验,下面列出了人们在实践中总结的主要基本原则:(1)尽早地并不断地进行软件测试。实际问题的复杂性、软件本身的复杂性与抽象性以及开发期各层人员工作的配合关系等各种错综复杂的因素使得软件开发的各个阶段都可能存在错误及潜在的缺陷。所以,软件开发的各阶段都应当进行测试。错误发现得越早,后阶段耗费的人力、财力就越少,软件质量相对就高一些。第7章 软件测试技术 (2)程序员或程序设计机构应避免测试自己设计的程序。测试是为了找错,而程序员大多对自己所编的程序存有偏见,总认为自己编的程序问题不大或

    5、无错误存在,因此很难查出错误。此外,设计机构在测试自己程序时,由于开发周期和经费等问题的限制,要采用客观的态度是十分困难的。从工作效率来讲,最好由与原程序无关的程序员和程序设计机构进行测试。第7章 软件测试技术 (3)测试用例中不仅要有输入数据,还要有与之对应的预期结果。测试前应当设定合理的测试用例。测试用例不仅要有输入数据,而且还要有与之对应的预期结果。如果在程序执行前无法确定预期的测试结果,由于人们的心理作用,可能把实际上是错误的结果当成是正确的。第7章 软件测试技术 (4)测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据。在设计测试用例时,不仅要有合法的输入测试用例,还要有非法

    6、的输入测试用例。在测试程序时,人们常忽视不合法的和预想不到的输入条件,倾向于考虑合法的和预期的输入条件。而在软件的实际使用过程中,由于各种因素的存在,用户可能会使用一些非法的输入,比如常会按错键或使用不合法的命令。对于一个功能较完善的软件来说,不仅当输入是合法的时候能正确运行,而且当有非法输入时,也应当能对非法的输入拒绝接受,同时给出对应的提示信息,使得软件便于使用。第7章 软件测试技术 (5)在对程序修改之后要进行回归测试。在修改程序的同时时常又会引进新的错误,因而在对程序修改完之后,还应用以前的测试用例进行回归测试,有助于发现因修改程序而引进的新的错误。第7章 软件测试技术 (6)程序中尚

    7、未发现的错误的数量通常与该程序中已发现的错误的数量成正比。经验表明:一段程序中若发现错误的数目越多,则此段程序中残存的错误数目也较多。例如:在美国的IBM/370的一个操作系统中,47%的错误(由用户发现的错误)仅与该系统的4%的程序模块有关。据此规律,在实际测验时,为了提高测试效率,要花较多的时间和代价来测试那些容易出错即出错多的程序段。而不要以为找到了几个错误,就认为问题已解决,不再需要继续测试了。第7章 软件测试技术 (7)妥善保留测试计划、全部测试用例、出错统计和最终分析报告,并把它们作为软件的组成部分之一,为维护提供方便。设计测试用例要耗费相当大的工作量,若测试完随意丢弃,以后一旦程

    8、序改错后需重新测试时,将重复设计测试用例,这会造成很大的浪费,因而妥善保留与测试有关的资料,能为后期的维护工作带来方便。(8)应当对每一个测试结果做全面检查。这条重要的原则时常被人们忽视。不仔细、全面地检查测试结果,就会使得有错误征兆的输出结果被漏掉。第7章 软件测试技术 (9)严格执行测试计划,排除测试的随意性。测试计划内容应包括:所测软件的功能、输入和输出、测试内容、各项测试的进度安排、资源要求、测试资料、测试工具、测试用例的选择、测试的控制方式和过程、系统组装方式、跟踪规程、调试规程、回归测试的规定以及评价标准等。第7章 软件测试技术 7.1.2 7.1.2 软件测试的过程软件测试的过程

    9、图7.1 测试的过程1测试软件配置测试配置测试工具测试结果2评价3调试错误修正文件结果预测出错率4构造可靠性模型预测可靠性正确第7章 软件测试技术 测试过程有三类输入:软件配置、测试配置和测试工具。软件配置包括软件需求说明书、设计说明书、源程序清单等文档。测试配置包括测试方案、测试计划、测试用例、测试驱动程序等文档。测试工具包括支持测试的软件。输出信息有修正软件的文件和预测可靠性或得出纠错后可交付使用的正确软件。测试的信息流是不断递归的过程,也是相对有限的测试过程,而不是无限的过程。(1)软件配置:指被测试软件的文件,如软件需求规格说明书、软件设计说明书和源程序清单等文档。第7章 软件测试技术

    10、 (2)测试配置:指测试方案、测试计划、测试用例、测试驱动程序等文档。实际上,在整个软件工程过程中,测试配置只是软件配置的一个子集。(3)测试工具:是为了提高测试效率而设计的支持软件测试的软件。例如,测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序以及驱动测试的测试数据库等。(4)测试评价:由测试出的错误迹象,分析、找出错误的原因和位置,以便纠正和积累软件设计的经验。第7章 软件测试技术 (5)纠错(调试):是指找到出错的原因与位置并纠错,包括修正文件直到软件正确为止。纠错过程是测试过程中最无法预料的部分。为了诊断和纠正一个错误,可能需要一小时、一天、甚至几个月的时间。正是因

    11、为纠错本身所具有的不确定性,常常难以准确地安排测试日程表。第7章 软件测试技术 (6)可靠性模型:通过对测试出的软件出错率的分析,建立模型,得出可靠的数据,指导软件的设计与维护。对测试结果进行收集和评价后,软件可靠性能够达到的质量指标也就清楚了。若出现一些有规律的、严重的、要求修改设计的错误,软件的质量和可靠性值得怀疑,应作进一步测试。另外,若软件功能看来完成得很好且遇到错误也容易纠正,从而可以得到两种不同的结论:一种是软件质量和可靠性是可以接受的;另一种是所进行的测试尚不足以发现严重的错误。若没有发现任何错误,可能是由于测试配置不够周到,依然有潜在的错误存在。若将错误放过,在维护阶段被用户发

    12、现时再纠正的话,所需费用将可能是开发阶段的4060倍。第7章 软件测试技术 7.1.3 7.1.3 软件测试的方法软件测试的方法 软件测试的目的是以最少的测试用例集合测试出更多的程序中潜在错误。如何测试的彻底,怎样设计测试用例是测试的关键技术。依据测试过程是否在实际应用环境中来分,软件测试技术分为静态分析技术与动态测试技术两种。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)之分。有关白盒法与黑盒法的内容将在后两节中介绍,在此节中仅介绍静态分析技术与动态测试技术。第7章 软件测试技术 1.1.静态分析技术静态分析技术 静态分析技术不执行被测试软件,可对需求分析说明书、软件设

    13、计说明书、源程序做结构检查、流图分析、符号执行等来找出软件错误。可以人工进行分析,也可以用测试工具静态分析程序来进行,被测试程序的正文作为输入,经静态分析程序分析得出分析结果。(1)结构检查是手工分析技术,由一组人员对程序设计、需求分析、编码测试工作进行评议,虚拟执行程序,并在评议中作错误检验。此方法能找出典型程序30%70%有关逻辑设计与编码的错误。第7章 软件测试技术 (2)流图分析是通过分析程序流程图的代码结构,来检查程序的语法错误信息、语句中标识符引用状况、子程序和函数调用状况及无法执行到的代码段。此方法便于分析编码实现与测试结果分析。(3)符号执行是一种符号化定义数据,并为程序每条路

    14、径给出符号表达式,对特定路径输入符号,经处理输出符号,从而判断程序行为是否错误,达到分析错误目的的方法。这种方法比数值计算复杂得多,易出错,又不适于非数值计算,故使用较少。第7章 软件测试技术 2.2.动态测试技术动态测试技术 动态分析是执行被测程序,由执行结果分析程序可能出现的错误。可以人工设计程序测试用例,也可以由测试工具动态分析程序来做检查与分析。动态测试包括功能测试和结构测试。它把程序看作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。这样动态测试的算法可归纳为第7章 软件测试技术(1)选取定义域中的有效值,或定义域外无效值。

    15、(2)对已选取值决定预期的结果。(3)用选取值执行程序。(4)观察程序行为,记录执行结果。(5)将(4)的结果与(2)的结果相比较,不吻合则程序有错。动态测试既可以采用白盒法对模块进行逻辑结构的测试,又可以用黑盒法做功能结构的测试。接口的测试,都是以执行程序并分析执行结果来查错的。第7章 软件测试技术 7.2 7.2 白盒测试技术白盒测试技术7.2.1 7.2.1 白盒测试概念白盒测试概念 如果已知产品的内部活动方式,就可以测试它的内部活动是否都符合设计要求。这种方法称白盒测试(White-box Testing),它是对软件的过程性细节做细致的检查。白盒测试又称为结构测试或逻辑驱动测试,此方

    16、法是将测试对象比作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构和相关信息来设计或选择测试用例,对穿过软件的逻辑路径进行测试,可以在不同点检查程序的状态,以确定实际状态与预期状态是否一致。第7章 软件测试技术 软件人员使用白盒方法测试程序模块的检查点主要包括:对程序模块的所有独立的执行路径应至少测试一次;对所有的逻辑判定,取“真”与取“假”两种情况都能至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。表面看来,白盒测试是可以进行完全的测试的,从理论上讲也应该如此。只要能确定测试模块的所有逻辑路径,并为每一条逻辑路径设计测试用例,并评价所得到的结果,就可得到10

    17、0%正确的程序。但实际测试中,这种穷举法是无法实现的,因为即使是很小的程序,也可能会出现数目惊人的逻辑路径。如图7-2所示是一个小程序的流程图。第7章 软件测试技术 图中,一个圆圈代表一行源程序代码(或一个语句块)。其中有五条通路,左边曲线箭头表示执行次数不超过20次循环。这样的执行路径就有520个,近似为1014个可能的路径。如果1 ms完成一个测试,由此测试程序需3170年。由此看出,即使精确地实现了白盒测试,也不能断言测试过的程序全正确,因为实行穷举测试,由于工作量过大,需用时间过长,实施起来是不现实的。这就是程序测试的经济学问题。既然在测试阶段穷举法测试是不可行的,那么为了节省时间和资

    18、源,提高测试效率,就必须精心设计测试用例。需从大量的可用测试用例中精选出少量的测试数据,使得采用这些测试数据能够达到最佳的测试效果,即能高效地、尽可能多地发现隐藏的错误。测试只能发现错误,并不能保证程序没有错误。第7章 软件测试技术 循环小于等于20次图7.2 白盒测试中的穷举测试 第7章 软件测试技术 7.2.2 7.2.2 白盒测试的测试用例设计白盒测试的测试用例设计 测试用例设计的基本目的是确定一组最有可能发现某个错误或某类错误的测试数据。无论是黑盒测试(下节内容介绍),还是白盒测试都不可能进行穷举测试,所以测试用例的设计只能在周期和经费允许的条件下,使用最少数目的测试用例,发现最大数目

    19、可能的错误。实际工作中,采用黑盒与白盒相结合的技术是较为合理的做法,可以选取并测试数量有限的重要逻辑路径,对一些重要数据结构的正确性进行完全的检查。这样不仅能证实软件接口的正确性,同时在某种程度上能保证软件内部工作也是正确的。第7章 软件测试技术 现在已经提出了许多测试用例的设计技术。下面只对白盒测试的重要测试方法进行介绍,黑盒测试的方法将在下节内容中介绍。逻辑覆盖是以程序内部逻辑为基础的测试技术,属白盒测试。这一测试考虑测试用例对程序内部逻辑覆盖的程度。当然,最彻底的覆盖是覆盖程序中的每一条路径,但是由于程序中可能会含有循环,路径的数目将极大,要执行每一条路径是不可能的,所以只希望覆盖的程度

    20、尽可能高些。目前常用的一些覆盖技术有以下八种。第7章 软件测试技术 1.1.语句覆盖语句覆盖 语句覆盖的含义是选择足够多的测试用例,使得被测程序中的每条语句至少执行一次。图7.3是测试的一段程序的流程图对应的C源程序(用C语言书写)。float A,B,X;if(A1&B=0)X=X/A;if(A=2|X1)X=X+1;第7章 软件测试技术 为了使每条语句都执行一次,程序应该按sacbed路径执行,为实现此路径而选取下面的一组输入数据(实际上X可以是任意实数):A=2,B=0,X=2第7章 软件测试技术 通过上例可以看出,这组数据只测试了条件为真的情况,若实际输入的条件为假时有错误显然测试不出

    21、来。事实上,语句覆盖对程序的逻辑覆盖很少,语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值的情况。在上例中,为了执行sacbed路径以测试每个语句,只需两个判定表达(A1)AND(B=0)和(A=2)OR(X1)都取真值,上例中测试数据足够满足要求。但是,若程序中第一个判断表达式中的逻辑运算符“AND”错写成“OR”,或把第二个判定表达式中的条件“X1”误写成“X1”,上组测试数据则不符要求,不能查出这些错误。与后面所介绍的其他覆盖相比,语句覆盖是最弱的逻辑覆盖准则。第7章 软件测试技术 2.2.判定覆盖判定覆盖 判定覆盖就是设计若干个测试用例,运行所测程序,使得程序中

    22、每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。判定覆盖的每个语句至少经历一次。例如对于图7.3来说,能够分别覆盖路径sacbed和sabd的一组测试数据,或者覆盖路径sacbd和sabed的两组测试数据均可满足判定覆盖标准。例如,以两组测试数据就可做到判定覆盖:(1)A=4,B=0,X=1(覆盖sacbd);(2)A=2,B=1,X=3(覆盖sabed)。判定覆盖的缺点仍然是覆盖的不全,只覆盖了路径的一半,如将X1误写成X1,上组(1)数据仍覆盖sacbd,可见判定覆盖仍然很弱,但比语句覆盖强。第7章 软件测试技术 入口A1AND B0XX/A12saA2OR X1bcXX

    23、13e4567FF返回dTT图7.3 语句覆盖 第7章 软件测试技术 3.3.条件覆盖条件覆盖 条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。条件覆盖使得每个语句至少执行一次。例如对于图7.3来说,共有两个判定表达式,每个表达式中有两个条件。为满足条件覆盖,在a点有以下几种情况出现:A1,A1,B0,B0;在b点有以下几种情况出现:A=2,A2,X1,X1。因而,只需要使用下面两组测试数据就可达到上述覆盖标准。第7章 软件测试技术 (1)A=2,B=0,X=3(满足A1,B0,A=2和X1的条件,执行路径sacbed);(2)A=0,B=1,

    24、X=0(满足A1,B0,A2和X1的条件执行路径sabd)。第7章 软件测试技术 条件覆盖一般比判定覆盖强,因为条件覆盖使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。上例两组测试数据也同时满足判定覆盖标准。但是,也可能有相反情况:虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。例如,若使用以下两组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准。(1)A=2,B=0,X=1(满足A1,B0,A=2和X1的条件,执行路径sacbed);(2)A=1,B=1,X=2(满足A1,B0,A2和X1的条件,执行路径sabed)。上述例子的第二个判定表

    25、达式的值总为真,不满足判定覆盖的要求,为解决这一矛盾,需要对条件和分支兼顾。第7章 软件测试技术 4.4.判定判定/条件覆盖条件覆盖 判定/条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。即要求各个判断的所有可能的条件取值组合至少执行一次。对于图7.3的例子而言,下述两组测试数据满足判定/条件覆盖标准。(1)A=2,B=0,X=4;(2)A=1,B=1,X=1。第7章 软件测试技术 判定/条件覆盖也有缺陷。从表面来看,它测试了所有条件的取值。但实际并不是这样。因为一些条件往往掩盖了另一些条件。对于条件表达式(A1)AND

    26、(B=0)来说,只要(A1)的测试为真,才需测试(B=0)的值来确定此表达式的值,但是若(A1)的测试值为假时,不需再测(B=0)的值就可确定此表达式的值为假,因而B=0没有被检查。同理,对于(A=2)OR(X1)这个表达式来说,只要(A=2)测试结果为真,不必测试(X1)的结果就可确定表达式的值为真。所以对于判定/条件覆盖来说,逻辑表达式中的错误不一定能够查得出来。第7章 软件测试技术 5.5.条件组合覆盖条件组合覆盖 条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。对于图7.3的例子来说,共有以下八种可能的条件组合:(1)A1,B=0 属

    27、第一个判断的取真分支;(2)A1,B0 属第一个判断的取假分支;(3)A1,B=0 属第一个判断的取假分支;第7章 软件测试技术(4)A1,B0 属第一个判断的取假分支;(5)A2,X1 属第二个判断的取真分支;(6)A2,X1 属第二个判断的取真分支;(7)A2,X1 属第二个判断的取真分支;(8)A2,X1 属第二个判断的取假分支。第7章 软件测试技术 对于每个判断,要求所有可能的条件的取值组合都必须取到。在图7.3中,每个判断各有两个条件,所以各有四个条件取值的组合。下面的四组测试数据可以使上面列出的八种组合每种至少出现一次:(1)A=2,B=0,X=4 (针对(1),(5)两种组合,执

    28、行路径sacbed);(2)A=2,B=1,X=1 (针对(2),(6)两种组合,执行路径sabed);(3)A=1,B=0,X=2 (针对(3),(7)两种组合,执行路径sabed);(4)A=1,B=1,X=1 (针对(4),(8)两种组合,执行路径sabd)。第7章 软件测试技术 必须明确:在此例中条件组合覆盖并未要求第一个判定的四个组合与第二个判定的四个组合再进行组合,要那样的话,就需42=16个测试用例了。显然,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件覆盖标准的测试数据并不一定能使程

    29、序中的每条路径都执行到,如上述四组测试数据都没有测试到路径sacbd。以上简单介绍了几种逻辑覆盖标准。在上述过程中,实现了多次涉及到测试数据执行的路径测试。显然,测试数据可检测的程序路径的多少也反映了对程序测试的详尽程度。从对程序路径的覆盖程度分析,下面提出一些主要的逻辑覆盖标准。第7章 软件测试技术 6.6.点覆盖点覆盖 点覆盖是设计足够的测试数据,使程序执行时至少经过程序图中每个节点一次。图论中,点覆盖的概念定义如下:如果连通图G的子图G是连通的,且包含G的所有节点,则称G是G的点覆盖。在正常情况下,程序图是连通的有向图,图中每个节点相当于程序流程图中的一框(一个或多个语句),所以点覆盖相

    30、当于语句覆盖。第7章 软件测试技术 7.7.边覆盖边覆盖 边覆盖是设计足够的测试数据,使得程序执行路径至少经过程序图中每一个边一次,相应的图论中的定义是:如果连通图G和子图G是连通的,而且G包含G的所有边,则称G是G的边覆盖。图7.4是由图7.3得出的程序图。为了使程序执行路径经过程序图的边覆盖(1,2,3,4,5,6,7),至少需要两组测试数据(分别执行路径1-2-3和1-4-5-6-7,或分别执行路径1-4-5-3和1-2-6-7)。第7章 软件测试技术 一般情况下,边覆盖和判定覆盖是一致的。例如,上述中满足判定覆盖标准的测试数据同时满足边覆盖的标准。(1)A=4,B=0,X=1(执行路径

    31、1-4-5-3,即覆盖sacbd);(2)A=2,B=1,X=3(执行路径1-2-6-7,即覆盖sacbd)。第7章 软件测试技术 1sabd23ec4567图7.4 和图7.3对应的程序图 第7章 软件测试技术 8.8.路径覆盖路径覆盖 路径覆盖是选取足够多测试数据,使程序的每条可能路径都至少执行一次(若程序图中存在环,则要求每个环至少经过一次)。对于图7.4而言,共有四条可执行的路径:1-2-3;1-2-6-7;1-4-5-3和1-4-5-6-7。对应于这四条路径,下面四组测试数据可以满足路径覆盖标准:(1)A=1,B=1,X=1(执行路径1-2-3);(2)A=1,B=1,X=2(执行路

    32、径1-2-6-7);(3)A=3,B=0,X=1(执行路径1-4-5-3);(4)A=2,B=0,X=4(执行路径1-4-5-6-7)。第7章 软件测试技术 路径覆盖相对来说是相当强的逻辑覆盖标准。测试数据暴露程序错误的能力比较强,有一定的代表性,它能够保证程序中每条可能的路径都至少执行一次。但是路径覆盖并没有检验表达式中条件的各种组合情况,而只考虑每个判定表达式的取值。若把路径覆盖和条件覆盖组合起来,可以设计出检错能力更强的测试数据。第7章 软件测试技术 7.3 7.3 黑盒测试技术黑盒测试技术7.3.1 7.3.1 黑盒测试概念黑盒测试概念 黑盒测试方法是在已知产品应该具有的功能的情况下,

    33、通过测试来检验是否每个功能都能正常使用的测试方法。对于软件测试而言,黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试又称功能测试。使用黑盒测试法,为了做到穷尽测试,至少必须对所有输入数据的各种可能值的排列组合都进行测试。与白盒法相似,由此得到的应测试的情况数往往大到实际上根本无法测试的程度,即黑盒测试使用所有有效和无效的输入数据来测试程序是不现实的。所以,黑盒测试同样不能做到穷尽测试,只能选取

    34、少量最有代表性的输入数据,以期用较少的代价暴露出较多的程序错误。第7章 软件测试技术 7.3.2 7.3.2 黑盒测试的测试用例设计黑盒测试的测试用例设计 1.1.等价类划分等价类划分 1)划分等价类 等价类划分是黑盒法设计测试方案的一种典型的、实用的重要测试方法。等价类划分是根据数据测试的等效性原理来进行划分的。数据测试的等效性是指将分类的数据取其子集中一个数据做测试与子集中其他数据测试的效果是等效的,即子集中的一个数据能测出软件错误,那么子集中的其余数据也能测出错误;相反,子集中的一个数据测试不出程序错误,子集中的其余数据也测不出错误。第7章 软件测试技术 等价类划分是把程序的输入数据集合

    35、按输入条件划分为若干个等价类,每一个等价类相对于输入条件表示为一组有效或无效的输入,然后为每一等价类设计一个测试用例。如果某个等价类中的一个输入条件作为测试数据查出了错误,那么使用这一等价类中的其他输入条件,也会查出同样的错误;反之,若使用某个等价类中的一个输入条件作为数据进行测试没有查出错误,则使用这个等价类中的其他输入条件也同样查不出错误。简单地讲,有效等价类是指程序的合理输入数据,利用它可检验程序是否能实现预期的功能和性能。无效等价类是指其他不合理、无意义的数据,利用它可检查程序中功能和性能的实现是否不符合规格说明要求。在确定输入等价类时还需要分析输出数据的等价类,以便根据输出数据的等价

    36、类导出对应的输入等价类。等价类的划分在很大程度上是一个探索性的过程,主要依靠的是测试人员的经验,下面几点仅供参考。第7章 软件测试技术 (1)如果某个输入条件规定了输入值的范围(其数值为1999),则可划分为一个合理等价类(大于等于1而小于等于999的数)和两个不合理的等价类(小于1和大于999的数)。(2)如果某个输入条件规定了输入数据的个数(如每名学生一学期内只能选修13门课程),则可划分为一个高效等价类(选修13门课程)和两个无效等价类(不选修和选修超过3门)。(3)如果某个输入条件规定了一组可能的值,而且程序可以对每个输入值分别进行处理(如出差时交通工具的类型必须是火车、汽车或轮船),

    37、那么可以为每一组确定一个有效等价类(如火车、汽车和轮船三种),同时对一组值确定一个无效等价类(如飞机)。第7章 软件测试技术 (4)如果某个输入条件规定了必须成立的条件(比如标识符的第一个字符必须是字母),则可划分为一个有效等价类(第一个字符是字母)和一个无效等价类(第一个字符不是字母)。(5)如果认为程序将按不同的方式来处理某个等价类中的各种测试用例,则应将这个等价类再分成几个更小的等价类。如上面第点就将一个有效的等价类又分成火车、汽车和轮船三个等价类。(6)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。(7)如果规定了输入数据为整数,则可以划分为正整数、零和负整数三个

    38、有效等价类为测试数据。第7章 软件测试技术 2)确定测试用例 根据等价类来设计测试用例,其过程如下:(1)为每个等价类规定一个惟一的编号。(2)设计一个新的测试用例,使其尽可能多地覆盖未被覆盖的有效等价类,此项工作重复进行,直到所有的有效等价类都被覆盖为止。(3)设计一个新的测试用例,使其覆盖一个(而且仅仅一个)尚未被覆盖的无效等价类,此项工作重复进行,直到所有的无效等价类都被覆盖为止。第7章 软件测试技术 之所以要这样做,是因为某些程序中对某一输入错误的检查往往会屏蔽对其他输入错误的检查,因此,必须针对每一个无效等价类,分别设计测试用例。例如,某程序的功能说明规定:输入书的类型分别为精装本、

    39、平装本或线装本,书的数量为1999册。若测试用例的输入数据类型为“活页”,且书目的数量为“0”,此情况覆盖了两个不合理的条件(类型和数量都是错误的)。当程序检查到书的类型错误时,就可能不再去检查数量是否也是错误的。第7章 软件测试技术 3)用等价类划分法设计测试用例的案例 某Pascal语言将数字串转换为整数的函数说明如下:Function stroint(dstr:shorstr):integer;type shorstr=array1 of char其中,参数为shorstr,被处理的数字串是右对齐的,也就是说,当数字串比六个字符短,则在它的左边补空格;如果数字串是负的,则负号和最高位数字

    40、紧相邻,负号在最高位数字左边一列。第7章 软件测试技术 由于Pascal编译程序有检测字符串超界的功能,所以数字串不等于六的数组可不设计测试用例,又由于Pascal编译能检测数组类型,所以也不需要为非字符数组类型做测试数据。由于所用计算机字长16位,所以用二进制数表示的范围为32 76832 767。依据输入/输出的有效与无效等价类划分如下。第7章 软件测试技术 有效输入等价类有:16个数字组成的数字串(最高位数字不是零)最高位数字是零的数字串 最高位数字左邻是负号的数字串有效输出的等价类:在计算机能表示的最小负整数和零之间的负整数 零 在零和计算机能表示的最大正整数之间的正整数第7章 软件测

    41、试技术 无效输入等价类:空字符串(全是空格)左部填充的字符,既不是零也不是空格 最高位数后面,由数字和空格混合组成 负号与取高位数之间的空格 最高位数字右面,由数字和其他字符混合组成第7章 软件测试技术 无效输出的等价类:比计算机能表示的最小负数还小的负整数 比计算机能表示的最大正整数还大的正整数依据上面划分出的等价类,可以设计下述测试方案(每个测试方案由三部分内容组成):(1)输入是16个数字组成的数字串,输出是合法的正整 数。例如:输入:1 预期的输出:1 (2)输入是最高位数字为零的数字串,输出是合法的正整数。例如:输入:000001 预期的输出:1第7章 软件测试技术 (3)输入是负号

    42、与最高位数字紧相邻的数字串,输出是合法的负整数。例如:输入:00001 预期的输出:1 (4)输入是计算机能表示的最小负整数与零之间的负整数,输出为合法的负整数。例如:输入02768 预期的输出:2768 (5)输入是零字符串,输出为零。例如:输入:000000 预期的输出:0第7章 软件测试技术 (6)输入是在零和计算机能表示的最大正整数之间的正整数,输出为合法的正整数。例如:输入:032754 预期的输出:32754 (7)输入为空字符串。例如:输入:预期的输出:“错误无效输入”(8)输入的左部非零非空格。例如:输入:?1 预期的输出:“错误填充错”(9)输入的最高位数字右面由数字与空格混

    43、合。例如:输入:1 2预期的输出:“错误无效输入”第7章 软件测试技术(10)输入的负号与最高位有空格。例如:输入:1 3 预期的输出:“错误负号位错”(11)输入的最高位数字右面由数字与其他字符混合。例如:输入:1 2?x3 预期的输出:“错误无效输入”(12)输入为比最小负整数小的负整数。例如:输入:56889 预期的输出:“错误-无效输入”(13)输入为比最大正整数还大的正整数。例如:输入:133867 预期的输出:“错误无效输入”第7章 软件测试技术 2.2.边界值分析边界值分析 1)边界值分析 从长期的实践中得知,处理边界情况时,程序最容易发生错误。所以,在设计测试用例时,应该选择一

    44、些边界值,这就是边界值分析的测试技术。边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。第7章 软件测试技术 使用边界值分析方法设计测试用例时,首先要确定边界情况,这需要经验和创造性。通常,输入等价类和输出等价类的边界就是应该着重测试的程序边界情况。选取的测试数据应该刚好等于、刚好小于和刚好大于边界值,而不是先取每个等价类内的典型值或任意值作为测试数据。例如,对于上述将数串转换为整数的例子来说,从边界值角度考虑应再补加下述测试方案。第7章 软件测试技术(1)使输出刚好等于最小的负整数。例如:输入:32768 预期的输出:32768(2)使输出刚好等于最大的正整数。例如:输入:32767

    45、 预期的输出:32767(3)使输出刚好小于最小的负整数。例如:输入:32769 预期的输出:“错误无效输入”(4)使输出刚好大于最大的正整数。例如:输入:32768 预期的输出:“错误无效输入”第7章 软件测试技术 另外,依据边界值分析法的要求,应该分别使用长度为0,1和6的数字串作为测试数据。通常,设计测试方案时总是把等价类划分和边界值分析两种技术联合起来使用,使得测试用例有所减少。第7章 软件测试技术 2)确定测试用例 (1)边界值分析不是从等价类中随便选一个数据作为代表,而是选一个或几个特定值,使这个等价类的每个边界都作为测试的目标。(2)边界值分析不仅要考虑输入条件,而且要考虑输出情

    46、况(即输出等价类)。边界值分析法选择测试用例的原则如下:第7章 软件测试技术 如果某个输入条件规定了数据的大小,可以选择正好等于边界值的数据作为合理的测试用例,同时还要选择正好越过边界值的数据作为不合理的测试用例。例如,若输入值的范围是“1.01.0”,则可选取“1.0”,“1.0”,“1.001”,“1.001”作为测试输入数据。如果某个输入条件规定了数据的个数,则可分别设计边界值和超过边界值的测试用例。如某输入文件有1255个记录,则可选择0个,1个,255个和256个记录作为测试的输入数据。第7章 软件测试技术 根据规格说明的每个输出条件,使用前面的原则(1)。例如,设计每月工资的折扣数

    47、程序,最低额为0元,最高额为500元,这时可选择0元、500元、负值和大于500元的测试用例。根据规格说明的每个输出条件,使用前面的原则(2)。例如,某一情报检索系统,根据某一输入的请求,要求显示几项最新报道,但不能多于5条,这时可选择使程序分别显示0、1和5项报道作为测试用例,另外还要设计使程序显示6项报导的错误测试用例。如果程序的输入或输出是有序集合(如有序表、线性表),则应把注意力放在集合内的第一个和最后一个元素上。第7章 软件测试技术 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。例如,程序中定义了一个数组,其元素下标的上界和下界分别为200和0

    48、,则应选择0与200作为测试用例。分析规格说明,找出其他可能的边界条件。第7章 软件测试技术 3.3.因果图法因果图法 因果图是设计测试用例的一种工具,它主要检查各种输入条件的组合。等价类划分、边界值分析的测试用例设计方法还不能考虑到组合输入条件可能引起软件错误,而因果图法则弥补了这个不足之处。第7章 软件测试技术 1)设计测试用例因果图的测试用例设计步骤如下:(1)分析规格说明中的输入作为因,输出作为果。(2)依据因果的处理语义画出因果图。(3)标出因果图的约束条件。(4)将因果图转换为因果图所对应的判定表。(5)根据判定表设计测试用例。第7章 软件测试技术 图7.5 因果图定义符号(a)恒

    49、等;(b)非;(c)或;(d)与;(e)异约束;(f)或约束;(g)惟一约束;(h)要求约束;(i)强制约束c1c2(a)c1e1(b)c1c2c3e1(c)c1e1(d)c2(e)abE(f)abIc(g)abO(h)ab(i)ab第7章 软件测试技术 其中,(a)图表示恒等:表示原因与结果之间是一对一的对应关系。若原因出现,则结果出现。若原因不出现,则结果也不出现。(b)图表示非:表示原因与结果之间的一种否定关系。若原因出现,则结果不出现。若原因不出现,则结果出现。(c)图表示或():表示若几个原因中有一个出现,则结果出现,只有当这几个原因都不出现时,结果才不出现。(d)图表示与():表示

    50、若几个原因都出现,结果才出现。若几个原因中有一个不出现,结果就不出现。(e)图表示异约束:表示a,b两个原因不会同时成立,两个中最多有一个可能成立。(f)图表示或约束:表示a,b,c三个原因中至少有一个必须成立。(g)图表示惟一约束:表示a和b原因当中必须有一个,且仅有一个成立。(h)图表示要求约束:表示当a出现时,b必须也出现,不可能a出现,b不出现。(i)图表示强制约束:它表示当a是1时,b必须是0,而当a为0时,b的值不定。第7章 软件测试技术 2)利用因果图设计测试用例的实例 某规格说明:“第一列字符必须是A或者B,第二列字符必须是一个数字,第一、二两列都满足时修改文件,第一列不正确时

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第7章-软件测试技术-普通高等院校计算机类专业系列教材-软件工程教学课件.ppt
    链接地址:https://www.163wenku.com/p-4848049.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库