软件测试之黑盒测试方法介绍及测试用例练习

一、因果图法

1. 概念

因果图是一种逻辑图,表示:恒等、与、或、非
当输入有很多时,不同输入的组合对应不同的输出,用因果图来分析不同输入组合和不同输出组合之间的关系

在这里插入图片描述

  • 恒等:在恒等关系中,要求程序有1个输人和1个输出,输出与输入保持一致。若ci为1,则ei也为1;若ci为0,则ei,也为0。

  • 非:非使用符号“~”表示,在这种关系中,要求程序有1个输人和1个输出,输出是输入的取反。若ci为1,则ei为0;若ci为0,则ei为1。

  • 或:或使用符号“∨”表示,或关系可以有任意个输入,只要这些输入中有一个为则输出为1,否则输出为0。

  • 与:与使用符号“∧”表示,与关系也可以有任意个输入,但只有这些输入全部为输出才能为1,否则输出为0。

2. 步骤

  • 分析出所有的输入、输出
  • 找出输入输出之间的逻辑关系
  • 根据输入输出之间的关系画因果图
  • 根据因果图画判定表
  • 根据判定表设计测试用例

3. 例子

淘宝双十一活动,订单已提交,订单合计金额大于300元或有红包,则享更多优惠

  1. 分析输入输出
    输入:金额大于300,金额小于等于300;有红包,没有红包;订单已提交,订单没有提交
    输出:有优惠,没有优惠

  2. 关系
    订单提交,金额大于300,有红包,有优惠
    订单提交,金额大于300,没有红包,有优惠
    订单提交,金额小于等于300,有红包,有优惠
    订单提交,金额小于等于300,没有红包,没有优惠
    订单未提交,没有优惠

  3. 画因果图
    在这里插入图片描述

  4. 画判定表

  5. 测试用例

订单已提交,金额大于300,有红包,有优惠
订单已提交,金额大于300,没有红包,有优惠
订单已提交,金额小于等于300,有红包,有优惠
订单已提交,金额小于等于300,没有红包,没有优惠
订单未提交,金额大于300,没有红包,没有优惠
订单未提交,金额小于等于300,有红包,没有优惠
订单未提交,金额小于等于300,没有红包,没有优惠
订单未提交,金额大于300,有红包,没有优惠

二、正交法

1. 概念

研究多因素多水平的一种实验(测试)方法,根据正交性,从输入组合当中选取最优的组合进行试验,分析结果,通过这些最优组合得出的试验结果来分析这个试验的结果。
因素:输入的变量
水平:变量的取值

正交表的构成:
列:因素数,变量的个数
水平数:每个变量的最大个数
行:L(正交表的行)=(水平数-1)*因素数+1

2. 性质

  1. 每一列不同数据出现的次数一致
  2. 任意两列不同数据的组合出现的次数一样
    在这里插入图片描述

3. 步骤

  1. 确定所有的输入(变量)
  2. 确定每一个变量的取值的个数
  3. 确定因素数(正交表的列),水平数,正交表的行 L =(水平数-1)*因素数+1
  4. 根据正交表的性质,把变量的值映射到表中
  5. 写测试用例,正交表的每一行就是一个测试用例
  6. 补充正交表中没有的但是自己考虑到的可能出现的测试用例

4. 例子

邮箱注册

  1. 确定因素数(列):姓名,邮箱,密码,确认密码,验证码(5个);
  2. 水平数:输入,不输入(2个);
  3. 正交表的列 = 因素数 = 5
    正交表的行:L = (水平数-1)因素数+1 =(2 - 1) 5 +1 = 6
  4. 映射
    在这里插入图片描述
  5. 写测试用例
姓名填写,邮箱不填写,密码填写,确认密码不填写,验证码填写
姓名不填写,邮箱填写,密码不填写,确认密码填写,验证码不填写
姓名不填写,邮箱不填写,密码填写,确认密码不填写,验证码不填写
姓名填写,邮箱填写,密码不填写,确认密码不填写,验证码填写
姓名填写,邮箱填写,密码填写,确认密码填写,验证码不填写
姓名不填写,邮箱不填写,密码不填写,确认密码填写,验证码填写

三、场景法

1. 引例

  1. ATM 取款流程
    插卡 —— 输入密码 —— 输入金额 —— 取钱 —— 退卡
  2. 异常
    1. 插卡:卡插反了,卡消磁了,插入其他卡(公交卡,会员卡等);
      卡挂失,卡注销;
      停留时间长,卡被吞;
    2. 输入密码:密码连续三次输错,账户被锁定;
      ​ 密码前两次输错或者第一次输错,接下来一次输入正确;
      ​ 忘记密码,手机上重置密码;
    3. 金额:金额大于银行卡余额,ATM 机本身余额不足;
      ​ 输入的金额低于 ATM 要求的金额;
      ​ 输入是零钱(非100倍数),ATM机不允许;
      ​ 超过每日最大可以取款的金额数;
    4. 长时间未取(看 ATM 机器的处理);
      遗忘了部分钱没有取走;
    5. 其他:ATM 机网络异常;断电;机器故障
  3. 根据异常点写测试用例
    1. 卡插反了,会提示 “插卡错误”;
    2. 卡消磁,取款失败。会提示 ”无效卡“;
    3. 插入其他卡,取款失败。会提示 ”无效卡“;
    4. 卡挂失,取款失败。会提示 ”无效卡“

2. 概念

场景法是把一个个孤立的功能点按照一定的策略串联起来,形成一定的场景或者业务。把场景中的每一个功能点提出来,考虑功能点可能的不同的情况(正常的和异常的输入输出),根据这些情况去设计测试用例

四、错误猜测法

1. 概念

根据测试人员的知识、经验、直觉去判断哪一个模块会出现问题,专门针对这个模块进行测试用例的缩写
作为一种补充的设计测试用例的方法

按照需求去设计测试用例
1.分析并且验证需求的正确性和合理性
2.分析需求,细化需求,从细化的需求当中提取测试点(功能),
对每一个功能点进行测试用例的具体设计
面试题:黑盒测试设计测试用例的方法有哪一些?
等价类,边界值,因果图,正交法,场景法,错误场景法
简历 -> 专业技能
测试:掌握了黑盒测试设计测试用例的方法,如等价类,边界值,因果图法
掌握软件相关测试的基本概念和软件测试的流程

五、加强练习

1. 等价类和边界值的训练

  1. 题目要求
进行信息注册,包括:姓名、年龄
姓名:1-20个字符,不能包括数字,不能为空
年龄:18-60之间的整数,不能为空
  1. 姓名的测试
    在这里插入图片描述
  2. 年龄的测试
    在这里插入图片描述

2. 因果图法

  1. 题目
    有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”、“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。
  2. 分析
1. 输入和输出
 输入:输入1.5元硬币,输入2元硬币,按“可乐”,按“雪碧”,按“红茶”
 输出:可乐,雪碧,红茶,输出5角硬币
2. 分析输入和输出之间的关系
 输入1.5元硬币,按“可乐”,输出“可乐”;
 输入1.5元硬币,按“雪碧”,输出“雪碧”;
 输入1.5元硬币,按“红茶”,输出“红茶”;
 输入2元硬币,按“可乐”,输出“可乐”,输出5角硬币;
 输入2元硬币,按“雪碧”,输出“雪碧”,输出5角硬币;
 输入2元硬币,按“红茶”,输出“红茶”,输出5角硬币;
  1. 画因果图
    在这里插入图片描述
  2. 根据因果图,画判定表
    在这里插入图片描述
  3. 根据判定表写测试用例
输入1.5元硬币,按“可乐”,输出“可乐”;
输入1.5元硬币,按“雪碧”,输出“雪碧”;
输入1.5元硬币,按“红茶”,输出“红茶”;
输入2元硬币,按“可乐”,输出“可乐”,输出5角硬币;
输入2元硬币,按“雪碧”,输出“雪碧”,输出5角硬币;
输入2元硬币,按“红茶”,输出“红茶”,输出5角硬币;
输入2元硬币,不按饮料的按键,不出饮料,超时会提示“请按相应的饮料按键”;
输入1.5元硬币,不按饮料的按键,不出饮料,超时会提示“请按相应的饮料按键”;
不输入硬币,不按饮料按键,不出饮料;
不输入硬币,按任意饮料按键,不出饮料;
先投入2元硬币,再投入1.5元硬币,自动售卖机提示“不允许多次投入等于或者超过饮料价钱的硬币,请联系工作人员退还硬币”
其他情况下的用例:
自动售卖机要有防盗警报;
自动售卖机网络中断;
自动售卖机断电;
输入1.5元硬币之后,自动售卖机断电了或者断网了,提示“请联系工作人员退还硬币”;
输入硬币,相应的饮料没有了,提示“请联系工作人员退还硬币”;
输入假币/游戏币,提示“请输入合理的正常的硬币”

六、某APP的测试用例设计

1. 安装和卸载

应用的安装和卸载在任何一款APP中都属于最基本功能。一旦出错,就属于优先级为紧要Critical的缺陷。因此APP的安装和卸载应作为一个测试点多加重视。主要关注以下几个方面:"

▲应用是否可以正常安装(命令行安装(测试人员):豌豆荚/手机助手,应用商店等 装;apk/ipa安装包安装)。

▲ 应用是否可以在iOS和Android不同系统,版本,机型上进行安装(有的系统版本过低,应用不能适配)(安装兼容性的测试)。
▲安装过程中是否能暂停,再次点击,是否继续安装。

▲安装 时如何表现,是否有相应提示,提示是否友好。

▲安装过程中断网或网络不稳定的情况下,是否有相应提示

▲是否可以正常删除(卸载)应用(桌面删除;第三方软件删除;命令行删除)。

▲卸载过程中出现死机,断电,重启等意外的情况,待环境恢复后是否可以继续正常卸载。

▲移除APP

2. 运行

▲软件安装后需要检查应用是否能正常运行;

▲APP安装完成后,是否可以正常打开,稳定运行

▲APP的速度是可以让人接受,切换是否流畅

▲网络异常时,应用是否会崩溃在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生Crash。(比如黄油相机APPV4.8.2.8版本,在无网络状态下,进入照片编辑页面,选择并拖动照片时,会发生闪退)。

▲反复使用同一个功能的时候,系统可以正常反应,而不是崩溃;

3. 注册和登录

用户注册和登录功能是很多APP产品最基础的构成之一,而主流的登录页面大致分为8种: (1)账号密码注册登录; (2)手机号注册登录; (3)第三 方授权登录;(4)二维码登录;(5)刷脸登录;(6)指纹登陆; (7) 苹果账户对已经登录过的app账户和密码进行记忆,登录;(8)邮箱登录;(9)声纹登录;(10)蓝牙识别登录

本文针对前两种注册登录方式进行阐述:

3.1 账号密码注册登录

▲输入正确(符合账户密码要求的)的账号密码,可正常注册和登录

▲已注册用户再次注册昵称重复也不让你注册

▲未注册用户尝试登录

▲密码 “***” 展示

▲账号输入框对最大长度和格式应有校验(比如邮箱账号需要邮箱格式等)

▲账号或密码输入错误时建议提示“账号或密码错误”,而不是“账号错误”或“密码错误”(安全方面的考虑)

▲密码是否加密传输(可抓取请求查看Charles,fiddler)

▲密码更改后,登录时是否做到了有效数据的校验:修改前的密码失效

▲未登录时对一些页面的操作,是否做了控制

▲切换账号登录,检验登录的信息是否做到及时更新

▲对于多个端都进行操作时,确保数据库操作无误,且每个端可以及时看到数据的更新(数据同步,因为同一个账户,用的数据库的表是同一个表)

▲多设备同时登录同一帐号时(iOS+iOS,Android+Android,iOS+Android),检查是否将原用户剔除,弹出异地登录提示,且对一些需要登录后才能使用的页面无操作权限。 (如果APP账户切换手机重新登陆 需要验证)。

3.2 手机号注册登录

▲手机号输入框格式校验检查

▲验证短信文案是否符合所测APP

▲ 重复发送验证码,前一个验证码正常失效

▲频繁操作验证码发送,应有操作限制

▲验证码有效期校验(超过有效期无法登录)。

4. 日历控件

目前很多包含购票功能的APP中都会设置日历控件方便选票,那么对日
历控件的测试我们需要关注哪些呢?

▲月份和日期对应(比如2月有28天,7月31天)

▲闰年2月,应有29天

▲ 跨年时,年份应有增加

5. 权限设置

当前很多APP的使用依赖于位置,通知,网络,定位,蓝牙,WiFi,应用自启动,存储,摄像头,麦克风等用户权限,针对用户权限我们可以多关注以下几点:

▲首次启动APP询问是否同意启用权限

▲消息权限开启时,消息推送是否正常接收(iOS系统应用启用和后台关闭时都应该可以收到;Android系统在后台关闭进程后就不会推送)

▲消息权限关闭后,APP客户端接收不到消息推送。

▲位置权限开启时,APP可定位到当前位置

▲位置权限关闭后,APP需定位才可用的功能,是否有提示引导用户开启权限,比如“请打开系统设置中’隐私-定位服务‘,允许“XXXX”使用您的位置”

▲网络权限关闭时,APP是否有提示(“服务器或网络错误,请稍后重试”),是否有提示引导用户开启权限。

6. 软件更新

▲强制更新(APP开启后要求必须更新,否则无法使用APP):

  1. 多次关闭和打开APP后是否正常跳出更新弹窗,且无法关闭
  2. 点击更新是否正确跳转至后台配置的更新页面

▲非强制更新(只提示一次更新):

  1. 可正常关闭更新弹窗
  2. 重启APP更新提示按照需求再次显示,或者不再显示
  3. 点击更新是否正确跳转至后台配置的更新页面

▲ 取消版本更新时,老版本可以正常使用

▲APP更新后版本号应有更新

▲APP更新后新增功能和老功能可正常使用。(兼容性)

▲当有新版本时,不删除客户端的情况下,直接更新是否成功

▲删除 APP 后更新(重新安装)

7. 网络环境

中国移动 ;中国电信;中国联通

▲3G,4G,WiFi网络环境下应用的各功能可正常运行

▲网络异常时,数据交换失败是否会有提醒

▲有网到无网再到有网环境时,数据是否可以自动恢复,正常加载

▲只允许内网访问的APP,在连接到外网时是否有友好提示

8. 兼容性测试

▲尽量覆盖该产品的主要用户(建议选取产品自己的数据,具体技术方案可以采取APP内部埋点的方法。如果是新发布的产品,可以选取竞品类产品的数据)

▲从不同系统,版本,分辨率,机型(不同厂家ROM)等纬度进行适配测试

▲通常选择在少数主流设备上执行全向的用例,在其他兼容性范围内的设备上覆盖主要功能的测试用例

▲关注各功能界面在不同分辨率下是否存在 UI 展示问题(如果代码没有对不同分辨率做适配处理,就可能会出现错位,遮挡,留白,拉伸和模糊等问题)

▲基于 UI 自动化脚本的云测试方案(基于轻量级的 UI 自动化脚本,以及借助云平台大量的真机资源)

9. 异常测试

▲没有内存空间时,APP能否正确响应

▲ 横竖屏切换展示

▲APP运行时网络中断

▲反复操作某个功能(一般是比较重要的功能),不断点击和刷新,是否会出现闪退(隐含的是向APP后台的服务器不断发送请求)

▲APP运行时接入电话,短信,微信,或其他消息

由于移动互联网的应用太多,更新频繁,无论如何不是个人经验所能覆盖完

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值