如何编写测试用例

news2024/11/24 16:02:21

用例的五个构成元素: 

下面从这五个元素的角度,去剖析如何编写测试用例

用例标题

用例标题就是测试点名称。用例标题是用来说明这个用例的测试目的的,好的用例标题是别人看完你这个用例标题后就知道你这个用例是测什么的。但并不是标题越详细越好。既然是标题,就要言简意赅,能多简洁就多简洁,但简洁的同时又要能体现你的测试目的。用例的标题最好不要超过30个字,太长会让人看起来很累也很不专业。一般可以遵循这样的公式:主体(可省略) + 动词 + 名词 + 结果(可省略)(即谁做了什么有什么影响),但很多时候是动词 + 名词的形式。要注意:我们写的每一个案例对应的就是要测试的一个点。其实每个点都是用户的一种操作行为。

前置条件

用例的前置条件就是在测这个用例之前你要先准备的环境和数据。同时,我们需要将前置条件和测试步骤区分开来,但怎么区分呢,是不是还是比较模糊?我们从用例标题入手,我们的用例标题是动作+名词  嘛,那我们的测试重点是动作,那产生这个动作之前的所需的所有环境和数据都算是前置条件,产生这个

动作和这个动作带来的后果都算是测试步骤。这样是不是就比较清晰了。 前置条件只是说明测试这个用例需要准备的环境和数据,故前置条件不用像步骤那样写得那么详细,但也不能太过于简洁,不能有歧义。

测试步骤

测试步骤是一个用例的精髓,用例标题体现测试的目的,用例步骤就是如何来测从而达到测试的目的。即然是步骤那就是一步一步的操作过程,但这个操作过程并不是写得越详细越好。我们的步骤是来体现我们的测试目的的,即要怎样做什么操作,这个操作后要如何检查产生的结果。这个操作可能是一步,也可能是几步,也可能是来回循环。不管是什么操作都是告诉别人如何去做,如何去检查。但步骤不能写得过于详细,如【登录控制台,打开xx页面,点击xx按钮】这种就没必要写上去,因为这种既是浪费时间也会给用例的维护带来成本。只需精简明确地告诉别人在哪做什么操作即可,同时,写案例时需要遵循一些准则规范:

用例规范

  1. 每个文件夹下不能超过10个测试Excel用例
  2. 每个用例的步骤不能超过8步(算整个案例测试步骤,比如测试步骤和后置条件中执行1-3步)
  3. 每个测试用例一个测试点,用例标题不宜过长,需要精简明了
  4. 详细测试需求点、测试步骤和预期结果必须体现测试目的和测试重点
  5. 测试用例中需要用到附件的,需附上文件和文件存放路径;(附件大于1M可指定路径)
  6. 预期结果要量化和直接化,减少用例执行的沟通成本
  7. 测试用例设计时需考虑测试执行效率,功能用例执行10分钟原则:用例里用到的数据或样本、脚本需要在备注里附上
  8. “测试步骤”和“预期结果”必须可实现和可执行
  9. 测试用例需验证客户业务,不能只检查配置和页面,除非为纯页面测试
  10. 体现强关联,去掉弱关联;强关联:案例中缺少此步骤就无法达到案例目的;弱关联:案例中缺少此步骤可以达到案例目的;对于大家都知道或应该清楚的点不用体现在用例中
  11. 测试用例需要有正反对比验证:开和关的对比、匹配和不匹配对比、输出结果的对比等,这种用例可以合并,减少用例冗余
  12. 用例里不能有具体的版本号
  13. 模块备注尽可能详细,便于测试和观察测试点
  14. 测试方法可实现,测试数据贴近于用户环境
  15. 标题精简,需要体现测试目的
  16. 测试结果的检查有没有站在客户的角度进行测试和验证
  17. 页面的测试需要覆盖多款浏览器的测试
  18. 不用把所有检查点放在一个用例上,这样会出现执行漏测或前面失败了后面就不执行了,问题发现滞后
  19. 用例需要专业性,不能出现口语化的词语;
  20. 期望结果需要明确性,不能出现模糊的词语;如可能、如果、符合要求等
  21. 测试用例中不能出现页面配置路径,如:系统配置-网络配置-网络接口
  22. 测试用例中不能出现操作过程,比如打开XX目录下文件,点击什么;直接写需做的操作即可
  23. 测试用例需用到的例行检查点、公共检查点、后台、调试、配置文件等查看方法统一写到模块备注

可维护性规范

期望结果

期望结果对应的是测试步骤,每一个测试步骤都对应一个期望结果,即做了这个操作后,希望它产生的后果。即大家在用例里看到的测试步骤里的1,2,3对应期望结果里的1,2,3。理论上每一个测试步骤都需要有一个对应的期望结果,但有些测试步骤我们并不关注这一步骤的操作后果,那这样的期望结果可写可不 写。

这里需要注意期望两字,期望的意思是说要从用户的角度出发,我用户做了这个操作后,我希望它能给我反馈的结果。这个结果不是开发程序代码返回的结果,开发程序代码返回的结果是实际结果,执行用例时只有实际结果与用例期望结果一致时,案例才能标pass。所以在写案例或执行案例时,得到实际结果与期望结果不一致时不要轻易被开发忽悠了,一切以用户主。

后置条件

与前置条件对应,即执行完这个用例后需要还原环境,否则会给下个用例带来影响。一般写功能用例时, 后置条件基本不用太关注,因为测试环境本来就需要多样化才能模拟用户的环境,若每次执行用例都保持一个纯净环境则带来的测试工作量也大,而且也不能很好地体现测试环境的多样性。后置条件一般是自动需要做的,因为自动化需要保持环境的独立性,彼此不依赖,执行完一个案例后需要将这个案例创建的数据、策略等全部清空,防止影响下一个案例。

如何划分用例等级

现用例等级是怎么划分的?

BVT也即Build Verification Test,是在将release发布给test team做进一步测试之前,通过在每天新的build之上跑一系列的case来验证build是否可以测试。它的时间点发生在build完成之后,正式测试完成之前。 BVT也叫冒烟测试或者build验证测试。

一般在一个模块里的案例按照等级进行划分时,遵循下面的比例:            BVT(10%):模块最基本的功能验证(含常用部署、基本关联),推荐1级用例的20%左右Leve1(30%):基本需求点,基本逻辑,基本可靠性,基本关联,基本用户场景Leve2(40%):常见功能/逻辑细化点/专项细化点,常见关联/容错/边界值/用户场景Leve3(20%):错误提示,常见部署方式/用户场景/容错/边界值等

我们在划分用例等级时,为什么要这样划分?

BVT的案例应该是最基本最简单的案例,如一个功能模块的增删改就是最基本的;

level1是基本的功能需求基本操作相关的,如上面说的增删改,增可能有多种增加方式,BVT只是最基本的操作,level1是对BVT的一种补充;

level2是一些内部逻辑细化点或一些常见的异常操作。Level2的异常是对用户来是比较常见的,是很大概率上会遇到的;

level3是可能会出现但出现概率很低的一些操作或异常场景。level3的异常是很极端的异常,是很小概率会发生的,如不断重启之类的。

这样划分的意义何在?

不同等级的案例需要消耗的时间和带来的影响是不一样的。当一个模块转测后,我们希望的是能快速验收这个模块的质量,那如何验收?不就是它的基本功能是不是完成了,它的基本操作是不是都能顺畅执行,在这些基本功能基本操作都没问题的情况下,再来检视内部逻辑细节处理是不是到 位,最后再检视各种异常场景下的处理是不是已经合理。即从简单到困难,先保障基本功能再检验其他的发散点。


 🎁更多干货


完整版文档下载方式:

这些资料,对于从事【软件测试】等相关工作的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。


如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!

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

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

相关文章

(自动机)+(卡常)+(前缀和)

edu151 C. Strong Password 样例&#xff1a; s123412341234 m2 s11234 s24321nt[i][j]:有了j以后找下一个数的位置的坐标。void solve() {cin>>s;ll lens.size();vector<array<ll,10>>nt(len1);nt[len].fill(len1);for(int ilen-1;i>0;i--){nt[i]nt[i1]…

js每隔两条或者几条数据,则就插入(新增)一条数据

js每隔两条(自定义条数)数据&#xff0c;则添加一个空的 item&#xff08;这个也可以新增你指定的数据&#xff09;,但是最后一条则不需要新增条数 let temp [] // 你需要处理的原数据 // 新的数组 const newData []for (let i 0; i < temp.length; i) {// 将原始数据添…

Vue3 使用存储库Pinia(state)

一、创建state import { defineStore } from "pinia"; export const useStore defineStore(main, {state() {return {name: 张三,age:26 }} })二、引用store.js import {useStore} from "../store/store" // 引入store const store useStore()三、html…

Flutter底部导航BottomNavigationBar

Flutter底部导航BottomNavigationBar 主要代码&#xff1a; bottomNavigationBar: BottomNavigationBar(//选中菜单颜色fixedColor: Colors.red,//图标大小&#xff0c;默认24.0iconSize: 30,//第几个菜单选中currentIndex: currentIndex,//当item数量大于3个时需要设置type属…

线性回归模型(Linear regression)

- 回归问题的标记如下 【假设可以写成h&#xff0c;也可以写成函数f】 - 工作方式 这就是一个监督学习算法的工作方式&#xff0c;我们可以看到这里有我们的训练集&#xff08;房屋平米数x&#xff0c;房屋价格y&#xff09; &#xff0c;我们把它喂给我们的学习算法&#xf…

css3提供的网页布局

css3提供的网页布局 弹性盒子模型&#xff08;flex box&#xff09;&#xff1a; 设置成弹性盒子 默认横着排放&#xff08;div也是&#xff09; 当子盒子给的宽度过大&#xff0c;总的子盒子宽度超过父级盒子&#xff0c;会自动适配&#xff0c;计算整个盒子父级的大小&#…

MMTracking目标跟踪环境搭建(一)

1、环境搭建 创建conda虚拟环境并激活。 conda create -n mmtrack python3.8 -y conda activate mmtrack 按照官方说明安装 PyTorch 和 torchvision 可以通过指定版本号切换到其他版本。 #如果网不好&#xff0c;可以这样安装 pip3 install torch1.8.2cu102 torchvision0.9…

Vue3 使用存储库Pinia(创建)

前言 使用vue编写项目时&#xff0c;经常用到组件传值&#xff0c;比如父传子、子传父、跨组件传值等&#xff0c;如果项目体量不大的情况这种方式完全够用&#xff0c;但如果项目大&#xff0c;内容丰富&#xff0c;那我们就需要用到状态管理工具——Pinia 官方文档 一、什么…

python优化库scipy.optimize测试(notebook版本)

代码链接notebook 数据准备 使用一个混合高斯分布作为测试&#xff08;两个均值不同的高斯分布相加&#xff09;&#xff0c;存在两个极值点(-1,-1)和(1,1) # 二维正态分布生成函数 def gaussian2d(x, y, x_mean, y_mean, x_std, y_std):return np.exp(-((x - x_mean) ** 2 …

Linux上安装jdk8环境

Linux上安装jdk8环境 一、Jdk8环境准备二、开始安装1. 创建压缩包位置2. 上传压缩包3. 解压压缩包4. 配置环境变量5. 查看安装版本 一、Jdk8环境准备 java8安装包下载可参考这篇文章&#xff1a;https://blog.csdn.net/qq_39939541/article/details/128065776 二、开始安装 …

1、Redis入门与应用

Redis入门与应用 Redis的技术全景 Redis一个开源的基于键值对&#xff08;Key-Value&#xff09;NoSQL数据库。使用ANSI C语言编写、支持网络、基于内存但支持持久化。性能优秀&#xff0c;并提供多种语言的API。 我们要首先理解一点&#xff0c;我们把Redis称为KV数据库&am…

Microsoft Update Assistant导致 MAC 电脑内存占用过高解决方案

目录 问题: 排查原因: 解决方案: 问题: 一直很苦恼,每次开机隔会发下电脑内存就 100%了,这次找了下原因,也记录下. 排查原因: 通过 mac 自带的活动监视器,发现居然是Microsoft Update Assistant它导致的 解决方案: 那这样就简单了,这个应该是 word,execl 的一个自动更新程序…

docker 发布镜像到阿里云容器镜像

1.登录阿里云 2.创建个人版实例&#xff0c;这里需要设置密码&#xff0c;一定要保存好 3.创建一个镜像仓库&#xff0c;个人实例最多创建3个 4.创建命名空间&#xff0c;个人实例最多300个 5.发布镜像到阿里云容器镜像 1、linux登录阿里云docker容器镜像 $ docker login --us…

文献推荐:将生态系统服务保护纳入生态脆弱地区城市规划政策优化——基于情景的案例研究

本文来源&#xff1a;i地理 本研究使用未来城市区域环境模拟 (FUTURES) 模型&#xff0c;以中国呼和浩特为研究区域&#xff0c;模拟量化2015-2023年自然情景、生态优先情景以及经济优先情景下的城市扩张。然后&#xff0c;计算了过去和未来时期关键生态系统服务的价值以及它们…

Hyperledger Fabric测试网络的准备和基本使用

文章目录 相关安装启动测试网络创建channel打包链码安装链码包通过链码定义链码定义提交给通道调用链码关闭网络遇到的问题1.docker保持启动状态2.忘起测试网络了3.Java版本过高&#xff0c;推荐1.8 相关安装 npm、node、git、docker、docker-compose。docker保证一直运行 serv…

考试系统的优势与劣势对比分析

考试是对学生学习成果的一种评估方式&#xff0c;而考试系统作为一种管理工具&#xff0c;可以有效地帮助学校和教师进行考试的组织和管理。然而&#xff0c;考试系统也存在一些优势和劣势。 一、优势 1. 方便快捷 考试系统的一个显著优势是它的方便快捷。学生可以通过电子设…

网络排查工具:MTR 命令使用详解

MTR 是一款强大的网络诊断工具&#xff0c; 全称 my traceroute&#xff0c;是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具。默认发送ICMP数据包进行链路探测。 MTR的安装&#xff1a;yum -y install mtr 查看本机到 www.baidu.com 的路由以及连接情况直接运行如…

经典地理加权回归,半参数地理加权回归、多尺度地理加权回归、地理加权主成份分析、地理加权判别分析......

在自然和社会科学领域有大量与地理或空间有关的数据&#xff0c;这一类数据一般具有严重的空间异质性&#xff0c;而通常的统计学方法并不能处理空间异质性&#xff0c;因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法&#xff1a;经典地理加权回归&#xff0c;…

机器学习实战 | 深度学习初级项目学习和总结

目录 简介神经网络类型和用法总结1. 卷积神经网络CNN特点结构用处 2. 循环神经网络RNN特点结构用处 3. 长短期记忆网络LSTM特点结构用处 基于Keras的神经网络用法总结1. 创建2. 编译3. 训练4. 保存5. 预测 简介 准备写个系列博客介绍机器学习实战中的部分公开项目。首先从初级…

二叉树进阶(搜索二叉树)

目录 引言 1.二叉搜索树的模拟实现 1.1 链式二叉树的定义 1.2 二叉搜索树的模拟实现 1.2.1 二叉搜索树的结点类 1.2.2 二叉搜索树类的构造与中序遍历实现 1.2.3 增 1.非递归实现 2.非递归实现 1.2.4 查 1.非递归实现 2.递归实现 1.2.5 删 1.非递归实现 (1)情…