黑盒测试:又称为功能测试,数据驱动测试 和 基于规格说明的测试。它是一种在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试
黑盒测试主要是为了发现以下错误:
优点
缺点
典型黑盒测试方法:
典型的黑盒测试方法包括主要包括等价类划分法、边界值分析法、错误推测法、因果图法、决策表法、正交试验法、场景法、功能图法等。
一、 等价类划分法概述
等价类分为有效等价类和无效等价类。
二、 等价类划分法设计测试用例的步骤
三、 等价类划分原则
所谓等价类,往往是题目中的限定条件。等价类的划分,就是对题目的限制条件再进行细分。
等价类划分的原则如下:
1. 在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类
2. 在规定了输入数据的一组值中(假定有n个值),并且程序要对每个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类。
3. 在规定输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类。
4. 在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类。
5. 在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,则应将该等价类进一步地划分为更小的等价类。
四、 等价类划分法规则
1) 在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
例如, 输入值是学生成绩,范围是0~100
无效等价类: score<0
有效等价类: 0≤score≤100
无效等价类: score>100
例如,程序要进行平方根函数的运算,则“≥0”的数为有效等价类,“<0”的数为无效等价类。
例如,说明学历输入条件可为:专科、本科、硕士、博士四种之一,则分别取这四个值作为四个有效等价类,把四种学历之外的任何学历作为无效等价类。
输入必须以分号结束,可以确定一个等价类“以分号结束”,若干无效等价类,“以逗号结束”、“以冒号结束”、“以括号结束”等。
下面进入例题
例:某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。
系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。
如何用等价类划分法设计测试用例, 来测试程序的日期检查功能?
第一步:等价类划分
第二步:为有效等价类设计测试用例
第三步:为每一个无效等价类设至少设计一个测试用例
注意:不能出现相同的测试用例
对于上面的等价类划分规则具体应用看下面的题目,具体做题步骤是:
- 我们需要先找到输入条件,再根据输入条件得到有效等价类
- 利用我们上面的 根据有效等价类得到无效等价类的规则,得到无效等价类,并做好标记。
五、 等价类划分法例题
例1:某一种8位计算机,其十六进制常数的定义是以0x或0X开头的十六进制整数,其取值范围为-7f~7f(不区分大小写字母),如0x13、0x6A、-0x3c。请采用等价类划分的方法设计测试用例。
例2:对用户输入的分数进行评级,其中90到100为A,80-89为B,70-79为C,60-69为D,60以下为E,输入分数要求必须是正整数或0。
请采用等价类划分的方法设计测试用例。
例3:标识符是有字母开头的字母、数字的组合,有效位数8位,最大字符个数255。“在同一说明语句中,标识符至少必须有一个”。
请采用等价类划分的方法设计测试用例。
例4:标识符是有字母开头的字母、数字的组合,有效位数8位,最大字符个数255。“在同一说明语句中,标识符至少必须有一个”。
请采用等价类划分的方法设计测试用例。
例题5:某城市电话号码组成规则的需求规格说明书;
某城市电话号码由三部分组成,分别是:
· 地区码—空白或三位数字;
· 前 缀—非‘0’或‘1’开头的三位数字;
· 后 缀—— 4位数字。
假定被测程序能接受一切符合上述规定的电话号码, 拒绝所有不符合规定的电话号码
根据等价类划分,我们得到如下的测试用例:
一、 决策表的组成部分
条件桩: 列出了问题的所有可能的条件,条件的先后次序无关紧要。
条件项: 条件取值组合和域其对应的动作组合。
动作桩: 列出了问题规定的可能采取的操作,这些操作的排列顺序没有约束。
动作项:…
二、 建立决策表步骤
注意,这个步骤需要牢记,下面有关决策表的例题都是根据该步骤一步步进行下去的。
有两条或者多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系,就可以将规则合并。
三、 实例
以下列问题为例,给出构造决策表的具体过程
例题1
· 如果某产品销售好并且库存低,则增加该产品的生产
· 如果该产品销售好,但是库存低,则继续生产。
· 如果该产品销售不好,且库存低,则继续生产
· 若该产品销售不好,且库存不低,则停止生产
条件那一行,T和√代表发生,F代表不发生
例题2某维修站对:
① “功率大于50马力”且“维修记录不全”
② “已运行十年以上”的机器给予优先维修,否则做一般处理。
请用决策表表达此处理逻辑。
这里对化简的步骤进行详细的说明
化简,合并相似规则得到如下图:
合并规则:有两条或者多条规则相同,且 具有相同的动作,并且其条件项之间存在着极为相似的关系,就可以将规则合并。
表中具有相同颜色的两个情况可以合并为1列。
上面的情况1和情况2,不管运行超不超过10年,只要功率大于50码,且维修记录不全,都需要进行优先处理。
如下图,我们实际上合并了:
· 情况1和 情况2 合并为情况1;
· 情况5和 情况7 合并为情况4;
· 情况6和 情况8 合并为情况5;
下面图中的“-”表示,这个选项不管发生不发生,对结果都没有影响。这里实际上就是合并的结果。
因果图中,刚接触往往不知道中间节点的含义是啥意思,什么时候会用到,后面会在例题中提到。
一、 因果图法的字符规则
在因果图中,使用4中符号分别表示4中因果关系。
用直线连接左右节点,其中:
二、 因果图法的基本图形符(描述原因和结果之间的关系)
三、 因果图法中的约束表示(描述各个原因之间的关系)
在实际问题中,输入状态相互之间还可能存在某些依赖关系,我们称之为约束。
例如,某些输入条件不可能同时出现。输出状态之间往往也存在约束。在因果图中,以特定的符号标明这些约束。
从结果方面考虑主要有1种约束条件:
· M(屏蔽):a出现时,b必定不出现;a不出现时,b则不确定。
四、 例题
例题1:程序的规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。用因果图法设计测试用例.
解题步骤:
(1)分析程序的规格说明,列出原因和结果。
(2)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。
(3)将因果图转换成决策表。
(4)根据(3)中的决策表,设计测试用例的输入数据和预期输出。
STEP1列出原因:
STEP2列出结果:
其对应的因果图如下:
说明:特别说明面这个中间节点11的由来。这个11到底是什么意思,我当时思考了很久
例题2:淘宝在双十一推出打折优惠活动,订单已提交,订单金额大于300或有红包,则优惠。
STEP1列出原因:
STEP2列出结果:
c: 中间节点。 表示“订单金额”大于300或者有红包。
下面两张图援引自:https://blog.csdn.net/qq_46071165
生成的决策表如图示:
说明:
总结:
上面几个例子中,我们可以知道, 中间节点我们是根据需求得来的,但是有没有什么比较好理解的呢?我们其实可以发现,中间节点往往是对原因和原因之间的关系封装。通常是原因之间的“或”或者“且”的关系表达。中间节点的出现能够简化因果图。通常题目中如果是分多步骤,且步骤是有顺序的,即先完成这一步才能进行下一步的时候,就可以使用中间节点保存上一个步骤所做出的选择,为下一步骤做准备。
利用中间节点,我们就能够更加清晰地画出因果图。
在判定表中,我们是根据原因的个数k,得到判定表中选项的个数为2 k ^{k} k个。
我们再看一个例子,这个例子比较复杂,但是能够更好地理解,什么是中间节点。
例题3:有一个单价为五角钱的饮料自动售货机软件,对其采用因果图方法设计测试用例。需求如下:
· 若售货机没有零钱找,则一个显示 “零钱找完”的红灯亮,以提示顾客在此情况下不要投入1元钱,否则此红灯不亮。
· 顾客投入5角硬币,然后按下“橙汁”或“啤酒”按钮,则相应饮料被送出。
· 顾客投入1元硬币并按下“橙汁”或“啤酒”按钮后,若售货机没有零钱找,则显示“零钱找完”的红灯亮,1元硬币被退出,且无饮料送出;若有零钱找,则五角硬币被退出且饮料被送出。
Step1.列出原因
Step4.根据列出的原因、结果、中间节点画出因果图
说明:
生成的决策表如下:
总结:
中间节点往往是对原因和原因之间的关系封装。通常是原因之间的“或”或者“且”的关系表达。中间节点的出现能够简化因果图。
本人所作的 软件测试理论基础.docx文档下载地址如下:
软件测试理论基础.docx下载地址