《软件测试-教案课件.ppt》由会员分享,可在线阅读,更多相关《软件测试-教案课件.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 黑盒测试及其用例的设计,3.1 测试用例设计概述3.2 黑盒测试法的概念3.3 三角形问题与NextDate函数3.4 等价类划分法3.5 边界值分析法3.6 因果图法3.7 决策表法3.8 错误推测法3.9 测试方法的选择,本章教学目标,理论环节学习理解黑盒测试方法的基本概念学习理解黑盒测试的两个典型问题学习掌握黑盒测试的等价类划分法学习掌握黑盒测试的边界值分析法学习掌握黑盒测试的因果图测试法和决策表法实践环节通过案例运用学习掌握运用方法解决实际问题的能力运用等价类划分法与边界值分析法进行实际程序测试运用因果图测试法与决策表法进行实际程序测试,3.1 测试用例设计概述,3.1.1 测
2、试用例的定义和特征3.1.2 测试用例的基本准则3.1.3 设计测试用例的着眼点3.1.4 测试用例设计书写标准,Return,3.1.1 测试用例的定义和特征,测试用例的定义:(1)测试用例是为特定的目的而设计的一组测试输入、 执行条件和预期的结果。(2)测试用例是执行的最小实体。 测试用例的特征:(1)最有可能抓住错误的;(2)不是重复的、多余的;(3)一组相似测试用例中最有效的;(4)既不是太简单,也不是太复杂。,3.1.2 设计测试用例的基本准则,测试用例的代表性 能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。测试结果的可判定性
3、 即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。测试结果的可再现性 即对同样的测试用例,系统的执行结果应当是相同的。,3.1.3 设计测试用例的着眼点,根据产品规格,测试基本功能;考虑设计一般用户(非专业人员)的使用方案;考虑设计稀有或特殊的使用方案;与系统其他组成部分的配合(如FAX和上网可能要用到MODEM,测试中考虑对设备的共享);考虑特殊情况(如内存和硬件的冲突等);设计极端情况(如内存泄漏、破坏性测试等);好的测试用例集能花费最小的代价(人力、物力、财力、时间)做最好的测试。,3.1.4 测试用例设计书写标准,在ANSI/IEEE829-1983标准中列出了和
4、测试设计相关的测试用例编写规范和模板。标准模板中主要元素如下:标识符惟一标识每一个测试用例测试项准确的描述所需要测试的项及其特征测试环境要求表征执行该测试用例需要的测试环境输入标准执行测试用例的输入需求(这些输入可能包括数据、文件或者操作)输出标准按照指定的环境和输入标准得到的期望输出结果测试用例之间的关联标识该测试用例与其它的测试(或其它测试用例)之间的依赖关系,范例1,范例2,3.2 黑盒测试法的概念,Return,黑盒测试被称为功能测试或数据驱动测试。在测试时,把被测程序视为一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下进行。采用黑盒测试的目的主要是在已知软件产品所应具
5、有的功能的基础上,进行:(1)检查程序功能能否按需求规格说明书的规定正常使用,测试各个功能是否有遗漏,检测性能等特性要求是否满足。(2)检测人机交互是否错误,检测数据结构或外部数据库访问是否错误,程序是否能适当地接收输入数据而产生正确的输出结果,并保持外部信息(如数据库或文件)的完整性。(3)检测程序初始化和终止方面的错误。,3.3 三角形问题与NextDate函数,1、三角形问题 输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及构不成三角形。 现在要求输入三个整数a、b、c,必须满足以下
6、条件: 条件1 1a100 条件4 ab+ c 条件2 1b100 条件5 ba+ c 条件3 1c100 条件6 c=0 和 (b) Error测试用例有两个:输入4,输出2。对应于 (ii) 和 (a) 。输入-10,输出0和错误提示。对应于 (i) 和 (b) 。边界值分析:划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:输入 最小负实数输入 绝对值很小的负数输入 0输入 绝对值很小的正数输入 最大正实数,边界值分析(续),通常情况下,软件测试所包含的边界检验有几种类型: 数字、字符、位置、质量、大小、速度、方位、尺寸、 空间等相应地,以上类型
7、的边界值应该在: 最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满等情况下,实例分析,举例 利用边界值作为测试数据,内部边界值分析,在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。内部边界值条件主要有下面几种:数值的边界值检验 字符的边界值检验其它边界值检验,小结: 在实际的测试用例设计中,需要将基本的软件设计要求和程序定
8、义的要求结合起来,即结合基本边界值条件和内部边界值条件来设计有效的测试用例。,数值的边界值检验,计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。,计算机数值运算的范围,字符的边界值检验,在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。,选择测试用例的原则,(1) 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值作为测试输入数据。(2) 如果输入条件规定了值的个数,则用最大个数、最小个数和比最大个数多1个、比最小个数少1个的数作为测试数据。(3)
9、根据程序规格说明的每个输出条件,使用原则 (1)。(4) 根据程序规格说明的每个输出条件,使用原则 (2) 。(5) 如果程序的规格说明给出的输入域或输出域是有序集合 (如有序表、顺序文件等),则应选取集合中的第一个和 最后一个元素作为测试用例。(6) 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。(7) 分析程序规格说明,找出其它可能的边界条件。,3.5.2 边界值分析法测试用例,采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。 因此,边界值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)
10、、略小于最大值(max-)和最大值(max)来设计测试用例。边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。 因此,在边界值分析法中获取测试用例的方法是: (1) 每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-和max。 (2) 对程序中的每个变量重复 (1) 。,边界值分析法测试用例(续),例1:有两个输入变量x1(ax1b)和x2(cx2d)的程序F的边界值分析测试用例如下: , , , , , , , , ,边界值分析法测试用例(续),
11、例2:有二元函数f(x,y),其中x1,12,y1,31。 则采用边界值分析法设计的测试用例是: , , , , , , , , 推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。练习:有函数f(x,y,x),其中x1900,2100,y1,12,z1,31的。请写出该函数采用边界值分析法设计的测试用例。 , , , , , , , , , , , , ,健壮性测试,健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n
12、个变量的函数采用健壮性测试需要6n+1个测试用例。前面例1中的程序F的健壮性测试如下图所示:,练习:请为例2中的函数f(x,y)写出相应的健壮性测试用例。,实例1 三角形问题的边界值分析测试用例 在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为1, 100 。 说明:如果程序规格说明中没有显式地给出边界值,则可以在设计测试用例前先设定取值的下限值和上限值。实例2 NextDate函数的边界值分析测试用例 在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1mouth12和1day31,并设定变量year的取值范
13、围为1912year2050 。,3.5.3 边界值分析法测试举例,测试用例,测试用例,习题,找零钱最佳组合 假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。 请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。,3.6 因果图法,3.6.1 因果图法的简介3.6.2 因果图3.6.3 因果图法测试举例,3.6.1 因果图法的简介,因果图法产生的背景: 等价类划分法和边
14、界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。 如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。,因果图法的简介(续),因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用
15、例的方法,它适合于检查程序输入条件的各种组合情况。采用因果图法设计测试用例的步骤:(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。(2)将得到的因果图转换为判定表。(3)为判定表中每一列所表示的情况设计一个测试用例。,因果图法的简介(续),使用因果图法的优点:(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。,3.6.2 因果图,因果图中用来表示4种因果
16、关系的基本符号:,因果图(续),因果图中的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 为0。,因果图(续),因果图中的约束 在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的
17、约束有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。,因果图(续),因果图中用来表示约束关系的约束符号:,因果图(续),因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:(1)分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因
18、和结果赋予一个标识符。(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系, 根据这些关系画出因果图。(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为决策表。(5)根据决策表中的每一列设计测试用例。,3.6.3 因果图法测试举例,实例 用因果图法测试以下程序。 程序的规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。解题步骤:(1)分析
19、程序的规格说明,列出原因和结果。(2)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。(3)将因果图转换成决策表。(4)根据(3)中的决策表,设计测试用例的输入数据和预期输出。,因果图法测试举例(续),(1)分析程序规格说明中的原因和结果:(2)画出因果图(编号为10的中间结点是导出结果的进一步原因):,因果图法测试举例(续),(3)将因果图转换成如下所示的决策表:,规则,选项,因果图法测试举例(续),(4)根据决策表中的每一列设计测试用例:,习题,1、使用因果图法为三角形问题设计测试用例。2、某软件的一个模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣年终风险金
20、的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。 请绘制出因果图和判定表,并给出相应的测试用例。,3.7 决策表法,3.7.1 决策表3.7.2 决策表应用3.7.3 决策表测试应用案例,3.7.1 决策表,在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻
21、辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。,决策表实例,规则,选项,“阅读指南”决策表,决策表的组成,决策表通常由以下4部分组成:条件桩列出问题的所有条件条件项针对条件桩给出的条件列出所有可能的取值动作桩列出问题规定的可能采取的操作动作项指出在条件项的各组取值情况下应采取的动作,将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。,决策表的生成,构造决策表的5个步骤:(1) 确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。(2) 列出所有的条件桩和动作桩。(3) 填入
22、条件项。(4) 填入动作项,得到初始决策表。(5) 简化决策表,合并相似规则。若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。,三角形问题的决策表,三角形问题的决策表,规则,选项,3.7.2 决策表应用,NextDate函数的决策表测试用例设计问题分析:NextDate函数的三个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械的选取输入值时可能会丢失。而采用决策表法则可以通过
23、使用“不可能动作”的概念表示条件的不可能组合,来强调这种依赖关系。说明:当决策表规模(指规则的数目,n个条件的决策表有2n个规则)较大时,可以通过扩展条目决策表(条件使用等价类)、代数简化表、将大表“分解”为小表等方法。,实例分析,NextDate函数,为了获得下一个日期,NextDate函数执行如下操作:如果输入日期不是当月最后一天,则把day变量的值加1;如果输入日期是111月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。关于最后一天的判断:如果是有31天的月份(1,
24、3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11), day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年的2月),day变量值为28。,NextDate函数的动作桩和条件桩,根据所执行的操作,可列出NextDate函数的动作桩: a1: 不可能;a2: day加1;a3: day复位;a4: month加1;a5: month复位;a6: year加1考虑到决策表的规模,条件使用month、day、year变量的等价类,在以下等价类集合上建立决策表:对于month变量的取值 M1: mouth: mo
25、uth有30天;M2: mouth:mouth有31天,12月除外; M3: mouth:mouth有12月; M4: mouth:mouth是2月;对于day变量的取值 D1:day:1day27;D2: day:day=28; D3: day:day=29; D4: day:day=30; D5: day:day=31;对于year变量的取值 Y1:year:year是闰年;Y2: year:year不是闰年,决策表应用(续),决策表测试法适用于具有以下特征的应用程序: if-then-else逻辑突出;输入变量之间存在逻辑关系;涉及输入变量子集的计算;输入与输出之间存在因果关系。适用于使
26、用决策表设计测试用例的条件:规格说明以决策表形式给出,或较容易转换为决策表。条件的排列顺序不会也不应影响执行的操作。规则的排列顺序不会也不应影响执行的操作。当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要。,3.7.3 决策表测试应用案例,用决策表测试法测试以下程序: 该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1month12和1day31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。 例如,输入为2004年11月29日
27、,则该程序的输出为2000年12月1日。(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。(3)根据(1)和(2),画出简化后的决策表。,案例分析,month变量的有效等价类: M1: month=4,6,9,11 M2: month=1,3,5,7,8,10 M3: month=12 M4: month=2day变量的有效等价类: D1: 1day26 D2: day=27 D3: day=28 D4: day=29 D5: day=30 D6: day=31
28、year变量的有效等价类: Y1: year是闰年 Y2: year不是闰年考虑各种有效的输入情况,程序中可能采取的操作有以下六种: a1: day+2 a2: day=2 a3: day=1 a4: month+1 a5: month=1 a6: year+1,习题,1、根据教材P85中给出的简化后的决策表,设计相应的测试用例。2、某软件的一个模块的需求规格说明书中描述: “对于功率大于50马力的机器或者维修记录不全的或已经运行10年以上的机器应予以优先的维修处理”。 这里假定“维修记录不全”和“优先维修处理”有严格的定义。 请建立该需求的决策表,并绘制出化简(合并规则)后的决策表。,3.8
29、 错误推测法,错误推测法的概念:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如:在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。,3.9 测试方法的选择,通常,在确定测试方法时,应遵循以下原则:根据程序的重要性和一旦发生故障将造成的损失来确定测试等级和测试重点。认真选择测试策
30、略,以便能尽可能少的使用测试用例,发现尽可能多的程序错误。因为一次完整的软件测试过后,如果程序中遗留的错误过多并且严重,则表明该次测试是不足的,而测试不足则意味着让用户承担隐藏错误带来的危险,但测试过度又会带来资源的浪费。因此测试需要找到一个平衡点。,测试方法的选择(续),通常在确定测试策略时,有以下5条参考原则:(1)在任何情况下都必须采用边界值分析法。这种方法设计出的测试用例发现程序错误的能力最强。(2)必要时采用等价类划分法补充测试用例。(3)采用错误推断法再追加测试用例。(4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖 程度。如果没有达到要求的覆盖标准,则应当再补充更多的测试用例。
31、(5)如果程序的功能说明中含有输入条件的组合情况,则应一开始就选用因果图法。,习题,1、某城市电话号码由三部分组成,分别是: 地区码 空白或三位数字; 前 缀 非0或1开头的三位数字; 后 缀 4位数字。 假定被测程序能接受一切符合上述规定的电话号码, 拒绝所有不符合规定的电话号码。要求: (1)请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,给出测试用例表。(2)如果所生成的测试用例不够全面,请考虑用别的测试 方法生成一些补充的测试用例。,3,4,12,567,89101112,131415,使用等价类划分法,习题,2、有一个处理单价为5角钱的饮料的自动售货机,相应规格说明如下:若投入5角钱或1元钱的硬币,按下橙汁或啤酒的按钮,则相应的饮料就送出来。(每次只投入一个硬币,只押下一种饮料的按钮)如投入5角的硬币,按下按钮后,总有饮料送出。若售货机没有零钱找,则一个显示零钱找完的红灯会亮,这时再投入1元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来。若有零钱找,则显示零钱找完的红灯不会亮,若投入 1元硬币及按饮料按钮,则送出饮料的同时找回5角硬币。 请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,设计出相应的测试用例。,