黑盒测试设计方法概述 :
1、被测模块有输入域和输出域的需求,考虑使用等价类边界值的方法
2、被测模块的业务需求涉及到多输入域组合的情况 ( 如:查询 ) ,可以从判定表、正交试验法两个方法里选择合适方法。组合较少用判定表法。组合多的用正交试验法更高效
3、判定表法是因果图法的简化
4、被测模块的业务逻辑有执行顺序的话,选择用状态迁移或者流程分析法 ( 场景法 ) 比较合适。其中流程分析法更常用些。
一、等价类划分
1、等价类划分的概念
某个输入域上 的 集合,在 该 集合 中 的每个输入都是等效的,如果其中一个输入不会导致问题发生,则集合中的其他输入也不会发生问题
2、等价类法使用流程
①划分等价类并进行适当细分
②为每个等价类进行编号
③设计一条用例尽可能多的覆盖有效等价类、继续设计用例至所有有效等价类均覆盖
④设计一条用例尽可能多的覆盖无效等价类、继续设计用例至所有无效等价类均覆盖
3、 等价类表
输入 条件 |
有效 等价类 |
无效 等价类 |
输入1 |
有 效 1, 有效 2.。 。 |
无效1 , 无效 2.。 。。 |
输入2 |
|
|
例 子 :注册
输入条件 |
有效 等价类 |
无效 等价类 |
用户名 |
6到10位的英文数字 1 |
<6 3 |
密码 |
6到10位的英文数字 2 |
<6 9 |
4、设计用例 ( 覆盖等价类 )
覆盖等价类 |
用例 |
预期 |
用例编号 |
用户名 |
密码 |
1,2 |
Test1234 |
Test1234 |
3 |
Te12 |
Test1234 |
4 |
Test1234567890 |
Test1234 |
5 |
中文测试 |
Test1234 |
6 |
Tes@1234 |
Test1234 |
7 |
Tes 1234 |
Test1234 |
8 |
空 |
Test1234 |
9 |
Test1234 |
Te12 |
10 |
Test1234 |
Test1234567890 |
11 |
Test1234 |
中文测试 |
12 |
Test1234 |
Tes@1234 |
13 |
Test1234 |
Tes 1234 |
14 |
Test1234 |
空 |
二、 边界值
1、 边界值的概念
①测试 中大部分问题是发生在输入条件的边界和边界附近的,测试中可以 重点 ( 优先 ) 测试 输入范围的边界以及边界附近的值
②边界值 点:
上 点 : 输入范围边界上的点
例:金额[ 0.01,200 ] 上点 : 0.01,200
(0.01,200) 上点 : 0.01,200
内点 :输入 范围内的任意点
离点 :距离 边界最近的点
精度:
闭区间 ,离点在输入范围外
开区间 ,离点在输入范围内
2、 边界值法使用流程
①确认边界,包括隐藏边界的上点和离点
②确定增量 设计测试用例
3、用例设计
例 子 : 用户名长度6到10位可以使用边界值分析【英文和数字不是有序集合不能进行边界值分析】
分析:[6,10] 上点6,10 离点5,11
覆盖边界值点 |
用例 |
|
预期 |
|
用户名 |
密码 |
|
6 |
Test12 |
Test1234 |
可以 |
10 |
Test123456 |
Test1234 |
可以 |
5 |
Test1 |
Test1234 |
不可 |
11 |
Test1234567 |
Test1234 |
不可 |
三、判定表
1、判定表的概念
分析 和表达多种输入条件进行不同组合完成不同动作的一种工具
【判定表 就是描述输入条件的组合以及结果 】
2、判定表法使用流程
①分析被测应用,确定原因和结果( 输入和输出 )
②确定因果逻辑关系
③把因果图转换为判定表
④根据约束条件简化判定表,并给出结果
⑤设计测试用例
3、 判定表
①条件桩: 输入条件
条件 项 : 输入条件的取值
动作 桩 :输出 结果
动作 项 : 输出结果取值
规则: 输入条件组合以及输出的结果
规则 数:条件项数量相乘
②先 列出所有条件和动作
根据 条件项数量计算规则数量
列出 判定表:
条件 |
规则1 |
2 |
3 |
4 |
|
|
|
条件1 |
条件 项 1 |
条件 项2 |
|
|
|
|
|
条件2 |
条件 项 1 |
条件 项2 |
|
|
|
|
|
结果 |
结果1 |
结果2 |
|
|
|
|
|
按 规则设计用例
4、 用例设计
例 子 :手机通话
判定表:
规则 数 条件 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
是否开机 |
是 |
是 |
是 |
是 |
否 |
否 |
否 |
否 |
是否欠费 |
是 |
是 |
否 |
否 |
是 |
是 |
否 |
否 |
是否在服务区 |
是 |
否 |
是 |
否 |
是 |
否 |
是 |
否 |
结果:是否正常通话 |
不能通话 |
不能通话 |
正常通话 |
不能通话 |
不能通话 |
不能通话 |
不能通话 |
不能通话 |
设计用例:
覆盖规则 |
用例 |
预期 |
1 |
开机,欠费,在服务区 |
不能通话 |
2 |
开机,欠费,不在服务区 |
不能通话 |
3 |
开机,不欠费,在服务区 |
正常通话 |
4 |
开机,不欠费,不在服务区 |
不能通话 |
5 |
不能开机,欠费,在服务区 |
不能通话 |
6 |
不能开机,欠费,不在服务区 |
不能通话 |
7 |
不能开机,不欠费,在服务区 |
不能通话 |
8 |
不能开机,欠费,不在服务区 |
不能通话 |
四、流程图法(场景法 )
1、流程图法概念
以特定的图形符号加上说明,表示事件的流程的图,被称为流程图
2、流程图法使用流程
①根据说明,描述出程序的基本流及各项备选流
②根据基本流和各项备选流生成不同场景
③对每一个场景生成相应的测试用例
④对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
3、用例设计
例 子 : 购物登录页面
①确定基本流和备选流
基本流 |
登录在线购物网站,登录成功,选择物品,生成购物订单,付钱交易 |
备选流1 |
登录失败 |
备选流2 |
账号或密码错误 |
备选流3 |
用户账号余额不足 |
备选流4 |
用户账号没有钱 |
备选流5 |
用户退出登录 |
②根据基本流和备选流确定场景【生成的最终场景】
场景1- 成功购物 |
基本流 |
|
场景2- 账号或者密码错误 |
基本流 |
备选流1 |
场景3- 退出登录 |
基本流 |
备选流2 |
场景4- 账户余额不足 |
基本流 |
备选流3 |
场景5- 账号没有钱 |
基本流 |
备选流4 |
流程图:
用例设计:
|
场景/ 条件 |
账号 |
密码 |
账户余额 |
预期结果 |
1 |
场景1- 成功购物 |
Ding123 |
123456 |
200 |
成功购物,账户余额减少200 元 |
2 |
场景2- 账号或密码错误 (账号错误 ) |
asd |
123456 |
|
提示账号或密码错误 |
3 |
场景2- 账号或密码错误 (密码错误 ) |
Ding123 |
7889 |
|
提示账号或密码错误 |
4 |
场景3- 退出登录 |
|
|
|
返回到登录界面 |
5 |
场景4- 账户余额不足 |
Ding123 |
123456 |
100 |
提示账户余额不足请充值 |
6 |
场景5- 账号没有钱 |
Ding123 |
123456 |
0 |
提示账号余额请充值 |
五、正交试验法
1、正交实验法概念
利用 正交实验表,考虑任意 2个 条件的组合的测试方法,大量实验表明,如果任意 2个 条件的组合测试不会发生问题,那么其他的组合发生问题的可能性也较小
正交 实验的方法是经济、有效的
因子:输入 条件 (因素)
状态:输入 条件的取值 (水平)
【有时候 判定表的组合数量会 非常 多,因为判定表是所有条件的组合
在 实验中往往不需要考虑所有条件组合,仅考虑任意 2个 条件的组合
根据 法国数学家伽罗瓦的理论推导出的正交实验表,仅考虑任意 2个 条件进行组合,可以根据正交实验表筛选测试数据 】
2、正交表法使用流程
①列出 因子和状态
②根据 因子和状态数量 查询 常用正交实验表,找到匹配的正交表进行使用
③如果 没有完全匹配的正交表,则选择相近的表( 状态 数相同, 表 的因子数 要 接近并大于需求因子数 ) , 选取其中任意与需求因子数相等的列使用
④根据 所选的表,列出正交表,填入值
⑤设计 用例覆盖 所有 组合
⑥补充 未覆盖 但 较为 重要 的组合 作为 测试用例
【①判断有哪些因素(输入)
②判断每个因素有哪几个水平(输入的可取值)
③选择一个合适的正交表
④把输入的值映射到表中
⑤把每一行的各因素水平的组合作为一个测试用例
⑥加上你认为可疑且没有在表中出现的组合】
3、因子状态分布不平均处理方法
因子1: 1,2,3
因子2: 1,2,3,4
因子3: 1,2,3
因子4: 1,2
☆处理 方法:
先 查询正交表,找到接近的表
状态 数多,则合并 状态: (状态1 or状态 2)
状态 少,则添加状态 : 添加 该因子下已存在的状态
处理为 因子状态分布平均的情况,再按步骤进行
列出 正交表后,对于存在合并状态的组合,要进行 拆分
例 子 : PowerPoint 软件打印功能可以设置如下打印选项:
打印范围分:全部、当前幻灯片、给定范围
打印内容分:幻灯片、讲义、备注页、大纲视图
打印颜色 / 灰度分 : 颜色、灰度、黑白
打印效果分:幻灯片加框、幻灯片不加框
因子和状态数:
4个 因子 状态 数: 3,4,3,2
选择4因子 3 状态 表 :
打印范围分:全部、当前幻灯片、给定范围
打印内容分:幻灯片、讲义、(备注页 or 大纲视图 )
打印颜色 / 灰度分 : 颜色、灰度、黑白
打印效果分:幻灯片加框、幻灯片不加框、幻灯片加框
4、用例设计
① 例 子 : 邮件
5因子2状态
选择7因子2状态表,选择1到5列
收件人 填 不填
抄送 填 不填
主题 填 不填
正文 填 不填
附件 填 不填
正交表:7因子 2 状态就是 8 个用例
|
收件人 |
抄送 |
主题 |
正文 |
附件 |
1 |
填 |
填 |
填 |
填 |
填 |
2 |
填 |
填 |
填 |
不填 |
不填 |
3 |
填 |
不填 |
不填 |
填 |
填 |
4 |
填 |
不填 |
不填 |
不填 |
不填 |
5 |
不填 |
填 |
不填 |
填 |
不填 |
6 |
不填 |
填 |
不填 |
不填 |
填 |
7 |
不填 |
不填 |
填 |
填 |
不填 |
8 |
不填 |
不填 |
填 |
不填 |
填 |
设计用例:
覆盖 组合 |
收件人 |
抄送 |
主题 |
正文 |
附件 |
预期 |
1 |
mwt@test1.com |
test2@test1.com |
测试主题1 |
测试正文1 |
test1.jpg |
|
2 |
mwt@test1.com |
test2@test1.com |
测试主题1 |
|
|
|
3 |
mwt@test1.com |
|
|
测试正文1 |
test1.jpg |
|
4 |
|
|
|
|
|
|
5 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
7 |
|
|
|
|
|
|
8 |
|
|
|
|
|
|
②例:登录
3因子 2 状态
选择3因子 2 状态表
列出因子和状态:
用户 填 不填
密码 填 不填
验证 填 不填
正交表:
|
用户名 |
密码 |
验证码 |
1 |
填 |
填 |
填 |
2 |
填 |
不填 |
不填 |
3 |
不填 |
填 |
不填 |
4 |
不填 |
不填 |
填 |
【可以补充第五条 所有都不填】
设计用例:
覆盖的组合 |
用户名 |
密码 |
验证码 |
预期 |
1 |
mwt |
111 |
2845 |
可以 |
2 |
mwt |
|
|
不可 |
3 |
|
111 |
|
不可 |
4 |
|
|
2845 |
不可 |
5 |
空 |
空 |
空 |
不可 |
【常用正交表参考附件】