技术分享 | 黑盒测试方法论—场景法
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。
测试不能只关注某个控件的边界值、等价类是否满足要求,也要关注它的主要功能和业务流程是否正确实现,这时就需要使用场景法来完成。
场景法

用例场景是用来描述流经用例路径的过程,这个过程从开始到结束遍历用例中所有基本流和备选流。
基本流:按照正确的业务流程来实现的一条操作路径即模拟正确的操作流程。
备选流:导致程序出现错误的操作流程即模拟错误的操作流程。
现在的产品几乎都是由事件触发来控制流程的,事件触发时的情景便成了场景,而同一事件不同的出发顺序和处理结果便形成了事件流。
在使用场景法设计测试用例时,需要覆盖系统用例中的主成功场景和扩展场景,并且需要适当补充各种正反面的测试用例以及考虑出现异常场景的情形。
场景法用例设计步骤
设计场景用例首先需要根据需求规格说明得出功能模块流程图,描述出程序的基本流及备选流,其次根据基本流和备选流生成不同的场景,构造场景列表,最后对每一个场景生成相应的测试用例,对所有的测试用例重新复审,去掉多余的测试用例。确定测试用例之后,为每一个测试用例确定测试的数据值即可完成场景用例的设计。
实例
对淘宝网通过购物车购物的流程设计测试用例。
画流程图
整个业务通过流程图来表示如下图所示:

确定基本流和备选流
基本流
进入淘宝首页
浏览商品
进入单品页
选择商品规格和数量
加入购物车
前往购物车
选择商品
结算,进入确定订单页
提交订单
付款成功
等待收获
确认收货
备选流
加入购物车时,不选择商品规格和型号,返回基本流第 4 步。
加入购物车时,商品库存不足,返回基本流第 4 步。
加入购物车时,未登录,登录后返回基本流第 3 步。
加入购物车后,继续选购,返回基本流第 4 步。
加入购物车,未选择商品,结算,返回基本流第 7 步。
支付失败,返回基本流第 8 步。
未选择商品加入购物车,退出购物,结束。
构造场景
登录后成功购物(基本流)
未选择商品规格和型号就添加购物车(基本流 + 备选流 1)
选择的商品库存不足(基本流 + 备选流 2)
未登录添加购物车(基本流 + 备选流 3)
商品添加购物车后继续购物(基本流 + 备选流 4)
进入购物车,未选择商品直接结算(基本流 + 备选流 5)
支付过程出错(基本流 + 备选流 6)
没有添加商品到购物车(基本流 + 备选流 7)
生成测试用例
用例编号测试点测试步骤预期结果1登录后成功购物前提条件:登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、选择商品规格和小于库存的数量 5、点击【加入购物车】 6、提示成功加入购物车 7、进入购物车页面 8、选择刚加入购物车的商品 9、点击【结算】 10、进入确认订单页 11、提交订单 12、付款成功 13、确认收货确认收货成功,订单完成2单品页未选择商品规格 和型号,添加购物车, 单品页上提示需要选择 商品规格与型号前提条件:登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、直接点击【加入购物车】单品页上提示需要 选择商品规格与型号3选择的商品库存不足, 添加购物车,提示库 存不足前提条件:登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、选择商品规格和大于库存的数量单品页上提示库存不足4未登录添加购物车, 进入登录页面前提条件:未登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、选择商品规格和小于库存的数量 5、点击【加入购物车】进入登录页面5商品添加购物车后 继续购物,留在单 品页前提条件:登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、选择商品规格和小于库存的数量 5、点击【加入购物车】 6、提示成功加入购物车 7、继续查看商品信息可以正常查看6进入购物车,未选 择商品直接结算, 提示未选择商品前提条件:登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、选择商品规格和小于库存的数量 5、点击【加入购物车】 6、提示成功加入购物车 7、进入购物车页面 8、不选择商品 9、点击【结算】购物车提示请勾选 要结算的宝贝7支付过程出错,提 示支付失败,回到 确认订单页前提条件:登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、选择商品规格和小于库存的数量 5、点击【加入购物车】 6、提示成功加入购物车 7、进入购物车页面 8、不选择商品 9、点击【结算】 10、进入确认订单页 11、提交订单 12、支付失败回到确认订单页, 提示支付失败8没有添加商品到购 物车,结束购物前提条件:登录 1、进入淘宝首页 2、查看商品列表 3、点击进入单品页 4、不点击【加入购物车】 5、关闭页面购物流程结束
最终生成的测试用例如上表所示,这种利用场景法设计出来的测试用例一般是对于等价类和边界值的补充,通常情况下是比较完善的。