场景法
概述
场景法(Scenario Analysis)是通过使用”场景”对软件系统的功能点或业务流程进行描述,即针对需求模拟出不同的场景进行所有功能点及业务流程覆盖的测试用例设计方法。
场景的基本概念
“场景”可以理解为一个瞬时的系统行为,狭义上可以理解为程序的一个操作,或者某个界面,也可以解读为”人物(Who)、时间(When)、地点(Where)、为什么做(Why),做了什么(What)和如何做(How)“的5W1H所组成的一系列活动,也可能场景中会包含一系列的子场景。
场景法的应用背景
在面向对象的软件开发中,事件触发机制是编程中经常遇到的。现在的软件几乎都是用事件触发来控制流程的,像移动软件、GUI软件、游戏等。事件触发时的情景就形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。
基本流与备选流
基本流
在测试一个软件的时候,在场景法中,测试流程是软件功能按照正确的事件流实现的一条正确流程,我们把这个称为该软件的基本流。
备选流
出现故障或缺陷的过程或非正常过程,用备选流加以标注。备选流可以是从基本流来的,或是由备选流中引出的。
备选流的类型:
- 从基本流开始,在某个特定条件下执行,然后重新加入基本流中
- 起源另一个备选流
- 终止用例而不再重新加入到某个流
场景法的基本设计步骤
- 分析需求:根据说明,描述出程序的基本流及各项备选流
- 生成场景:根据基本流和各项备选流生成不同的场景
- 生成测试用例:对每一个场景生成相应的测试用例
- 复审和确定:对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
场景组合示例
根据基本流与备选流的组合,可以确定以下用例场景:
- 场景1:基本流
- 场景2:基本流 + 备选流1
- 场景3:基本流 + 备选流1 + 备选流2
- 场景4:基本流 + 备选流3
- 场景5:基本流 + 备选流3 + 备选流1
- 场景6:基本流 + 备选流3 + 备选流1 + 备选流2
- 场景7:基本流 + 备选流4
- 场景8:基本流 + 备选流3 + 备选流4
应用示例:酒店预订系统
基本流程
游客访问网站查询酒店 → 找到合适的酒店后选择房间 → 选择预订 → 游客注册或登录 → 登录成功后交付定金 → 完成酒店预订流程
备选流设计思路
- 考虑每个功能点的无效情况,例如登陆账号失败
- 考虑不同功能点之间可以跨越功能点的情况,例如登陆账号,不支付定金,直接生成订单
- 考虑中途退出的情况,例如查询酒店后直接关闭网页
- 考虑可以返回到前面的功能点,例如登陆账号后再次查询酒店
- 考虑跳转功能点,或者返回功能点过程中中途退出系统的行为
备选流示例
| 备选流编号 | 用例描述 |
|---|---|
| 备选流1 | 酒店不存在 |
| 备选流2 | 酒店已住满 |
| 备选流3 | 账号不存在 |
| 备选流4 | 账号密码错误 |
| 备选流5 | 账户余额不足 |
| 备选流6 | 退出系统 |
| 备选流7 | 支付定金时退出重新登陆 |
场景组合示例
| 场景编号 | 场景名称 | 场景组合 |
|---|---|---|
| 场景1 | 成功预订酒店 | 基本流 |
| 场景2 | 没有合适的酒店 | 基本流 + 备选流1 |
| 场景3 | 酒店住满无法预订 | 基本流 + 备选流2 |
| 场景4 | 账号不存在 | 基本流 + 备选流3 |
| 场景5 | 账号或密码错误 | 基本流 + 备选流4 |
| 场景6 | 账户余额不足 | 基本流 + 备选流5 |
适用场景
场景法适合于:
- 业务流程为主的电子商务网站测试
- 移动APP的测试
- 面向对象开发的软件
- 事件触发机制控制的流程
场景法与UML
场景法可以利用事件触发场景变化,而得到场景组合,在针对需求分析时可以结合UML的活动图或者时序图设计相应的场景。
逆着需求的测试思路
使用场景法需要掌握一种逆着需求和测试的思路。例如:
- 需求说明”本品适用于IE8.0以上版本的浏览器” → 负向思维:试试其他浏览器(Chrome、火狐狸)、IE8.0以下的版本
- “用户成功登陆” → 负向思维:有哪些方法会造成用户无法正确登陆(用户名错、密码错、用户不存在、用户被锁定、操作错误等)
注意事项
- 单个功能点的测试是进行业务流程测试和场景测试的前提,需要运用等价类、边界值、决策表法等黑盒测试方法,对其进行基本的功能测试之后,再进行下一步的流程测试工作
- 备选流的设计可以借鉴过往的经验、已有缺陷集和与实际用户讨论最常出现的情形
- 组合备选流与基本流时,要确保场景的合理性
- 最后对测试用例进行整合,去除冗余