当前位置: 首页 > news >正文

黑盒测试用例设计 - 场景法

原理

  • 现在的软件几乎都是用时间触发来控制流程的。测试时,可以以生动的描述出触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。
  • 基本流:软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点
  • 备选流:除了基本流之外的各支流,包含多种不同的情况。

场景列表

  • 场景 1 基本流
  • 场景 2 基本流 备选流 1
  • 场景 3 基本流 备选流 1 备选流 2
  • 场景 4 基本流 备选流 3
  • 场景 5 基本流 备选流 4
    老街头的猫。

注意

  1. 场景中必须有基本流
  2. 场景中必须有内容从用例的开始,到用例的结束。

设计用例的步骤

  • 根据说明,描述出程序的基本流及各项备选流
  • 根据基本流和各项备选流生成不同的场景
  • 对每一个场景生成相应的测试用例
  • 对生成的所有测试用例重新复审,去掉多余的测试用例
  • 测试用例确定后,对每一个测试用例确定测试数据值

适用于

  • 场景法适用于解决业务流程清晰的系统功能

案例:ATM机的取款流程

第一步:描述出基本流和各项备选流
基本流:插卡 -> 输入密码 -> 选择取款服务 -> 选择取款金额 -> 出钞 -> 取卡
老街头的猫。

备选流:
老街头的猫。

  1. 卡片不是银行卡
  2. 卡片不是银联卡
  3. 密码输错一次
  4. 密码输错两次,第三次输入正确
  5. 密码输入错误三次,被吞卡
  6. 选择存款服务
  7. 选择查询服务
  8. 选择转账服务
  9. 选择取款金额
  10. 选择其他取款金额
  11. 选择查询账户金额
  12. ATM机没钱了
  13. 账户取款金额达到账户当日取款交易上限
  14. 取款机停电了
  15. 取款机掉线了
  16. 存入假钞
  17. 转账账户不存在
  18. 转账账户存在

第二步:根据基本流和各项备选流生成不同的场景
场景设计:
场景 1:基本流
场景 2:基本流 + 备选流 1

场景 19:基本流 + 备选流 18

第三步:对每一个场景生成相应的测试用例
场景 1 用例:

  1. 插入银联卡
  2. 输入正确密码
  3. 选择服务为取款
  4. 选择取款金额为500
  5. 等待出钞
  6. 取出卡片
    预期结果:取出500元现金,余额-500元,并且正常取出卡片

场景 2 用例:

  1. 插入公交卡
  2. 退卡

预期结果:退出卡片

以此类推…

场景 19 用例:

  1. 插入银联卡
  2. 输入正确密码
  3. 选择服务为转账
  4. 输入转账账户
  5. 输入转账金额2000
  6. 等待转账成功
  7. 取出卡片

预期结果:收款账户余额+2000、转账账户余额-2000,并且正常取出卡片

第四步:对生成的所有测试用例重新复审,去掉多余的测试用例
比如将 场景一二三四合并为一条用例:

  1. 插卡(万事通卡)
  2. 换卡(银联卡)
  3. 输入密码(第一次输入错误)
  4. 再次输入密码(第二次输入错误)
  5. 第三次输入密码(输入正确)
  6. 选择服务(取款)
  7. 选择取款金额(1000)
  8. 等待出钞
  9. 取出卡片

预期结果:取出1000元现金,余额-500元,并正常取出卡片

第五步:测试用例确定后,对每一个测试用例确定测试数据值

  • 输入密码第一次输入错误数据:123456
  • 输入密码第二次输入错误数据:654321
  • 输入密码第三次输入正确数据:123666
  • 选择取款金额数据:100
  • 选择取款金额数据:500
  • 选择取款金额数据:1000
  • 选择取款金额数据:其他 -> 8000
  • 输入转账金额数据:1000

相关文章:

  • 51单片机实训day2——创建Proteus工程以及Proteus基本控件的使用|单片机最小系统电路设计:电源配置 复位电路 晶振电路
  • 《Python多人游戏项目实战》第五节 断线重连
  • Oracle --- 序列
  • pdf文档页码怎么添加?分享这几个pdf加页码方法给你
  • Java 线程的六种状态及其简易转换
  • 【Python】用python将html转化为pdf
  • ddim原理及代码(Denoising diffusion implicit models)
  • 艾美捷脂质过氧化检测试剂盒参数说明和文献参考
  • Moonbeam Illuminate/22|各类圆桌讨论文字节选
  • MacOS系统安装Qt教程
  • day 8 模拟和高精度
  • Go语言常用条件判断空值逻辑
  • Kafka Producer Retries Idempotence 原理
  • 从零开始,开启属于你的 RTE 漫游之旅!丨漫游指南 x 即将启航
  • Fabric.js 元素被遮挡的部分也可以操作
  • 太阳能电池板自动清洗机器人的制作分享
  • electron:获取MAC地址
  • Kafka工作流程简介
  • Web漏洞扫描篇-Nessus使用
  • 移动边缘网络环境中的数据同步方法