第1页:黑盒测试技术(三)封面
路径覆盖指
选取足够多的测试用例,使得程序的每条可能路径都至少执行一次。(8)路径覆盖sabdce1234567。
第2页:练习:设计左侧伪码程序的路径
练习:设计左侧伪码程序的路径
STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=2ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP本程序共有8条执行通路,为做到路径覆盖共需要8组测试数据。
三个判定条件的值都为假输入:A=1,B=1,C=1预期输出:X=1,Y=2,Z=3三个判定条件的值依次为假、假、真输入:A=1,B=1,C=60预期输出:X=1,Y=2,Z=30三个判定条件的值依次为假、真、假输入:A=1,B=40,C=1预期输出:X=1,Y=20,Z=3。
第3页:练习:设计左侧伪码程序的路径(续)
练习:设计左侧伪码程序的路径
STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=2ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP三个判定条件的值依次为假、真、真输入:A=1,B=40,C=
90预期输出:X=1,Y=20,Z=30三个判定条件的值依次为真、假、假输入:A=20,B=1,C=1预期输出:X=10,Y=2,Z=3三个判定条件的值依次为真、假、真输入:A=20,B=1,C=60预期输出:X=10,Y=2,Z=30
第4页:练习:设计左侧伪码程序的路径
练习:设计左侧伪码程序的路径
STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=1ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP三个判定条件的值依次为真、真、假输入:A=20,B=40,C
=1预期输出:X=10,Y=20,Z=3三个判定条件的值全为真输入:A=20,B=40,C=60预期输出:X=10,Y=20,Z=30
第5页:6.7黑盒测试技术内容提纲
本节内容提纲
- 编码软件测试基础单元测试集成测试确认测试白盒测试技术
- 黑盒测试技术
- 调试软件可靠性
第6页:黑盒测试技术:力图发现
黑盒测试技术
- 力图发现如下类型的错误
- 力图发现如下类型的错误
- 功能不正确或遗漏了功能;
- 界面错误;
- 数据结构错误或外部数据库访问错误;
- 性能错误;
- 初始化和终止错误。测试方案考虑问题
- 怎样测试功能的有效性?
- 哪些类型的输入可构成好测试用例?
- 系统是否对特定的输入值特别敏感?
- 怎样划定数据类的边界?
- 系统能够承受什么样的数据率和数据量?
- 数据的特定组合将对系统运行产生什么影响?
第7页:黑盒测试技术:测试用例
黑盒测试技术
- 测试用例满足条件
- 测试用例满足条件
- 所设计出的测试用例能够减少为达到合理测试所需要设计的测试用例的总数;
- 所设计出的测试用例能够告诉我们,是否存在某些类型的错误,而不是仅仅指出与特定测试相关的错误是否存在。常用方法等价划分边界值分析错误推测
第8页:黑盒测试技术:等价、黑盒
6.7.1等价划分等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。一个理想的测试用例能独自发现一类错误。等价类划分的思想:如果将所有可能的输入数据(有效的和无效的)划分为若干个等价类,就可以假定用每一个等价类中的代表值作为测试用例来进行测试时,等价于用该类中所有值进行了测试。
因此,可以从每个等价类中只取一组数据作为测试数据。等价类划分的步骤:划分输入数据的等价类(有效、无效),并进一步设计测试用例。
第9页:黑盒测试技术:等价、启发性
- 6.7.1等价划分等价类划分的启发性规则
- 6.7.1等价划分等价类划分的启发性规则
- 如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),两个无效的等价类(输入值小于最小值或大于最大值);
- 如果规定了输入数据的个数,则类似地也可以划分出一个有效的等价类和两个无效的等价类;
- 如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的输入值是一个有效的等价类,此外还有一个无效的等价类(任一个不允许的输入值);
第10页:黑盒测试技术:等价、启发性(续)
- 6.7.1等价划分等价类划分的启发性规则
- 6.7.1等价划分等价类划分的启发性规则
- 如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从各种不同角度违反规则);
- 如果规定了输入数据为整型,则可以划分出正整数、零和负整数等3个有效类;
- 如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。
第11页:黑盒测试技术:测试用例
- A.给每个等价类规定一个唯一的编号
- B.设计一个新的测试用例,使其尽可能多地覆盖未被覆盖过的有效等价类
- 重复此步,直至所有有效等价类被覆盖
- C.设计一个新的测试用例,使其覆盖而且只覆盖一个尚未被覆盖的无效等价类
- 重复此步,直到所有无效等价类被覆盖
- 通常程序发现一类错误后,就报出错信息,不再检查其它类错误,所以设计测试用例时,一次只覆盖一个无效等价类
- 6.7.1等价划分确定测试用例的步骤
第12页:实例:一个把数字串
实例:一个把数字串
计算机字长:16bits,函数由PASCAL语言编写。functionstrtoint(dstr:shortstr):integertypeshortstr=array[1..6]ofchar。/字符串6位/被处理的数字串是右对齐的,也就是说,如果数字串比6个字符短,则在它的左边补空格。
如果数字串是负的,则负号和最高位数字紧相邻(负号在最高位数字左边一位)(16位字长能表示的整型数范围是[-215,215-1],即[-32768,32767])6.7.1等价划分。
第13页:黑盒测试技术:Pascal
- 考虑到Pascal编译程序固有的检错功能,测试时不需要使用长度不等于6的数组作实在参数,更不需要使用任何非字符数组类型的实在参数。有效输入的等价类有:
- 考虑到Pascal编译程序固有的检错功能,测试时不需要使用长度不等于6的数组作实在参数,更不需要使用任何非字符数组类型的实在参数。有效输入的等价类有:
- 1-6个数字字符组成的数字串(最高位数字不为零);如:[0,999999]
- 最高位数字是零的数字串;如:“012345”
- 最高位数字左邻是负号的数字串;如:“-12345”6.7.1等价划分
第14页:无效输入的等价
无效输入的等价
- 类有:
- 类有:
- 空字符串(全是空格);如“”;
- 左部填充的字符既不是零,又不是空格;如:“A12345”
- 最高位数字右面由数字和空格混合而成;如:“12345”
- 最高位数字右面由数字和其他字符混合而成;如:“12A345”
- 负号与最高位数字之间有空格;如:“-1234”6.7.1等价划分
第15页:合法输出的等价
合法输出的等价
- 类有:
- 类有:
- 在计算机能表示的最小负整数和零之间的负整数;如:[-32768,0)
- 零;
- 在零和计算机能表示的最大正整数之间的正整数;如:(0,32767]非法输出的等价类有:
- 比计算机能表示的最小负整数还小的负整数;如:“-32769”
- 比计算机能表示的最大正整数还大的正整数;如:“123456”6.7.1等价划分
第16页:黑盒测试技术:等价、测试
- 根据划分的等价类,设计出测试方案11个:
- 根据划分的等价类,设计出测试方案11个:
- 1-6个数字组成的字符串;输入:‘1’预期的输出:1
- 最高位数字是零的数字串;输入:‘000001’预期的输出:1
- 负号与最高位数字相邻;输入:‘-00001’预期的输出:-16.7.1等价划分
第17页:(4)最高位数字
(4)最高位数字
- ‘000000’预期的输出:0
- ‘000000’预期的输出:0
- 太小的负整数;输入:‘-47561’预期的输出:错误-无效输入
- 太大的正整数;输入:‘132767’预期的输出:错误-无效输入6.7.1等价划分
第18页:空字符串:输入
空字符串
- 输入:‘’预期的输出:错误-没有数字
- 输入:‘’预期的输出:错误-没有数字
- 字符串左部字符既不是零又不是空格;输入:‘AAAAA1’预期的输出:错误-非数字
- 最高位数字后面有空格;输入:‘12’预期的输出:错误-无效输入6.7.1等价划分
第19页:黑盒测试技术
- 最高位数字后面有其他字符;输入:‘1AAA23’预期的输出:错误-无效输入
- 负号和最高位数字之间有空格;输入:‘-12’预期的输出:错误-负号位置错。6.7.1等价划分
第20页:黑盒测试技术:报表、范围
练习:某报表处理系统要求用户输入处理报表的日期,日期限制在2005年1月至2009年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。如何用等价类划分法设计测试用例,来测试程序的日期检查功能。
第21页:黑盒测试技术:测试用例
步骤:第一步:等价类划分第二步:为有效等价类设计测试用例。(多个有效等价类可使用一个测试用例)第三步:为每一个无效等价类设至少设计一个测试用例。
第22页:报表日期输入条件的等价类表
报表日期输入条件的等价类表| 输入等价类 | 有效等价类 | 无效等价类 |
|---|
| 报表日期的类型及长度 | 6位数字字符(1) | 有非数字字符(4);少于6个数字字符(5);多于6个数字字符(6) |
|---|
| 年份范围 | 在2005~2009之间(2) | 小于2005(7);大于2009(8) |
|---|
| 月份范围 | 在1~12之间(3) | 小于1(9);大于12(10) |
|---|
第23页:第二步:为有效等价
第二步
- 为有效等价类设计测试用例对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:测试数据期望结果覆盖范围200705等价类
- 为有效等价类设计测试用例对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:测试数据期望结果覆盖范围200705等价类
- 输入有效
第24页:第三步:为每一个无效
第三步
- 为每一个无效等价类设至少设计一个测试用例测试数据期望结果覆盖范围001MAY等价类
- 为每一个无效等价类设至少设计一个测试用例测试数据期望结果覆盖范围001MAY等价类
- 输入无效20065等价类
- 输入无效2007005等价类
- 输入无效200405等价类
- 输入无效201005等价类
- 输入无效200800等价类
- 输入无效200613等价类
- 输入无效
第25页:黑盒测试技术:程序、边缘
- 程序通常在处理边缘情况时容易出现错误,如等价类与等价类之间的边界值
- 所以在设计测试用例时,使用正好等于、正好大于、正好小于边界值的数据进行测试,发现程序错误的概率较大
- 边界值分析测试法属黑盒测试
- 在实际设计测试方案时,常常结合使用等价划分和边界值分析两种技术,把一些等价类的边界值作为测试用例进行测试
- 6.7.2边界值分析
第26页:黑盒测试技术:测试用例
- 上例中设计了11个测试用例,还应该用边界值分析补充测试用例:
- 上例中设计了11个测试用例,还应该用边界值分析补充测试用例:
- 使输出刚好等于最小负整数;输入:‘-32768’预期的输出:-32768
- 使输出刚好等于最大的正整数;输入:‘32767’预期的输出:327676.7.2边界值分析
第27页:黑盒测试技术:整数、预期
- 使输出刚刚小于最小的负整数;输入:‘-32769’预期的输出:错误-无效输入
- 使输出刚刚大于最大正整数;输入:‘32768’预期的输出:错误-无效输入6.7.2边界值分析
第28页:黑盒测试技术:错误、程度
- 错误推测法在很大程度上靠直觉和经验进行
- 基本思想:列举出程序中可能的错误和容易发生错误的特殊情况,且根据它们选择测试方案
- 如:输入、输出为0时容易出错
- 输出记录为0条时容易出错
- 等等
- 6.7.3错误推断
第29页:黑盒测试技术:实际、测试
- 对软件系统进行实际测试时,应该联合使用各种设计测试方案的方法,形成一种综合策略
- 具体可以使用如下策略:1)在任何情况下都应该进行边界值分析
- 2)必要时用等价划分法补充测试方案
- 3)必要时再用错误推测法补充测试方案
- 4)对照程序逻辑,检查已经设计出的测试方案
- 可以根据对程序可靠性的要求采用不同的逻辑覆盖标准
- 6.7.4实用测试策略
第30页:黑盒测试技术:TRIANGLE
实例:程序TRIANGLE读入三个整数值,这三个整数代表同一个三角形三条边的长度,程序根据这三个值判断三角形属于不等边、等腰或是等边三角形。6.7.4实用测试策略。
第31页:黑盒测试技术:三角形判定条件
开始停止A<B+CB<A+CC<A+BA=BA=CB=CB=C输出:等边三角形输出:不等边三角形输出:等腰三角形输出:不是三角形abcdefghijklmnop12345678910111213141516171819202122TFTFTFTTFFFTTF
第32页:黑盒测试技术:综合、边界值
- 综合使用边界值分析、等价值划分和错误推测等技术,可以设计出10种应该测试的情况:
- 综合使用边界值分析、等价值划分和错误推测等技术,可以设计出10种应该测试的情况:
- 正常的等边三角形;
- 正常的等腰三角形,包括两条相等边的三种不同排列方法;
- 正常的不等边三角形;
- 三条边不能构成三角形(即两边之和小于第三边),包括三种不同排列方法;
第33页:退化的三角形:(即两边的和
退化的三角形
- (即两边的和等于第三边),包括三种不同排列方法;
- (即两边的和等于第三边),包括三种不同排列方法;
- 零数据
- 一条边的长度为零,包括三种不同的排列方法;
- 两条边的长度为零,包括三种不同的排列方法;
- 三条边的长度全为零;
- 输入数据中包含负整数;
- 遗留数据,输入数据不全(不足三个正整数);
- 无效输入,输入数据中包含非整数型的数据;
- 边界值
第34页:黑盒测试技术:TRIANGLE
程序TRIANGLE的测试数据测试数据测试功能cba-,-,-17,10,1010,12,821,10,105,5,10-,-,-17,0,012,10,0-,-,-10,17,108,12,1010,21,105,10,5-,-,-0,17,012,0,1010,10,1010
,10,178,10,1210,10,2110,5,50,0,00,0,170,10,121.等边2.等腰3.不等边4.非三角形5.退化情况6.零数据
第35页:黑盒测试技术:测试数据
测试数据测试功能cba-,-,-17,-10,-1010,17,-8-,-,--,-,10-,8,10-,-,--,-,-A,10,8A,10.5,7E332768,8,32767-32769,8,32767-32767,8,-32769-,-,--10,17,-1017,-8,
10-,-,--,10,-8,-,10-,-,--,-,-8,A,1010.5,7E3,A32766,8,3276732768,8,-327698,-32767,-32768-10,-10,-10-10,-10,17-8,10,17-,-,-10,-,-8,10,-A,B,C=,
+,*8,10,A7E3,10.5,A32767,32766,8-32768,8,32766-32768,8,-327697.负数据8.遗留数据9.无效输入10.边界值
第36页:黑盒测试技术:测试数据(续)
最后,检查测试数据的覆盖程度,通常应该做到边覆盖。测试数据覆盖程度检验表中列出的四种测试数据已经做到了边覆盖(覆盖所有的22条边)。
第37页:黑盒测试技术
abcdefghklmnopij1234567891011121314151617181920212223对应的流图
第38页:黑盒测试技术:测试数据
测试数据覆盖程度检验表覆盖的边测试数据编号1,2,3,4,5,6,7,81,2,3,4,5,15,19,20,81,2,3,4,14,18,19,20,81,2,3,4,14,16,17,19,20,81,2,3,4,14,16,21,22,81,2,3,4,14,16,21,
22,81,2,3,4,14,16,21,22,81,2,3,11,12,13,81,2,10,12,13,81,9,12,13,810,10,1010,10,1710,17,1017,10,108,10,128,12,1010,12,810,10,2110,21,1021,10
,1012a2b2c3a3b3c4a4b4c