技术分享 | 黑盒测试方法论—场景法

news2025/2/4 3:57:32

场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。

测试不能只关注某个控件的边界值、等价类是否满足要求,也要关注它的主要功能和业务流程是否正确实现,这时就需要使用场景法来完成。

场景法

用例场景是用来描述流经用例路径的过程,这个过程从开始到结束遍历用例中所有基本流和备选流。

  • 基本流:按照正确的业务流程来实现的一条操作路径即模拟正确的操作流程。
  • 备选流:导致程序出现错误的操作流程即模拟错误的操作流程。

现在的产品几乎都是由事件触发来控制流程的,事件触发时的情景便成了场景,而同一事件不同的出发顺序和处理结果便形成了事件流。

在使用场景法设计测试用例时,需要覆盖系统用例中的主成功场景和扩展场景,并且需要适当补充各种正反面的测试用例以及考虑出现异常场景的情形。

场景法用例设计步骤

设计场景用例首先需要根据需求规格说明得出功能模块流程图,描述出程序的基本流及备选流,其次根据基本流和备选流生成不同的场景,构造场景列表,最后对每一个场景生成相应的测试用例,对所有的测试用例重新复审,去掉多余的测试用例。确定测试用例之后,为每一个测试用例确定测试的数据值即可完成场景用例的设计。

实例

对淘宝网通过购物车购物的流程设计测试用例。

画流程图

整个业务通过流程图来表示如下图所示:

image.png888×1536 143 KB

确定基本流和备选流

基本流

  1. 进入淘宝首页
  2. 浏览商品
  3. 进入单品页
  4. 选择商品规格和数量
  5. 加入购物车
  6. 前往购物车
  7. 选择商品
  8. 结算,进入确定订单页
  9. 提交订单
  10. 付款成功
  11. 等待收获
  12. 确认收货

备选流

  1. 加入购物车时,不选择商品规格和型号,返回基本流第 4 步。
  2. 加入购物车时,商品库存不足,返回基本流第 4 步。
  3. 加入购物车时,未登录,登录后返回基本流第 3 步。
  4. 加入购物车后,继续选购,返回基本流第 4 步。
  5. 加入购物车,未选择商品,结算,返回基本流第 7 步。
  6. 支付失败,返回基本流第 8 步。
  7. 未选择商品加入购物车,退出购物,结束。

构造场景

  1. 登录后成功购物(基本流)
  2. 未选择商品规格和型号就添加购物车(基本流 + 备选流 1)
  3. 选择的商品库存不足(基本流 + 备选流 2)
  4. 未登录添加购物车(基本流 + 备选流 3)
  5. 商品添加购物车后继续购物(基本流 + 备选流 4)
  6. 进入购物车,未选择商品直接结算(基本流 + 备选流 5)
  7. 支付过程出错(基本流 + 备选流 6)
  8. 没有添加商品到购物车(基本流 + 备选流 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、关闭页面购物流程结束

最终生成的测试用例如上表所示,这种利用场景法设计出来的测试用例一般是对于等价类和边界值的补充,通常情况下是比较完善的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony 物联网设备开发环境搭建

前言 我们介绍的是华为官方推荐的 Windows + Ubuntu 混合开发的环境,使用Windows平台的DevEco Device Tool 进行可视化界面进行相关操作,通过远程连接的方式对接Ubuntu下的DevEco Device Tool,然后对Ubuntu下的源码进行开发、编译、烧录等操作。 目前官方不支持Mac系统,所…

【docker】什么是容器数据卷?

docker的理念回顾 将应用和环境打包成一个镜像! 数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化 MySQL,容器删了,删库跑路!需求&#x…

测试工具平台 MeterSphere 分享

一、官网地址 meterSphere 二、安装方式 Linux安装 默认账号密码: URL: http://$LOCAL_IP:8081用户名: admin初始密码: metersphere三、nginx配置 直接上配置 location / {proxy_pass http://localhost:8081;client_max_body_size 1000m;#access_log off;# 配…

SPDK代码结构浅析

最近这三周时间一直因为工作的需要在研究SPDK移植到RISCV平台上,在编译通过的时候,也顺带把SPDK的代码粗粗过了一遍,顺便做了一点笔记。 SPDK (Storage Performance Development Kit)其实就是在用户空间,采用轮询的方式无锁的NVM…

通达信下单接口获取指数成份股的步骤分享

通达信下单接口获取指数成份股的步骤分享: ContextInfo.get_sector() 接口:https://gitee.com/metatradeapi 用法: ContextInfo.get_sector(sector, realtime) 释义: 获取板块成份股,只支持取指数成份股 参数&…

DOM学习笔记(坚持~~~~)

1.DOM简介 1.1什么是DOM 文档对象模型简称DOM,W3C组织推荐的处理可扩展标记语言的标准编程接口,通过这些DOM接口可以改变网页的内容,结构和样式。 1.2 DOM树 文档:一个页面就是一个文档,DOM中使用document表示 元素&…

Python+Qt身体特征识别人数统计源码窗体程序

程序示例精选 PythonQt身体特征识别人数统计 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对《PPythonQt身体特征识别人数统计》编写代码,功能包括了相片,摄像头身体识别…

Javaweb中的Request(请求)和Response(响应)

目录 一、概念 二、请求(Request) 1.例子简介 2.Request继承体系 3.Request获取请求数据 (1)请求行 (2)请求头 (3)请求体 4.优化请求体参数的获取 5.解决请求参数乱码问…

POSIX Timer

一、特点: 1、使用 POSIX Timer,一个进程可以创建任意多个 Timer。 2、setitmer 计时器时间到达时,可以有多种通知方式,比如信号,或者启动线程。 3、POSIX Timer 则可以使用实时信号。 4、POSIX Timer 是针对有实时要…

leetcode98. 验证二叉搜索树关于递归实现中遇到的global和nonlocal(各种报错分析)

leetcode98. 验证二叉搜索树 题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二…

前端基础(十三)_定位position、定位层级z-index

一、定位position Css的定位机制:普通文档流、浮动、定位 这里主要介绍CSS的定位属性:position: 1、定位原理:允许元素相对于正常位置、或者相对于父元素、浏览器窗口本上的位置 2、元素位置的调整: left|right属性、…

Spring Boot项目使用RabbitMQ队列

Spring Boot项目使用RabbitMQ队列 一、Rabbitmq的安装 RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,**即需要先安装部署Erlang环境再安装RabbitMQ环境。 erlang的安装在windows中直接点击安装即可。 安装完erlang后设置erlang的环境变量ERLANG…

CSM32RV20 是 32位低功耗MCU芯片 RISC-V RV32IMAC 内核

CSM32RV20 是 32位低功耗MCU芯片 RISC-V RV32IMAC 内核 CSM32RV20 是基于RISC-V RV32IMAC 内核(2.6 CoreMark/MHz)的32位低功耗MCU芯片,最高主频32MHz,最大支持 40KB 嵌入式FlASH、4KB SRAM和512B NVM,集成ADC和UART、…

如何使用FastReport .NET 从 JetBrains Rider 中创建PDF报告?

Fastreport是目前世界上主流的图表控件,具有超高性价比,以更具成本优势的价格,便能提供功能齐全的报表解决方案,连续三年蝉联全球文档创建组件和库的“ Top 50 Publishers”奖。 FastReport.NET官方版下载(qun&#x…

了解什么是架构基本概念和架构本质

什么是架构和架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础&…

Note that you can also install from a tarball 处理

近期使用 npm publish 发布依赖包时,始终遇到 npm 404 报错,错误信息是 “Note that you can also install from a tarball”,尝试更换网络,更换代理服务器等操作,都无效,npm 报错如下 问题原因&#xff1a…

python通过字典来替代if..else

在应对多策略的场景下,大量使用if...else...不仅提高了后期的维护成本,还降低了运行效率。通过字典做映射就可以更好的优化代码。 比如这样一个模拟场景,根据用户的VIP等级,发放奖励。在大量使用if...else...时就会变成如下状态&…

nodejs篇 内置模块http 常用api

文章目录前提创建一个最基本的http服务器req有哪些值得关注的信息res常用的apihttp.request(options[, callback])server事件监听checkContinuecheckExpectationcloseconnect前提 如果你觉得nodejs官方文档给的api太多,不知道哪些重要,请看下去&#xf…

TensorRT全方位概览笔记

TensorRT (基于8.2.3)1.简介1.export1.1 使用tensorrt API 搭建1.2 使用parser1.3 使用框架内 tensorrt 接口1.4 注意事项2.开发辅助工具2.1 trtexec2.2 Netron2.3 onnx-graphsurgeon2.4 polygraphy2.5 Nsight Systems3. plugin3.1 plugin3.2 使用3.3 类…

就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵

💡 作者:韩信子ShowMeAI 📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40 📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41 📘 本文地址:https://www.sho…