1、黑盒测试及其用例的设计黑盒测试及其用例的设计内容大纲内容大纲l测试用例设计概述l黑盒测试法的概念l三角形问题与NextDate函数l等价类划分法l边界值分析法l因果图法l决策表法l错误推测法l场景法l测试方法的选择教学目标教学目标理论环节理论环节l学习理解黑盒测试方法的基本概念l学习理解黑盒测试的两个典型问题l学习掌握黑盒测试的等价类划分法l学习掌握黑盒测试的边界值分析法l学习掌握黑盒测试的因果图测试法和决策表法实践环节实践环节l通过案例运用学习掌握运用方法解决实际问题的能力l运用等价类划分法与边界值分析法进行实际程序测试l运用因果图测试法与决策表法进行实际程序测试测试用例设计概述测试用例设计
2、概述l测试用例的定义和特征l测试用例的基本准则l设计测试用例的着眼点l测试用例设计书写标准测试用例的定义和特征测试用例的定义和特征l测试用例的定义:(1)测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。(2)测试用例是执行的最小实体。l测试用例的特征:(1)最有可能抓住错误的;(2)不是重复的、多余的;(3)一组相似测试用例中最有效的;(4)既不是太简单,也不是太复杂。设计测试用例的基本准则设计测试用例的基本准则l测试用例的代表性 能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。l测试结果的可判定性 即测试执行结果的正确
3、性是可判定的,每一个测试用例都应有相应的期望结果。l测试结果的可再现性 即对同样的测试用例,系统的执行结果应当是相同的。设计测试用例的着眼点设计测试用例的着眼点l根据产品规格,测试基本功能;l考虑设计一般用户(非专业人员)的使用方案;l考虑设计稀有或特殊的使用方案;l与系统其他组成部分的配合(如FAX和上网可能要用到MODEM,测试中考虑对设备的共享);l考虑特殊情况(如内存和硬件的冲突等);l设计极端情况(如内存泄漏、破坏性测试等);l好的测试用例集能花费最小的代价(人力、物力、财力、时间)做最好的测试。测试用例设计书写标准测试用例设计书写标准 在ANSI/IEEE829-1983标准中列出
4、了和测试设计相关的测试用例编写规范和模板。标准模板中主要元素如下:l标识符惟一标识每一个测试用例l测试项准确的描述所需要测试的项及其特征l测试环境要求表征执行该测试用例需要的测试环境l输入标准执行测试用例的输入需求(这些输入可能包括数据、文件或者操作)l输出标准按照指定的环境和输入标准得到的期望输出结果l测试用例之间的关联标识该测试用例与其它的测试(或其它测试用例)之间的依赖关系黑盒测试法的概念黑盒测试法的概念l黑盒测试被称为功能测试或数据驱动测试。在测试时,把被测程序视为一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下进行。l采用黑盒测试的目的主要是在已知软件产品所应具有的功
5、能的基础上,进行:(1)检查程序功能能否按需求规格说明书的规定正常使用,测试各个功能是否有遗漏,检测性能等特性要求是否满足。(2)检测人机交互是否错误,检测数据结构或外部数据库访问是否错误,程序是否能适当地接收输入数据而产生正确的输出结果,并保持外部信息(如数据库或文件)的完整性。(3)检测程序初始化和终止方面的错误。三角形问题与三角形问题与NextDateNextDate函数函数 1 1、三角形问题、三角形问题 输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及构不成三角形。现在要求输入三
6、个整数a、b、c,必须满足以下条件:条件1 1a100 条件4 ab+c 条件2 1b100 条件5 ba+c 条件3 1c100 条件6 ca+b 三角形问题与三角形问题与NextDateNextDate函数函数(续)(续)l如果输入值a、b、c不满足条件1、条件2和条件3,程序给出“边的取值超出允许范围”的信息。l如果输入值a、b、c 满足条件1、条件2和条件3,则输出下列四种情况之一:(1)如果不满足条件4、条件5和条件6中的一个,则程序输出为“非三角形”。(2)如果三条边相等,则程序输出为“等边三角形”。(3)如果恰好有两条边相等,则程序输出为“等腰三角形”。(4)如果三条边都不相等,
7、则程序输出为“一般三角形”。l结论结论:三角形问题的复杂之处在于输入与输出之间的关系比较复杂。三角形问题与三角形问题与NextDateNextDate函数函数(续)(续)2 2、NextDateNextDate函数函数-NextDate函数说明另一种复杂的关系,即输入变量之间逻辑关系的复杂性。-NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。要求输入变量month、day和year均为整数值,并且满足下列条件:条件1 1 month 12 条件2 1 day 31 条件3 1912 year 2050l结论结论:在NextDate函数中有两种复杂
8、性的输入来源,一是输入域的复杂性,二是确定闰年的规则并要增加“额外天”。等价类划分法等价类划分法l等价类的划分原则l等价类划分法的测试用例设计l常见等价类划分测试形式l使用等价类划分法测试的实例等价类划分法等价类划分法l等价类划分法是一种重要的、常用的黑盒测试方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。l举例:设计这样的测试用例,来实现一个对所有实数进行开平方运算(y=sqrt(x))的程序的测试。l思考方向:由于开平方运算只对非负实数有效,这时需要将所有的实数(输入域x)进行划分,可以分成:正实数、0 和 负实数。假设我们选定+1.4444代表正实
9、数,-2.345代表负实数,则该程序的测试用例为+1.4444、0 和-2.345。等价类划分法等价类划分法l等价类划分 等价类划分是黑盒测试技术,可将测试用例数量降到最少。等价类划分是将可能的输入划分成若干等价的类,每一个类选择一个测试用例,这种方法假设对于一个类的所有成员来说,系统通常按照类似的方式运行。关键步骤:确定等价类和选择测试输入 基本原则:n每个可能的输入属于某一个等价类n任何输入都不会属于多个等价类n用等价类的某个成员作为输入时,如果证明执行存在误差,那么用该类的任何其他成员作为输入,也能检查到同样的误差。等价类的划分原则等价类的划分原则l采用等价类划分法设计测试用例通常分两步
10、进行:(1 1)确定等价类,列出等价类表。确定等价类,列出等价类表。(2 2)确定测试用例。)确定测试用例。等价类的划分等价类的划分l划分等价类可分为两种情况:(1)有效等价类 -是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合。利用有效等价类,能够检验程序是否实现了规格说明中预先规定的功能和性能。(2)无效等价类 -是指对软件规格说明而言,是无意义的、不合理的输入数据所构成的集合。利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。等价类的划分原则等价类的划分原则(续)(续)l进行等价类划分的依据:(1)按照区间划分 在输入
11、条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。(2)按照数值划分 在规定了一组输入数据(假设包括 n个 输入值),并且程序要对每一个输入值分别进行处理的情况下,可确定 n 个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。等价类的划分等价类的划分(3)按照数值集合划分 在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类(该集合有效值之外)。(5)细分等价类 在确知已划分的等价类中各元素在程序中的处理方式不同的情况下,则应再将该等价类进一步划分为更小的等价类,并建立等价类表。(4)按
12、照限制条件或规则划分 在规定了输入数据必须遵守的规则或限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。等价类划分法的测试用例设计等价类划分法的测试用例设计l在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。l根据已列出的等价类表可确定测试用例,具体过程如下:(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号。(2)设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。(3)设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被
13、测试用例所覆盖。常见等价类划分测试形式常见等价类划分测试形式l针对是否对无效数据进行测试,可以将等价类测试分为标准等价类测试和健壮等价类测试。-标准等价类测试:不考虑无效数据值,测试用例使用 每个等价类中的一个值。-健壮等价类测试:主要的出发点是考虑了无效等价类。对有效输入,测试用例从每个有效等价类中取一个值;对无效输入,一个测试用例有一个无效值,其他值均取有效值。n 健壮等价类测试存在两个问题:(1)需要花费精力定义无效测试用例的期望输出 (2)对强类型的语言没有必要考虑无效的输入使用等价类划分法测试的实例使用等价类划分法测试的实例l实例实例1 1 三角形问题三角形问题分析:分析:在多数情况
14、下,是从输入域划分等价类的,但并非不能从被测程序的输出域反过来定义等价类,事实上,这对于三角形问题却是最简单的划分方法。在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。利用这些信息能够确定下列输出(值域)等价类。R1=:边为a,b,c的等边三角形 R2=:边为a,b,c的等腰三角形 R3=:边为a,b,c的一般三角形 R4=:边为a,b,c不能组成三角形 标准等价类测试用例标准等价类测试用例健壮等价类测试用例健壮等价类测试用例三角形问题三角形问题测试用例abc预期输出Test1101010等边三角形Test210105等腰三角形Test3345一般三角形Test
15、4412非三角形三角形问题的4个标准等价类测试用例三角形问题三角形问题测试用例abc预期输出Test1567一般三角形Test2-155a值超出输入值定义域Test35-15b值超出输入值定义域Test455-1c值超出输入值定义域Test510155a值超出输入值定义域Test651015b值超出输入值定义域Test755101c值超出输入值定义域三角形问题的7个健壮等价类测试用例使用等价类划分法测试的实例使用等价类划分法测试的实例l实例实例2 2 保险公司计算保费费率的程序保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为:投保额保险费率 其中,保险费率依点数不同而有别,10
16、点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:年龄 性别婚姻抚养人数 2039 4059 其它 M F 已婚 未婚 1人扣0.5点 最多扣3点(四舍五入取整)6点 4点 2点 5点 3点 3点 5点计算保费费率的程序计算保费费率的程序(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。-年龄:一位或两位非零整数,值的有效范围为199-性别:一位英文字符,只能取值M或F-婚姻:字符,只能取值已婚或未婚-抚养人数:空白或一位非零整数(19)-点数:一位或两位非零
17、整数,值的范围为199(2)根据(1)中的等价类表,设计能覆盖所有等价类的 测试用例。等价类表等价类表测试用例测试用例输入条件输入条件有效等价类有效等价类编号编号无效等价类无效等价类编号编号年龄年龄20392039岁岁1 140594059岁岁2 2119119岁岁60996099岁岁3 3小于小于1 11212大于大于99991313性别性别单个英文字符单个英文字符4 4非英文字符非英文字符1414非单个英文字符非单个英文字符1515MM5 5除除MM和和FF之外的之外的其它单个字符其它单个字符1616FF6 6婚姻婚姻已婚已婚7 7除除已婚已婚和和未婚未婚之外的其它字符之外的其它字符171
18、7未婚未婚8 8抚养人数抚养人数空白空白9 9除空白和数字之外除空白和数字之外的其它字符的其它字符18181616人人1010小于小于1 119196969人人1111大于大于9 92020测试用例测试用例编号编号输入数据输入数据预期输出预期输出年龄年龄性别性别婚姻婚姻抚养人数抚养人数保险费率保险费率1 12727F F未婚未婚空白空白0.6%0.6%2 25050M M已婚已婚2 20.6%0.6%3 37070F F已婚已婚7 70.1%0.1%4 40 0M M未婚未婚空白空白无法推算无法推算5 5100100F F已婚已婚3 3无法推算无法推算6 69999男男已婚已婚4 4无法推算无
19、法推算7 71 1ChildChild未婚未婚空白空白无法推算无法推算8 84545N N已婚已婚5 5无法推算无法推算9 93838F F离婚离婚1 1无法推算无法推算10106262M M已婚已婚没有没有无法推算无法推算11111818F F未婚未婚0 0无法推算无法推算12124040M M未婚未婚1010无法推算无法推算习题习题l有一个员工管理系统,现对其录入模块进行测试。其中,人员信息包括:有一个员工管理系统,现对其录入模块进行测试。其中,人员信息包括:1 1、编号:必须有,系统自动编号;、编号:必须有,系统自动编号;2 2、姓名:必须有,要求为不超过、姓名:必须有,要求为不超过5
20、5个汉字;个汉字;3 3、身份证:必须有,长度为、身份证:必须有,长度为1818位的数字,或前位的数字,或前1717位数字末尾为数字或大写字母位数字末尾为数字或大写字母X X;4 4、邮箱:要么为空白,要么输入必须包含、邮箱:要么为空白,要么输入必须包含 和和.,.,且且 和和.的前后均有内容的前后均有内容 .5 5、住址:可以空白、住址:可以空白注意:注意:如果录入正确,则提示录入成功,录入错误,则提示数据不对。如果录入正确,则提示录入成功,录入错误,则提示数据不对。要求:要求:1 1、确认输入域和输出域;、确认输入域和输出域;2 2、划出有效等价类和无效等价类;、划出有效等价类和无效等价类
21、;3 3、给出测试用例的个数。、给出测试用例的个数。输入条件输入条件有效等价类有效等价类编号编号无效等价类无效等价类编号编号姓名姓名1515个汉字个汉字1 1空白空白6 6非汉字字符非汉字字符7 7多于多于5 5个汉字字符个汉字字符8 8身份证身份证1818位数字位数字2 2除第除第1818位外的其他位有非数字位外的其他位有非数字字符字符9 9末位为非大写字母末位为非大写字母X X的其他英的其他英文字符文字符10101717位数字后接一位位数字后接一位X X大写英文字母大写英文字母3 3空白空白1111多于多于1818位数字字符位数字字符1212少于少于1818位数字字符位数字字符1313邮箱
22、邮箱空白空白4 4 前输入异常字段校验前输入异常字段校验1414无无 的格式的格式 1515输入合理的英文及数输入合理的英文及数字字符组成的正确邮字字符组成的正确邮箱格式箱格式5 5 前无内容的格式前无内容的格式 1616 后无内容的格式后无内容的格式 1717 前后均没有内容的格式前后均没有内容的格式 1818没有域名的格式没有域名的格式 1919有多个有多个 的格式的格式 2020 后面直接跟域名后面直接跟域名 2121边界值分析法边界值分析法l边界值分析法概要l边界值分析法测试用例l边界值分析法测试举例边界值分析法概要边界值分析法概要l边界值分析法就是对输入或输出的边界值进行测试的一种黑
23、盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。l为什么使用边界值分析法?-无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。l怎样用边界值分析法设计测试用例?-首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。-选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。举例举例 常见的边界值常见的边界值l对16-bit 的整数而言 32767 和-32768 是边界l屏幕上光标在最左上、最右下位
24、置l报表的第一行和最后一行l数组元素的第一个和最后一个l循环的第 0 次、第 1 次和倒数第 2 次、最后一次边界值分析边界值分析l边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。l例例:测试计算平方根的函数 -输入:实数 -输出:实数 -规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息“平方根非法-输入值小于0”并返回0;库函数Print-Line可以用来输出错误信息。实例分析实例分析l等价类划分:-可以考虑作出如下划分:n输入(i)=0n输出(a)=0 和(
25、b)Error-测试用例有两个:n输入4,输出2。对应于(ii)和(a)。n输入-10,输出0和错误提示。对应于(i)和(b)。l边界值分析:-划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:n输入 最小负实数n输入 绝对值很小的负数n输入 0n输入 绝对值很小的正数n输入 最大正实数边界值分析边界值分析边界值分析边界值分析l通常情况下,软件测试所包含的边界检验有几种类型:-数字、字符、位置、质量、大小、速度、方位、尺寸、空间等l相应地,以上类型的边界值应该在:-最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下实例分
26、析实例分析举例举例 利用边界值作为测试数据利用边界值作为测试数据项边界值测试用例的设计思路字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。空间小于空余空间一点/大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。内部边界值分析内部边界值分析l内
27、部边界值条件(子边界值条件)-数值的边界值检验 -字符的边界值检验-其它边界值检验n 小结:小结:在实际的测试用例设计中,需要将基本的软件设计要求和程序定义的要求结合起来,即结合基本边界值条件和内部边界值条件来设计有效的测试用例。数值的边界值检验数值的边界值检验l计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。项项范围或值范围或值位(bit)0 或 1字节(byte)0 255字(word)065535(单字)或 04294967295(双字)千(K)1024兆(M)1048576吉(G)1073741824字符的边界值检验字符的边界值检验l在计算机软件中,字符也是很
28、重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。字符字符ASCIIASCII码值码值字符字符ASCIIASCII码值码值空(null)0A65空格(space)32a97斜杠(/)47Z90048z122冒号(:)58单引号()9664选择测试用例的原则选择测试用例的原则(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值作为测试输入数据。(2)如果输入条件规定了值的个数,则用最大个数、最小个数和比最大个数多1个、比最小个数少1个的数作为测试数据。(3)根据程序规格说明的每个输出条件,使用原则(
29、1)。(4)根据程序规格说明的每个输出条件,使用原则(2)。(5)如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合中的第一个和最后一个元素作为测试用例。(6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。(7)分析程序规格说明,找出其它可能的边界条件。边界值分析法测试用例边界值分析法测试用例l采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。-边界值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例。
30、l边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。-在边界值分析法中获取测试用例的方法(1)每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-和max。(2)对程序中的每个变量重复(1)。l实例实例1 1 三角形问题的边界值分析测试用例三角形问题的边界值分析测试用例-在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为1,100。l说明:如果程序规格说明中没有显式地给出边界值,则可以在设计测
31、试用例前先设定取值的下限值和上限值。l实例实例2 NextDate2 NextDate函数的边界值分析测试用例函数的边界值分析测试用例-在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1mouth12和1day31,并设定变量year的取值范围为1912year2050。3.5.3 3.5.3 边界值分析法测试举例边界值分析法测试举例测试用例测试用例测试用例测试用例测试用例测试用例a ab bc c预期输出预期输出Test 1Test 1Test2Test2Test3Test3Test4Test4Test5Test560606060606050505050606060
32、606060505050501 12 260609999100100等腰三角形等腰三角形等腰三角形等腰三角形等边三角形等边三角形等腰三角形等腰三角形非三角形非三角形Test6Test6Test7Test7Test8Test8Test9Test960606060505050501 12 299991001006060606050505050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形Test10Test10Test11Test11Test12Test12Test13Test131 12 299991001006060606050505050606060605050
33、5050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形测试用例测试用例mouth mouth daydayyearyear预期输出预期输出Test 1Test 1Test2Test2Test3Test3Test4Test4Test5Test5Test6Test6Test7Test76 66 66 66 66 66 66 61515151515151515151515151515191119111912191219131913197519752049204920502050205120511911.6.161911.6.161912.6.161912.6.16191
34、3.6.161913.6.161975.6.161975.6.162049.6.162049.6.162050.6.162050.6.162051.6.162051.6.16Test8Test8Test9Test9Test10Test10Test11Test11Test12Test12Test13Test136 66 66 66 66 66 6-1-11 12 2303031313232200120012001200120012001200120012001200120012001dayday超出超出1131312001.6.22001.6.22001.6.32001.6.32001.7.12
35、001.7.1输入日期超界输入日期超界dayday超出超出113131Test14Test14Test15Test15Test16Test16Test17Test17Test18Test18Test19Test19-1-11 12 2111112121313151515151515151515151515200120012001200120012001200120012001200120012001MouthMouth超出超出1112122001.1.162001.1.162001.2.162001.2.162001.11.162001.11.162001.12.162001.12.16Mou
36、thMouth超出超出111212习题习题l找零钱最佳组合找零钱最佳组合 假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。假定此商店的货币面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。提示:原因(商品价格及付款金额)原因(商品价格及付款金额)中间步(需找零的中间步(需找零的金额)金额)结果(最少找零的结果(最少找零的币数)币数)R100 R100(无效等价)(无效等价)R=0R=0(无效
37、等价)(无效等价)0R=1000R100P100(无效等价)(无效等价)PRPR(无效等价)(无效等价)R=P=100R=PM1=50100M1=5049=M2=1049=M2=109=M3=59=M3=54=M4=04=M4=0 N50=1 N50=1N50=0N50=01=N10=41=N10=4N10=0N10=0N5=1N5=1N5=0N5=01=N1=41=N1=4N1=0N1=0不可能不可能因果图法因果图法l因果图法的简介l因果图l因果图法测试举例因果图法的简介因果图法的简介l因果图法产生的背景:等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条
38、件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。因果图法的简介因果图法的简介l因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。l因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。l采用因果图法
39、设计测试用例的步骤:(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。(2)将得到的因果图转换为判定表。(3)为判定表中每一列所表示的情况设计一个测试用例。因果图法的简介因果图法的简介l使用因果图法的优点:(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。因果图因果图l因果图中用来表示4种因果关系的基本符号:恒等 非或与因果图因果图l因果图中的4种基本关系
40、 在因果图的基本符号中,图中的左结点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 为0。因果图因果图l因果图中的约束 在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出
41、条件的约束只有M约束。E E约束约束(异异):a和b中最多有一个可能为1,即a和b不能同时 为1。I I 约束约束(或或):a、b、c中至少有一个必须为1,即 a、b、c不能同时为0。O O约束约束(唯一唯一):a和b必须有一个且仅有一个为1。R R约束约束(要求要求):a是1时,b必须是1,即a为1时,b不能为0。M M约束约束(强制强制):若结果a为1,则结果b强制为0。因果图因果图异E E或I I唯一O OR R要求M M强制l因果图中用来表示约束关系的约束符号:因果图因果图l因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:(1)分析软件规格说明中哪些是原因(即输入条件
42、或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为决策表。(5)根据决策表中的每一列设计测试用例。因果图法测试示例因果图法测试示例l实例实例 用因果图法测试以下程序。用因果图法测试以下程序。-程序的规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个
43、字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。l解题步骤:解题步骤:(1)分析程序的规格说明,列出原因和结果。(2)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。(3)将因果图转换成决策表。(4)根据(3)中的决策表,设计测试用例的输入数据和预期输出。因果图法测试示例因果图法测试示例(1)分析程序规格说明中的原因和结果:(2)画出因果图(编号为10的中间结点是导出结果的进一步原因):原因结果 c1:第一个字符是#e1:给出信息N c2:第一个字符是*e2:修改文件 c3:第二个字符是一个数字 e3:给出信息Mc c1 1c c2 2c c3 3e e
44、1 11010e e2 2e e3 3E E因果图法测试示例因果图法测试示例(3)将因果图转换成如下所示的决策表:1 12 23 34 45 56 67 78 8条件:条件:C1C1C2C2C3C310101 11 11 11 11 10 01 10 01 11 11 10 00 01 10 01 11 11 10 01 10 01 10 00 01 10 00 00 00 00 0动作:动作:e1e1e2e2e3e3不可能不可能测试用例测试用例#3#3#A#A*6 6*B BA1A1GTGT规则规则选项选项因果图法测试示例因果图法测试示例(4)根据决策表中的每一列设计测试用例:测试用例编号输
45、入数据预期输出1#3修改文件2#A给出信息M3*6修改文件4*B给出信息M5A1给出信息N6GT给出信息N和信息M习题习题1、使用因果图法为三角形问题设计测试用例。2、某软件的一个模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。请绘制出因果图和判定表,并给出相应的测试用例。l条件:条件:C1:1A100C1:1A100C2:1B100C2:1B100C3:1C100C3:1C100C4:A B+CC4:A B+CC5:B A+CC5:B A+CC6:C A+BC6:C
46、A+BC7:A=BC7:A=BC8:B=CC8:B=CC9:A=CC9:A=Cl中间结果:中间结果:10:10:边范围正确边范围正确11:11:可以构成三角形可以构成三角形12:12:任意两条边相等任意两条边相等1313:三条边两两相:三条边两两相等等l动作:动作:E1:E1:边输入不正确边输入不正确E2:E2:普通三角形普通三角形E3:E3:等腰三角形等腰三角形E4:E4:等边三角形等边三角形决策表法决策表法l决策表l决策表应用l决策表测试应用案例决策表决策表l在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。l决策表的概念:决策表是分析和表达多逻辑条
47、件下执行不同操作的情况的工具。l决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。l适用-针对不同逻辑条件的组合值,分别执行不同的操作决策表实例决策表实例1 12 23 34 45 56 67 78 8问问题题觉得疲倦?觉得疲倦?Y YY YY YY YN NN NN NN N感兴趣吗?感兴趣吗?Y YY YN NN NY YY YN NN N糊涂吗?糊涂吗?Y YN NY YN NY YN NY YN N建建议议重读重读继续继续跳下一章跳下一章休息休息“阅读指南阅读指南”决策表决策表规则规则选项选项决策表的组成决策表的组成l决策表通常由以下4部分组成:-条件桩列出
48、问题的所有条件-条件项针对条件桩给出的条件列出所有可能的取值-动作桩列出问题规定的可能采取的操作-动作项指出在条件项的各组取值情况下应采取的动作 条件桩条件桩动作桩动作桩 条件项条件项 动作项动作项规规则则将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。决策表的生成决策表的生成l构造决策表的5个步骤:(1)确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。(2)列出所有的条件桩和动作桩。(3)填入条件项。(4)填入动作项,得到初始决策表。(5)简化决策表,合并相似规则。若表中有两条以上规则具有相同的动作,并且在条件
49、项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。三角形问题的决策表三角形问题的决策表三角形问题的决策表三角形问题的决策表规则规则1-81-8规则规则9 9规则规则1010规则规则1111规则规则1212规则规则1313规则规则1414规则规则1515规则规则1616条件:条件:c1:a,b,cc1:a,b,c构成构成 三角形?三角形?c2:a=b?c2:a=b?c3:a=c?c3:a=c?c4:b=c?c4:b=c?N N-Y YY YY YY Y Y YY YY YN N Y YY YN NY Y Y YY YN NN N
50、 Y YN NY YY Y Y YN NY YN N Y YN NN NY Y Y YN NN NN N动作:动作:a1:a1:非三角形非三角形a2:a2:一般三角形一般三角形a3:a3:等腰三角形等腰三角形a4:a4:等边三角形等边三角形a5:a5:不可能不可能 规则规则选项选项决策表应用决策表应用lNextDate函数的决策表测试用例设计问题分析:NextDate函数的三个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械的选取输入值时可能会丢失。而采用决策表法则可以通过使用“不可能动作