《Ch2-黑盒测试.ppt》由会员分享,可在线阅读,更多相关《Ch2-黑盒测试.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件测试方法和技术软件测试方法和技术-Ch.2黑盒黑盒测试测试第一章第一章 回顾回顾软件特点软件特点软件开发的模型软件开发的模型软件测试的种类软件测试的种类第二章 黑盒测试2.1 黑盒测试方法2.2 黑盒测试工具学习目标理解黑盒测试方法的基本概念理解黑盒测试的两个典型问题掌握黑盒测试的等价类划分法掌握黑盒测试的边界值分析法掌握黑盒测试的因果图测试法和决策表法学习重点黑盒测试的两个典型问题黑盒测试的等价类划分法黑盒测试的边界值分析法黑盒测试的因果图测试法和决策表法黑盒测试的两个典型问题黑盒测试的因果图测试法和决策表法学习难点一个实用软件测试过程一种简单实用的软件测试过程模型 POCERM。测试过
2、程中必需的基本测试活动及其产生的结果:拟定软件测试计划(Plans)编制软件测试大纲(Outlines)设计和生成测试用例(test Case generation)实施测试(Execution)生成软件测试报告(software testing Reports)软件问题报告SPR(Software Problem Report)测试结果报告(test result Reports)基本特性:(1)计划性:任务 人员 设备 时间 相关.(2)平行性:开发 编码|测试 再测试(3)完整性:计划+大纲+用例+SPRs+.(4)重用性:测试 再测试 回归测试 升级 多平台(5)可重复性:SPRs 用
3、例 大纲 再现Bugs(6)周期性:test cycles,regression,update(7)可管理性:well structured and organized QE group+well planned and prepared task一个实用软件测试过程测试阶段 测试过程的三个主要的测试活动(计划、准备和实施)可被分成五个阶段:The planning and control phase计划和控制阶段The preparation phase准备阶段The specification phase规范阶段The execution phase实施执行阶段The completion
4、 phase完成(收尾)阶段测试的五个阶段Plan&ControlCSEPP&CPreparationSpecificationExecutionCompletion计划与控制阶段 它是整个测试过程中最重要的阶段,为实现可管理且高质量的测试过程提供基础。本阶段的主要工作内容:(1)拟定测试计划(2)论证那些使开发过程难于管理和控制的因素(3)明确软件产品的最重要部分(风险评估)准备阶段开始本阶段的前提条件:完成测试计划的拟定。需求规格说明书(第一版)的确定。本阶段的主要工作内容:对需求规格说明书的仔细研究。将要测试的产品分解成可独立测试的单元。为每个测试单元确定采用的测试技术。为测试的下一个阶
5、段及其活动制定计划。规范阶段本阶段的主要工作内容:编写测试大纲/测试用例,测试脚本搭建测试环境(测试数据库,软件环境,硬件环境)测试用例描述的内容:输入执行过程预期输出 实施执行阶段n根据测试大纲/测试用例/测试脚本进行测试(1)根据测试大纲/测试用例进行测试,找出预期的测试 结果和实际测试结果之间的差异(2)填写软件问题报告(3)确定造成这些差异的原因:产品有缺陷?规格说明书有缺陷?测试环境和测试下属部件有缺陷?测试用例设计不合理?n测试报告与管理层进行沟通的方式 已测试部分占产品多大的百分比?还有什么工作要做?找到了多少个问题或不足?测试的发展趋势如何?测试可以结束了吗?完成阶段n本阶段的
6、主要工作内容:选择和保留测试大纲、测试用例、测试结果、测试工具。提交最终报告。n收尾工作的意义和重要性:产品如果升级或功能变更,或维护,只要对保留下来的相关测试数只要作相应调整,就能够进行新的测试。测试用例的定义和特征测试用例的定义:(1)测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。(2)测试用例是执行的最小实体。测试用例的特征:(1)最有可能抓住错误的;(2)不是重复的、多余的;(3)一组相似测试用例中最有效的;(4)既不是太简单,也不是太复杂。设计测试用例的基本准则n测试用例的代表性 能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据
7、、操作和环境设置等。n测试结果的可判定性 即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。n测试结果的可再现性 即对同样的测试用例,系统的执行结果应当是相同的。设计测试用例的着眼点根据产品规格,测试基本功能;考虑设计一般用户(非专业人员)的使用方案;考虑设计稀有或特殊的使用方案;与系统其他组成部分的配合(如FAX和上网可能要用到MODEM,测试中考虑对设备的共享);考虑特殊情况(如内存和硬件的冲突等);设计极端情况(如内存泄漏、破坏性测试等);好的测试用例集能花费最小的代价(人力、物力、财力、时间)做最好的测试。测试用例设计书写标准 在ANSI/IEEE829-1983标
8、准中列出了和测试设计相关的测试用例编写规范和模板。标准模板中主要元素如下:标识符惟一标识每一个测试用例测试项准确的描述所需要测试的项及其特征测试环境要求表征执行该测试用例需要的测试环境输入标准执行测试用例的输入需求(这些输入可能包括数据、文件或者操作)输出标准按照指定的环境和输入标准得到的期望输出结果测试用例之间的关联标识该测试用例与其它的测试(或其它测试用例)之间的依赖关系范例范例1范例范例22.1 黑盒测试等价类划分法n等价类划分法是一种重要的、常用的黑盒测试方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。n举例:设计这样的测试用例,来实现一个对所有
9、实数进行开平方运算(y=sqrt(x))的程序的测试。思考方向:由于开平方运算只对非负实数有效,这时需要将所有的实数(输入域x)进行划分,可以分成:正实数、0 和 负实数。假设我们选定+1.4444代表正实数,-2.345代表负实数,则为该程序设计的测试用例的输入为+1.4444、0 和-2.345。等价类划分法n等价类划分法是把所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。n所谓等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性,即每一类的代表性数据在测试中的作用都等价于
10、这一类中的其它数据。这样,对于表征该类的数据输入将能代表整个子集合的输入。因此,可以合理的假定:测试某等价类的代表值就是等效于对于这一类其它值的测试。等价类的划分原则n等价类是输入域的某个子集合,而所有等价类的并集就是整个输入域。因此,等价类对于测试有两个重要的意义:完备性完备性整个输入域提供一种形式的完备性无冗余性无冗余性若互不相交则可保证一种形式的无冗余性n如何划分?如何划分?先从程序的规格说明书中找出各个输入条件,再为每个输入条件划分两个或多个等价类,形成若干的互不相交的子集。n采用等价类划分法设计测试用例通常分两步进行:(1 1)确定等价类,列出等价类表。确定等价类,列出等价类表。(2
11、 2)确定测试用例。)确定测试用例。等价类的划分原则n划分等价类可分为两种情况:(1)有效等价类 是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合。利用有效等价类,能够检验程序是否实现了规格说明中预先规定的功能和性能。(2)无效等价类 是指对软件规格说明而言,是无意义的、不合理的输入数据所构成的集合。利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。等价类的划分原则(续)n进行等价类划分的依据:(1)按照区间划分 在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。例:例:程序输入条件为小于程
12、序输入条件为小于100100大于大于1010的整数的整数x x,则有效等价类,则有效等价类为为1010 x x100100,两个无效等价类为,两个无效等价类为x10 x10和和x100 x100。例:例:程序输入程序输入x x取值于一个固定的枚举类型取值于一个固定的枚举类型1,3,7,151,3,7,15,且程,且程序序 中对这中对这4 4个数值分别进行了处理,则有效等价类为个数值分别进行了处理,则有效等价类为x=1x=1、x=3x=3、x=7x=7、x=15x=15,无效等价类为,无效等价类为x1,3,7,15x1,3,7,15的值的集合。的值的集合。(2)按照数值划分 在规定了一组输入数据
13、(假设包括 n个 输入值),并且程序要对每一个输入值分别进行处理的情况下,可确定 n 个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。等价类的划分原则(续)(3)按照数值集合划分 在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类(该集合有效值之外)。例:例:程序输入条件为取值为奇数的整数程序输入条件为取值为奇数的整数x x,则有效等价类为,则有效等价类为x x的值为奇数的整数,无效等价类为的值为奇数的整数,无效等价类为x x的值不为奇数的整数。的值不为奇数的整数。例:例:程序输入条件为以字符程序输入条件为以字
14、符 aa开头、长度为开头、长度为8 8的字符串,并的字符串,并且字符串不包含且字符串不包含 a a z z之外的其它字符,则有效等价类之外的其它字符,则有效等价类为满足了上述所有条件的字符串,无效等价类为不以为满足了上述所有条件的字符串,无效等价类为不以 aa开开头的字符串、长度不为头的字符串、长度不为8 8的字符串和包含了的字符串和包含了 a a z z之外之外其它字符的字符串。其它字符的字符串。(5)细分等价类 在确知已划分的等价类中各元素在程序中的处理方式不同的情况下,则应再将该等价类进一步划分为更小的等价类,并建立等价类表。(4)按照限制条件或规则划分 在规定了输入数据必须遵守的规则或
15、限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。等价类划分法的测试用例设计n在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。n根据已列出的等价类表可确定测试用例,具体过程如下:(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号。(2)设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。(3)设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。常见等价类划分测试形式n针对是否对无效数据进行测试,可以将等价类
16、测试分为 标准等价类测试和健壮等价类测试。标准等价类测试不考虑无效数据值,测试用例使用 每个等价类中的一个值。健壮等价类测试主要的出发点是考虑了无效等价类。对有效输入,测试用例从每个有效等价类中取一个值;对无效输入,一个测试用例有一个无效值,其他值均取 有效值。健壮等价类测试存在两个问题:(1)需要花费精力定义无效测试用例的期望输出 (2)对强类型的语言没有必要考虑无效的输入 使用等价类划分法测试的实例 实例实例1 1 三角形问题三角形问题 分析:分析:在多数情况下,是从输入域划分等价类的,但并非不能从被测程序的输出域反过来定义等价类,事实上,这对于三角形问题却是最简单的划分方法。在三角形问题
17、中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。利用这些信息能够确定下列输出(值域)等价类。R1=:边为a,b,c的等边三角形 R2=:边为a,b,c的等腰三角形 R3=:边为a,b,c的一般三角形 R4=:边为a,b,c不能组成三角形 标准等价类测试用例标准等价类测试用例健壮等价类测试用例健壮等价类测试用例使用等价类划分法测试的实例实例实例2 2 保险公司计算保费费率的程序保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为:投保额保险费率 其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人
18、的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:年龄 性别婚姻抚养人数 2039 4059 其它 M F 已婚 未婚 1人扣0.5点 最多扣3点(四舍五入取整)6点 4点 2点 5点 3点 3点 5点计算保费费率的程序(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。n年龄:一位或两位非零整数,值的有效范围为199n性别:一位英文字符,只能取值M或Fn婚姻:字符,只能取值已婚或未婚n抚养人数:空白或一位非零整数(19)n点数:一位或两位非零整数,值的范围为199(2)根据(1)中的等价类表,设计能覆盖所有等价类的 测试用例。等价类表等价类表
19、测试用例测试用例 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。为什么使用边界值分析法?无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。怎样用边界值分析法设计测试用例?(1)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。(2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。2.1 黑盒测试边界值分析法举例-常用的边界值n对16-
20、bit 的整数而言 32767 和-32768 是边界n屏幕上光标在最左上、最右下位置n报表的第一行和最后一行n数组元素的第一个和最后一个n循环的第 0 次、第 1 次和倒数第 2 次、最后一次边界值分析法n边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。n例例:测试计算平方根的函数 输入:实数 输出:实数 规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息“平方根非法-输入值小于0”并返回0。实例分析实例分析n等价类划分:n可以考虑作出如下划分:n输入(i)=0
21、n输出(a)=0 和(b)Errorn测试用例有两个:n输入4,输出2。对应于(ii)和(a)。n输入-10,输出0和错误提示。对应于(i)和(b)。n边界值分析:n划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:n输入 最小负实数n输入 0n输入 最大正实数边界值分析法边界值分析法n通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等n相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下举例-利用边界值作为测试数据项边界值测试用例的设计思
22、路字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。空间小于空余空间一点/大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。n在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很
23、容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。n内部边界值条件主要有下面几种:数值的边界值检验 字符的边界值检验其它边界值检验n 小结:小结:在实际的测试用例设计中,需要将基本的软件设计要求和程序定义的要求结合起来,即结合基本边界值条件和内部边界值条件来设计有效的测试用例。边界值分析法数值的边界值检验n计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。计算机数值运算的范围计算机数值运算的范围项项范围或值范围或值位(bit)0 或 1字节(by
24、te)0 255字(word)065535(单字)或 04294967295(双字)千(K)1024兆(M)1048576吉(G)1073741824字符的边界值检验n在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。字符字符ASCIIASCII码值码值字符字符ASCIIASCII码值码值空(null)0A65空格(space)32a97斜杠(/)47Z90048z122冒号(:)58单引号()9664选择测试用例的原则(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值
25、作为测试输入数据。(2)如果输入条件规定了值的个数,则用最大个数、最小个数和比最大个数多1个、比最小个数少1个的数作为测试数据。(3)如果程序的规格说明给出的输入域或输出域是有序集合 (如有序表、顺序文件等),则应选取集合中的第一个和 最后一个元素作为测试用例。(4)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。(5)分析程序规格说明,找出其它可能的边界条件。边界值分析法n采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。因此,边界值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大
26、值(max-)和最大值(max)来设计测试用例。例例1 1:有两个输入变量x1(ax1b)和x2(cx2d)的程序F的边界值分析测试用例如下:,边界值分析法n例例2 2:有二元函数f(x,y),其中x1,12,y1,31。则采用边界值分析法设计的测试用例是:推论:对于一个含有推论:对于一个含有n n个变量的程序,采用边界值分析法测个变量的程序,采用边界值分析法测试程序会产生试程序会产生4n+14n+1个测试用例。个测试用例。n练习:练习:有函数f(x,y,z),其中x1900,2100,y1,12,z1,31的。请写出该函数采用边界值分析法设计的测试用例。边界值分析法健壮性测试n健壮性测试是作
27、为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。n练习:练习:请为例2中的函数f(x,y)写出相应的健壮性测试用例。边界值分析法测试举例n实例实例1 1 三角形问题的边界值分析测试用例三角形问题的边界值分析测试用例 在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为1,100。说明:如果程序规格说明中没有显式地给出边界值,则可以在设计测试用例前先设定取值的
28、下限值和上限值。n实例实例2 2 NextDateNextDate函数的边界值分析测试用例函数的边界值分析测试用例 在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1mouth12和1day31,并设定变量year的取值范围为1912year2050。测试用例测试用例测试用例测试用例测试用例测试用例abc预期输出预期输出Test 1Test2Test3Test4Test550505050505050505050125099100等腰三角形等腰三角形等腰三角形等腰三角形等边三角形等边三角形等腰三角形等腰三角形非三角形非三角形Test6Test7Test8Test9505
29、05050129910050505050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形Test10Test11Test12Test1312991005050505050505050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形测试用例测试用例mouth dayyear预期输出预期输出Test 1Test2Test3Test4Test5Test6Test766666661515151515151519111912191319752049205020511911.6.161912.6.161913.6.161975.6.162049.6.
30、162050.6.162051.6.16Test8Test9Test10Test11Test12Test13666666-112303132200120012001200120012001day超出超出1312001.6.22001.6.32001.7.1输入日期超界输入日期超界day超出超出131Test14Test15Test16Test17Test18Test19-112111213151515151515200120012001200120012001Mouth超出超出1122001.1.162001.2.162001.11.162001.12.16Mouth超出超出112因果图法n因
31、果图法产生的背景:等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。因果图法n因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。n因果图法的定义:是一种利用图解法分析输入的各种组合
32、情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。n采用因果图法设计测试用例的步骤:(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。(2)将得到的因果图转换为判定表。(3)为判定表中每一列所表示的情况设计一个测试用例。因果图法n使用因果图法的优点:(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。因果图法n因果图中用来表示4种因果关系
33、的基本符号:c c1 1e e1 1恒等c c1 1e e1 1 非c c1 1e e1 1或c c2 2c c3 3c c1 1e e1 1与c c2 2因果图法n因果图中的4种基本关系 在因果图的基本符号中,图中的左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci 与 ei 取值0或1,0表示某状态不出现,1则表示某状态出现。恒等:若 c1 是1,则 e1 也为1,否则 e1 为0。非:若 c1 是1,则 e1 为0,否则e1为1。或:若 c1 或 c2 或 c3 是1,则 e1 为1,否则 e1 为0。与:若 c1 和 c2 都是1,则 e1 为1,否则 e1
34、为0。因果图法n因果图中的约束 在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。E约束(异):a和b中最多有一个可能为1,即a和b不能同时 为1。I 约束(或):a、b、c中至少有一个必须为1,即 a、b、c不能同时为0。O约束(唯一):a和b必须有一个且仅有一个为1。R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。M约束(强制):若结果a为1,则结果b强制为0。因果图法n因果图中用来表示约束关系的约束符号:a ab b异Ea ab b或Ic ca ab b唯一ORa ab
35、 b要求Ma ab b强制因果图法n因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:(1)分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为决策表。(5)根据决策表中的每一列设计测试用例。因果图法测试举例n实例1 用因果图法测试以下程序。程序的
36、规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。解题步骤:(1)分析程序的规格说明,列出原因和结果。(2)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。(3)将因果图转换成决策表。(4)根据(3)中的决策表,设计测试用例的输入数据和预期输出。因果图法测试举例(1)分析程序规格说明中的原因和结果:(2)画出因果图(编号为10的中间结点是导出结果的进一步原因):原因结果 c1:第一个字符是#e1:给出信息N c2:第一个字符是*e2:修改文件 c3:第二
37、个字符是一个数字 e3:给出信息Mc1c2c3e110e2e3E因果图法测试举例(3)将因果图转换成如下所示的决策表:12345678条件:条件:C1C2C310111110101110010111010100100000动作:动作:e1e2e3不可能不可能测试用例测试用例#3#A*6*BA1GT因果图法测试举例(4)根据决策表中的每一列设计测试用例:测试用例编号输入数据预期输出1#3修改文件2#A给出信息M3*6修改文件4*B给出信息M5A1给出信息N6GT给出信息N和信息M因果图法测试举例n实例2 订购单的检查。如果金额超过500元,又未过期,则发出批准单和提货单;如果金额超过500元,但
38、过期了,则不发批准单;如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。将这段需求进行判定表分析,可以得到如下判定表 金额500500=500=500状态未过期已过期未过期已过期发出批准单OOO发出提货单OOO发出通知单O因果图法测试举例n实例3 有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。n原因:投入1元5角硬币;投入2元硬币;按“可乐”按钮;按“雪碧”按钮;按“红茶”按钮。因果图法测试举例中间状态:已投币;已按钮。结果:退还5角硬币;送出“可乐”饮料;送出“雪碧”饮料;送出“红茶”饮料。因果图法测试举例根据原因和结果,我们可以设计这样一个因果图:作业作业第二章第二章 1、2Q&A