学习软件测试之黑盒测试用例设计

黑盒测试的定义见”了解软件测试之测试分类“一文

一、等价类划分法

1.概念:指把所有可能的输入数据,即程序的输入域划分成若干个子集合,然后从每一个子集合中选取少数具有代表性的数据作为测试用例。在该子集合中,所有输入数据对于揭露软件中的错误都是等效的。

2.等价类划分为两种不同的情况

(1)有效等价类:指对程序的需求说明中有意义的、合理的、正确的输入数据所构成的集合

(2)无效等价类:指不合理的或无意义的输入数据所构成的集合

例如:微信红包金额,从数据范围考虑:

有效金额:0.01 ~ 200

无效金额:<0.01 ~ >200

3.等价类划分话设计用例的步骤

(1)熟悉需求,按照数据范围/数据类型/是否必填值/需求规则约束角度划分等价类,并规定为唯一的编号

①数据范围:用户名长度(类似于 最小<x<最大,最小<x, 最大>x)

②数据类型:字符/整数/小数/负数,比如金额只能是数字,正数且小数点最多两位

③是否必填值:是否可以是空的

④需求规则约束角度:例如系统规定QQ密码必须要求密码中必须包含数字、字母和特殊字符

(2)设计测试用例,覆盖所有有效等价类

设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复,直到覆盖所有的有效等价类

(3)设计测试用例,覆盖所有无效等价类

设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复,直到覆盖所有的无效等价类

4.等价类划分法设计用例案例

例:QQ密码设置 :6-20个大小写英文字母、符号或数字组合

(1)输入需求:密码设置 ,6-20个大小写英文字母、符号或数字组合

         ①划分角度:长度 ,数据类型(组成)

        有效等价类:6-20位,大小写字母+符号,大小写字母+数字,符号+数字,大小写字母+符号+数字

        无效等价类:<6位,>20位,纯数字,纯字母(大小写),纯符号,非字母符号数字--中文

         ②划分角度:是否为必填项

         有效等价类:必填项

         无效等价类:为空

(2)输入:密码

        测试用例设计(覆盖有效类)

                                qwert@(6位,大小写字母+符号,非空)

                                  qwert6(6位,大小写字母+数字,非空)

                                  Qwert12345678!@#$@&*(20位,大小写字母+数字+符号,非空)

                                  1234567890!@#$@&*.(6-20位,数字+符号,非空)

(3)输入:密码

         测试用例设计(覆盖无效类)

                                12345(<6位)

                                Qwert12345678!@#$@&*.(>20位)

                                123456(纯数字)

                                哈哈12345@(包含字母)

                                 (不输入)

                                !@#¥%……&*(纯符号)

                                qwertyu(纯字母)

二、边界值分析法

1.边界值的作用:测试工作经验得知,大量的错误发生在输入或输出范围的边界上,而不是输入范围的内容。针对各种边界情况设计测试用例,查出更多错误。

例:微信红包金额0.01~200

正确代码:0.01 <= x <=200

错误代码:0.01 < x < 200 、0.01 = x <= 200、 0.01 <= x < 200

2.概念:边界值分析法是对等价类划分法的一个补充,边界值一般都是从等价类的边缘值去寻找。

边界值分析的基本思想:正好等于、刚刚大于、刚刚小于边界的值作为测试数据

例:微信红包金额0.01~200  ,边界值 0.01 、 0 、0.02、 199.99、 200、 200.01

        下拉列表包含多个选项的情况 ,边界值:第一个选项、最后一个、中间一个

        搜素功能,展示大量数据的页面,涉及翻页,测试数据完整性及正确性,边界值:第一页、中间一页、最后一页中第一行、最后一行、中间一行

        banner活动页(网页中横幅广告),边界值:屏幕上光标在最左上、最右下位置

3.边界值得应用场景:如果需求规定了取值范围或规定了取值的个数时,可利用边界值进行测试。

4.边界值分析法设计用例的案例

例:QQ密码设置 :6-20个大小写英文字母、符号或数字组合

        边界值:5、6、7、19、20、21

(1)输入需求:密码设置 ,6-20个大小写英文字母、符号或数字组合

         ①划分角度:长度 ,数据类型(组成)

        有效等价类:6-20位,大小写字母+符号,大小写字母+数字,符号+数字,大小写字母+符号+数字

        无效等价类:<6位,>20位,纯数字,纯字母(大小写),纯符号,非字母符号数字--中文

         ②划分角度:是否为必填项

         有效等价类:必填项

         无效等价类:为空

(2)输入:密码

        测试用例设计(覆盖有效类)(边界值分析)

                                qwert@(6位,大小写字母+符号,非空)(6位)

                                  qwerty6(7位,大小写字母+数字,非空) (7位)

                                  Qwert12345678!@#$@&*(20位,大小写字母+数字+符号,非空)(20位)

                                  1234567890!@#$@&*.@(6-20位,数字+符号,非空)(19位)

(3)输入:密码

         测试用例设计(覆盖无效类)(边界值)

                                12345(<6位)(5位)

                                Qwert12345678!@#$@&*.(>20位)(21位)

                                123456(纯数字)

                                哈哈12345@(包含字母)

                                 (不输入)

                                !@#¥%……&*(纯符号)

                                qwertyu(纯字母)

三、判定表法

等价类边界值分析主要针对单个输入类条件的测试,对于输入条件存在关联组合的情况则无法覆盖。

例:公司涨薪规则:员工有5年工龄或具有1级贡献,则涨薪

等价类划分法
测试项有效等价类无效等价类
5年工龄有5年工龄没有5年工龄
1级贡献有1级贡献

没有1级贡献

 设计测试用例如下:

1.员工有5年工龄且1级贡献,涨薪;(覆盖 有效等价类:有5年工龄、有1级贡献)

2.员工没有5年工龄但有1级贡献,涨薪;(覆盖 有效等价类:有5年工龄;无效等价类:没有1级贡献)

3.员工有5年工龄但无1级贡献,涨薪;(覆盖 有效等价类:有1级贡献;无效等价类:没有5年工龄)

未覆盖用例:员工即无5年工龄也无1级贡献,不涨薪。

1.定义:判定表是分析和表达多逻辑条件下执行不同操作的工具。就是指把所有的输入条件、所有可能采取的动作按表格列出来,每一种条件和动作的组合构成一条规则,也即一条用例。

 例:公司涨薪规则:员工有5年工龄或具有1级贡献,则涨薪

判定表
条件桩5年工龄
条件桩1级贡献
动作桩涨薪××

 条件桩:列出需求规定所有的输入条件,顺序不重要

动作桩:列出需求规定可能采取的动作,顺序不重要

条件项:列出各个输入条件所有可能的真假值

动作项:列出在条件项的各种取值情况下应该采取的动作

2.判定表法设计用例的步骤

(1)列出条件桩和动作桩

(2)确定规则的个数 (若有n个条件,且每个条件的可取值为0或1,那么将会有2的n次方个规则)

(3)填写所有条件项

(4)填写所有动作项

(5)合并、简化判定表(若两条或多条规则具有相同的动作,并且其条件项之间存在极为相似的关系)

(6)列出测试用例(每个规章制度一条用例)

3.判定表法设计用例的案例

例:某ERP系统的一个设备管理模块,负责对公司所有的设备进行日常管理,具体包含海关检验,定期维修,报废等内容,针对设备的维修系统有如下规定:对功率大于50马力的机器同时维护记录不全,或者已经运行10年以上的机器,应该给予优先的维修处理。

条件:(1)功率大于50马力吗?

           (2)维修记录不全吗?

           (3)运行超过10年了吗?

动作:(1)进行优先处理

           (2)做其它处理

分析条件组合,确定对应动作,建立判定表并得到最终的测试用例。

判定表初稿
12345678
条件桩功率大于50马力××××
条件桩维修记录不全××××
条件桩运行超过10年××××
动作桩优先处理
动作桩其它处理

情况1,2可合并为1列;情况5,7可合并为1列;情况6,8可合并为1列(或4,8合并)

12345
条件桩功率大于50马力××
条件桩维修记录不全××--
条件桩运行超过10年-××
动作桩优先处理
动作桩其它处理

判定表法 条件多时列出表格比较繁琐,合并时容易漏测。

四、因果图法

判定表法针对输入条件之间的约束不能有效区分,会导致产生一些不合理的组合条件。需要体现输入条件之间的相互制约关系,可以使用因果图法。

1.定义:因果图法是用图解的方法表示输入的各种组合、约束关系,依据因果图最终写出判定表,从而设计相应的测试用例。

因果关系:体现条件和结果的关系。

恒等:a=b 

非~:a 不等 b

或V:可能有任意个输入,如果a1或a2是1,则b为1;否则b为0。

与^:可

能有任意个输入 ,如果a1和a2都是1,则b为1;否则b为0。

约束关系:输入条件间可能存在某些依赖关系,称为约束。在因果图中,用特定符合标明这些约束

例如:某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。

E约束(异) : a和b中至多有一个可能为1,即a和b不能同时为1。

I约束(或):a、b、c中至少有一个必须 为欸,即a、b、c不能同时为0。

O约束(唯一):a和b必须有一个且仅有一个为1。

R约束(要求):a是1时,b必须是1,即a为1是,b不能为0。

M约束(强制):若结果a为1,则结果b强制为0。

2.因果图法设计用例的步骤

(1)分析需求,列出原因和结果  (原因:即输入条件;结果:输出条件)

(2)分析输入与输入,输入与输出之间的关系

(3)通过关系,画出因果图

(4)将因果图转化为判定表

(5)去掉不合理组合,列出测试用例

3.因果图法设计用例的案例

例:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M.

第一步:先列出原因(即输入条件)和结果(输出条件):

原因:①第一列字符是A;②第一列字符是B;③第二列字符是一数字。

结果:②①修改文件;②②给出信息L;②③给出信息M

第二步:分析输入与输入,输入与输出之间的关系

第三步:通过关系,画出因果图

第四步:将因果图转化为判定表

12345678
输入(原因)1:第一列字符是A11110000
输入(原因)2:第一列字符是B11001100
输入(原因)3:第二列字符是数字10101010
输入(原因)11111100
输出(结果)21:修改文件
输出(结果)22:给出信息L
输出(结果)23: 给出信息M

第五步:去掉不合理组合,剩下的每一列作为一条用例

1,2种情况不合理

五、正交实验法

利用因果图法、判定表法可以帮助我们对于输入数据的组合情况进行用例设计,但当输入数据的组合数量巨大时,由于不太可能覆盖到每个输入组合的测试情况,因果图法或判定表法可能就不太适用了,可以采用正交实验法、来合理地减少人力跟时间成本。

1.定义:正交实验法是研究多因素多水平的一种方法,它是通过正交表挑选部分有代表性的水平组合试验替代全面试验。这些有代表行的组合试验具备了“均匀分散、整齐可比”的特点。

适用场景:比较多地应用在软件产品的搜索、查询、配置项等场景中。

4=3*(2-1)+1;L是正交表;4代表试验次数或正交表的行数;3代表最多可安排影响指标因素的个数或正交表的列数;2代表每个因素水平数。

上图来源于百度。

2.正交实验法设计用例的步骤

(1)分析需求,获取因素和水平(因素:条件;水平:取值)

(2)根据因素和水平,选择正交表

(3)替换因素水平,得到试验次数

(4)细化得到最终的测试用例

3.正交实验法设计用例案例

例如:某公司想通过“性别”、“单身”和“年龄”这三个查询条件对公司男女比例情况进行查询:

根据 “性别” = “男、女”查询

根据 “单身” = “是、否”查询

根据 “年龄” = “35岁以下 、35岁以上”查询

(1)因素:3,水平:2 , 4=3*(2-1)+1

(2)Orthogonal Arrays (直接在网页中查询正交表)

(3)

ColumnColumnColumn
Experiment Number性别单身年龄
135岁以下
235岁以上
335岁以上
435岁以下

可借用网址正交测试用例生成工具,生成用例。

六、场景法

1.定义:通过运用场景来对系统的功能点或业务流程的描述,设计用例遍历场景,验证软件系统功能的正确性,从而提高测试效果的一种方法。

场景法一般包含基本流和备用流。(测试用例不充分,需结合其它测试方法测试)

基本流:软件功能的正确流程,通常一个业务只存在一个基本流且基本流有一个起点和一个终点。

备选流:除了基本流之外的各个支流,包含基本流之外的其它备选场景、异常场景。

2.场景法设计用例的步骤

(1)分析需求,画出流程图(基本流备选流)

矩形:表示步骤(操作/输入/输出结果)

菱形:判断--是否

箭头:工作流向

(2)依据基本流生成场景

①正常场景验证,每一个判断的正确的那条分支

(3)从开始节点,覆盖备选流,生成场景

②找到每一个判断的地方,覆盖另一条未被覆盖的判断分支

③绕回到流程上面,多验证一个正常的步骤

(4)每一个场景为一条用例

3.场景发设计用例案例

例:ATM取款

1.插入银行卡(合法)-- 输入正确密码,确定 -- 输入取款金额:5000(前提:账号余额充足,ATM现金充足) -- 取款成功

2.插入银行卡(不合法)-- 提示错误,退卡

3.插入银行卡(合法)-- 输入正确密码,取消 -- 退卡

4.插入银行卡(合法)-- 输入错误密码,确定 -- 提示重新输入密码 -- 输入正确密码,确定

5.插入银行卡(合法)-- 输入错误密码,确定3次,吞卡

6.插入银行卡(合法)-- 输入正确密码,确定 -- 输入取款金额非法:30(前提:账号余额充足、ATM现金充足)-- 金额不合法 -- 输入合法金额

7.插入银行卡(合法)-- 输入正确密码,确定 -- 输入取款金额:5000(前提:账号金额不充足、ATM现金充足)-- 余额不充足 -- 输入其它金额

8.插入银行卡(合法)-- 输入正确密码,确定 -- 输入取款金额:5000(前提:账号金额充足、ATM现金不充足)-- 余额不充足 -- 输入其它金额

七、状态迁移法

1.定义:状态迁移主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导致状态迁移的事件,来测试状态之间的转换。

2.使用场景:状态迁移的思想是提供多个状态的转换串起来进行测试的思路。该方法适合功能的状态比较多的情况下,需测试各种状态的转换,且这些状态转换的测试在实际工作中容易被遗漏。比如播放器、遥控按键等。对于业务流程复杂的产品,不能很好地通过场景法进行用例设计时,可应用状态迁移的思路,从业务的各种状态出发,并通过这些状态之间的切换条件串联起来进行测试覆盖,以此保证用例的高覆盖率。

3.状态迁移法设计用例的步骤

(1)分析需求,整理所有状态

(2)画出状态迁移图

(3)列出状态-事件表 (此项不是必须项,可依据实际情况跳过该步骤,直接得到状态转换树)

(4)得到状态转换树(测试路径)

(5)根据状态转换树得到测试用例

4.状态迁移法设计用例的案例

需求:通过某购票系统,顾客可以提前购买火车票,去到某地。

1.用户登录购票系统,选择出发地、目的地、出发日期,选择某趟车次点击“预定”,且填好订票人信息,点击提交订单;当前订单状态为“未支付”;

2.用户手动取消订单,车票状态更新为“已取消”;45分钟内未支付,订单自动取消,车票状态为“已取消”;

3.用户支付车票,车票状态为“已取消”;

4.用户到达车站通过自动取票机或售票窗口取票,车票状态为“已出票”;

5.在开车半小时前,可进行改签,改签成功,车票状态为“改签成功”;

6.已出票/已改签的车票检票登上火车后,车票状态变为“已使用”;

7.在开车半小时前,可进行退票,退票成功,车票状态为“退票成功”。

(1)分析需求,整理订单/车票的所有状态:

未支付、已取消、已支付、已出票、改签成功、已使用、退票成功

(2)画出状态迁移图

(3)列出状态-事件表:(不是必须项,可跳过)

(4)得到状态转换树(测试路径)

(5)根据状态转换树得到测试用例:

每条路径则为1条用例。对于状态转换有存在多个事件触发,覆盖多个事件操作,比如“未支付--已取消”这条测试路径,需要测试2种情况:①用户手动取消,②超过45分钟用户未支付,自动取消。

八、错误推测法

1.定义:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。

2.要素:经验、知识、直觉。

3.使用场景:先通过对用例进行设计,再使用错误推测法进行推测列举程序中可能出现的错误,作为用例的补充。

例:长文本输入框,输入纯数字/字符/字母过长,溢出边框的情况

黑盒测试用例设计总结
等价类划分法需求有输入,输入之间无关联组合要求
边界值分析法需求有输入,且输入规定了范围或个数
判定表法需求有多个输入,且输入需考虑关联组合
因果图法

需求有多个输入,输入间有约束关系;

输入与输出间有因果关系

正交实验法

需求有多个输入项,每个输入项又有多个不同取值,

需考虑输入间相互组合情况

场景法/状态迁移法多个功能的业务流程/逻辑覆盖
错误推测法补充测试用例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值