一、概述:
在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性,如图所示:
二、黑盒测试主要用于发现以下情况:
是否有不正确或遗漏了的功能
在接口上,能否正确地接受输入数据,能否产生正确地输出信息
访问外部信息是否有错
性能上是否满足要求
界面是否错误,是否不美观
初始化或终止错误
三、黑盒测试方法:
等价类划分法 边界值分析法 判定表方法 因果图法 场景法 正交试验法 功能图法 错误推测法
1. 等价类划分:
1.1 定义
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。
有效等价类:是有意义的、合理的输入数据构成的集合。可检查程序是否实现了规格说明中所规定的功能和性能。
无效等价类:与有效等价类的定义恰巧相反。
在分析需求规格说明的基础上划分等价类,列出等价类表。
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。经过正反的测试才能确保软件具有更高的可靠性。
1.2 根据等价类创建测试用例的步骤:
a)建立等价类表,列出所有划分出的等价类:
b)为每个等价类规定一个唯一的编号;
c)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
d)重复c),最后使得所有有效等价类均被测试用例所覆盖;
e)设计一个新的测试用例,使其只覆盖一个无效等价类。
e)重复e)使所有无效等价类均被覆盖。
例1:报表日期
设某公司要打印2001~2010年的报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。
第一步:划分等价类:
输入及外部条件 |
有效等价类 |
无效等价类 |
报表日期的 类型及长度 |
6位数字字符① |
有非数字字符 ④ 少于6个数字字符 ⑤ 多于6个数字字符 ⑥ |
年份范围 |
在2001~2010之间② |
小于2001 ⑦ 大于2010 ⑧ |
月份范围 |
在1~12之间③ |
小于1 ⑨ 大于12 ⑩ |
第二步:为有效等价类设计测试用例
对表中编号为①②③的3个有效等价类用一个测试用例覆盖:
测试数据 |
期望结果 |
覆盖范围 |
200105 |
输入有效 |
等价类①②③ |
第三步:为每一个无效等价类至少设计一个测试用例
测试数据 |
期望结果 |
覆盖范围 |
001MAY |
输入无效 |
等价类④ |
20015 |
输入无效 |
等价类⑤ |
2001001 |
输入无效 |
等价类⑥ |
200001 |
输入无效 |
等价类⑦ |
201201 |
输入无效 |
等价类⑧ |
200100 |
输入无效 |
等价类⑨ |
200113 |
输入无效 |
等价类⑩ |
2. 边界值分析法
2.1 定义:
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
2.2 与等价划分的区别 :
边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
2.3 设计方法:
确定边界情况(输入或输出等价类的边界) 选取正好等于、刚刚大于或刚刚小于边界值作为测试数据。
2.4 常见的边界值
1)对16-bit 的整数而言 32767 和 -32768 是边界
2)屏幕上光标在最左上、最右下位置
3)报表的第一行和最后一行
4)数组元素的第一个和最后一个
5)循环的第 0 次、第 1 次和倒数第 2 次、最后一次
2.5 确定边界值的方法
(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
例如,如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……”。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。
如果输入条件定义了数值区间(a,b),那么测试用例应包括a、b、稍微比a大、稍微比b大、稍微比a小和稍微比b小等几种情况. 举个例子,如果a,b是整数, 除在a,b之间取正常点外,a,b,a-1,b-1,a+1,b+1都应被测试。
2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。
(3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。
例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.25、还可取-0.01及1165.26等。 再如一程序属于情报检索系统,要求每次“最少显示1条、最多显示4条情报摘要”,这时我们应考虑的测试用例包括1和4,还应包括0和5等。
4) 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5) 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
6) 分析规格说明,找出其它可能的边界条件。
四、基于组合技术和组合优化的方法
判定表/决策表方法 因果图法
4.1.判定表/决策表方法
一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。
4.1.2 判定表元素
条件桩:列出问题的所有条件
动作桩:列出可能针对问题所采取的操作
条件项:针对所列条件的具体赋值
动作项:列出在条件项(各种取值)组合情况下应该采取的动作。
规则:任何一个条件组合的特定取值及其相应要执行的操作。
4.1.3 判定表方法步骤
列出所有的条件桩和动作桩;
填入条件项;
填入动作项,制定初始判定表;
简化、合并相似规则或者相同动作
问题说明:“某货运站收费标准如下:如果收件地点在本省,则快件每公斤5元,慢件每公斤3元;如果收件地点在外省,则在20公斤以内(含20公斤)快件每公斤7元,慢件每公斤5元,而超过20公斤时,快件每公斤9元,慢件每公斤7元。”
4.2 因果图法
多种输入条件的组合,产生多种结果设计测试用例。
4.2.1 设计方法:
分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标识符
找出原因与结果,原因与原因之间的对应关系,划出因果图
在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件
根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来
把判定表的每一列作为依据设计测试用例。
4.2.3 因果图法总结
优点 :
1、因果图法能够帮助我们按照一定步骤,高效的选择测试用例,设计多个输入条件组合用例
2、因果图分析还能为我们指出,软件规格说明描述中存在的问题
3、可以依据因果图检验需求的逻辑和程序未来应包含的函数或方法。
缺点 :
1、输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到。
2、即时得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目极其庞大。