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