如何优雅编写测试用例
当你学会了如何设计测试用例之后,接下来便是开始用例的编写。
在设计阶段,更准确的说应该是识别测试点的过程,而编写阶段则是将测试点细化成一条条测试用例的过程,有了比较全的用例场景后,如何让别人更舒服、更方便、更清晰地去使用你的测试用例,如何更优雅地展示你的测试用例,如何让领导对你的测试用例满意呢?(“降本增效”,这里的“效”有时也指的是“效果”)
测试用例的编写是每一个测试工程师安身立命的家伙,也是测试的基础,更是软件测试的核心内容,正所谓“基础不牢,地动山摇”,所以一定要掌握好,有些转行的小伙伴一上来就开始自动化、性能的学习,却忽略了最基础的东西,这是不对的。
正好最近有小伙伴问到关于用例模板的问题,借此机会来聊一聊“如何优雅编写测试用例”这个话题。
PS:需要用例模板的点击文末小卡片领取
在编写测试用例之前,首先应该根据所在公司、项目组的特点,提前制定好对应的测试用例模板以及用例维护方式,比如:Excel、XMind、TestLink、禅道等。
测试用例的组成通常包含以下内容(具体字段根据业务需要取舍):
-
用例编号
作为测试用例的唯一标识。编号取值规则可以根据
项目名称各中文首字母大写
+六位数字
构成,例如:“蔡坨坨电商项目”在登录功能子模块的第一条用例编号可取值为CTTDS_000001
。 -
用例标题
又称之为测试点,用一句话来描述测试用例的关注点,每一条用例对应一个测试目的。
一个好的测试用例应该关注标题的规范性,一般来说如果设计用例标题不规范,别人在使用你的测试用例时,就无法做到清晰明了,就会浪费很多时间在沟通上。
并且需要控制用例的粒度,从测试执行者的角度来说,过细的测试用例会让执行者感到疲惫繁琐,过粗的测试用例又容易导致检查点遗漏。所以测试用例标题一般控制在30个字以内。
-
功能模块
根据项目模块层级关系填写,例如:组织权限。
-
测试目的
简要的测试目的,例如:账号密码功能校验。
-
前置条件
用例在执行之前需要满足的一些条件,否则用例无法执行,如测试环境,需要提前执行的操作等,例如:进入到某一页面。
测试用例其实就是在某种场景下,执行一定的动作,达到什么样的结果。而前置条件决定了“在某种场景下”,所以是不可或缺的。
-
优先级
根据需求的优先级来定义,高优先级要覆盖核心业务,重要特性以及使用频率比较高的部分。
级别的枚举值也有多种形式,比如:P0\P1\P2\P3,1\2\3\4,高\较高\中\低。
冒烟测试(高)、基础用例(较高)、特殊场景用例(中)、错误场景用例(低)。
-
操作步骤
测试用例的步骤描述,执行人员可以根据测试步骤完成测试的执行,一般只需要写和测试目的密切相关的步骤,一些基础的步骤可以放在前置条件中,例如:1.输入正确的账号2.输入错误的密码3.点击登录按钮4.查看结果。
用例步骤一般不多于7步,不少于2步。
操作步骤也是不可或缺的一部分,因为它关系到如何执行。
-
测试数据
在执行测试时,需要输入一些外部数据来完成测试。这些数据根据测试用例的统计情况来确定,有参数、文件或数据库记录等,例如:账号:admin,密码:123456。
-
预期结果
测试用例中最重要的部分,主要用来判断被测对象是否正常,例如:提示用户名或密码错误。
预期结果关系到用例需要达到什么样的结果,所以也是不可或缺。
-
执行结果
每条用例的实际执行结果,只有三个枚举值:PASS(通过)、FAIL(不通过)、N/A(未执行)。
预期结果一般不超过5个,不少于1个。
-
对应的 Bug Id
每条测试用例执行不通过后再记录对应一条Bug,例如:BUG-1219。
-
编写人
用例对应的编写人员,填写编写人员姓名,例如:测试蔡坨坨。
-
执行人
用例对应的执行人员,填写执行人员姓名,例如:测试蔡坨坨。
-
备注
每条测试用例的备注,备注内容可以按实际情况填写,一般有备注的测试用例都比较重要,需要格外关注。
测试用例的编写并没有好坏和对错之分,每个人编写用例的思路也是各不相同,适合当前团队就是最好的,不要盲目把所有的字段都加上,应根据实际场景进行取舍。
除此之外,还有一些注意事项值得关注。
例如:
标题要清晰,推荐采用 场景
+预期结果
进行描述,比如:输入正确的用户名和密码,成功登录系统;
控制用例的粒度,比如:标题字数不超过30个字、步骤数控制在2-7步、预期结果数在1-5个;
用例之间要解耦,日常工作中经常遇到几个用例有先后顺序的情况,比如:在测试编辑之前肯定要先新建一条数据,最好把新建放在编辑用例的前置条件中,每条用例都能实现闭环;
预期要明确,不要出现一些模糊字眼,对于不明确的点应该跟产品沟通;
拒绝冗余,用例可以多,但不要冗余,尽可能以最小场景覆盖最全的范围,同一个等价类只需测一条数据,当然,因为测试不可穷尽性,测试场景肯定不会最全面,往往会受限于时间和资源等成本,这时需要在有限的资源下,寻求质量和效率之间的平衡点,优先级这个字段就起到了作用,再引申就是测试策略的问题了,整体上采取基于风险驱动的模式,有侧重点地去验证一些场景,优先核心功能,或者增加资源和延长周期,同时寻求自动化相关技术去提升整体效率。
相关文章:
![](https://img-blog.csdnimg.cn/b6a0ec8ee9b949e3b94be9b8cfe7bd60.png)
如何优雅编写测试用例
当你学会了如何设计测试用例之后,接下来便是开始用例的编写。 在设计阶段,更准确的说应该是识别测试点的过程,而编写阶段则是将测试点细化成一条条测试用例的过程,有了比较全的用例场景后,如何让别人更舒服、更方便、…...
![](https://img-blog.csdnimg.cn/a328d24baf92460e87dd84a46bd9ccfb.png#pic_center)
[入门必看]数据结构2.3:线性表的链式表示
[入门必看]数据结构2.3:线性表的链式表示第二章 线性表2.3 线性表的链式表示知识总览2.3.1 单链表的定义2.3.2_1 单链表的插入删除2.3.2_2 单链表的查找2.3.2_3 单链表的建立2.3.3 双链表2.3.4 循环链表2.3.5 静态链表2.3.6 顺序表和链表的比较2.3.1 单链表的定义单…...
![](https://img-blog.csdnimg.cn/09f3d8a5ca0f4fbb9a5a2445b46dbd65.png)
Golang流媒体实战之二:回源
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 今天的实战是流传输过程中的常见功能:回源如下图,lal(源站)和lal(拉流节点)代表两台电脑,上面都部署了lalVLC在…...
![](https://img-blog.csdnimg.cn/a645bf48fed044e48059174d3fe3f219.png)
webgl——给场景添加光
文章目录前言光照理论介绍光照效果光源类型反射光颜色向场景中添加光向场景中添加环境光和点光源逐片元光照——更加逼真总结前言 在之前的学习中已经将三维物体添加到了场景中,但是并没有在场景中使用光,照可以使模型更具有立体感,本文主要…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue实战【Vue项目开发时常见的几个错误】
目录🌟前言🌟安装超时(install timeout)🌟can’t not find ‘xxModule’ - 找不到某些依赖或者模块🌟data functions should return an object🌟给组件内的原生控件添加事件,不生效了🌟我在函数内用了this.…...
![](https://img-blog.csdnimg.cn/f43a3f73a24b457d91f694f852d8781b.gif)
【多线程】常见的锁策略
✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:老当益壮,宁移白首之心;穷且益坚,不坠青云之志。 目 录🏳️一. 乐观锁 vs 悲观锁🏴二. 普通的互斥…...
![](https://img-blog.csdnimg.cn/fc0d8b34b2f54271b2396ab1a521fae5.png)
如何让虚拟机里的Ubuntu通过连接手机USB数据线上网
目录 一 前言 二 Windows联网方法 三 Ubuntu联网方法 一 前言 最近遇到了这样一个问题,有一台台式机,地插网口无法访问外网,周边也没有无线路由器,要访问外网,该如何做?进一步的,这台台式机…...
![](https://www.ngui.cc/images/no-images.jpg)
windows渗透(sam、system文件导出)
通过本地PC中渗透测试平台Kali对服务器场景Windows进行系统服务及版本扫描渗透测试,并将该操作显示结果中Telnet服务对应的端口号作为FLAG提交;通过本地PC中渗透测试平台Kali对服务器场景Windows进行系统服...
![](https://img-blog.csdnimg.cn/6aec1a0409e54545ae909048e8a72469.png)
b01lers(php.galf)
目录 前文 正文 前文 <?phpclass A{public $codeNULL;public $argsNULL;public function __construct($code,$argsNULL){$this->code$code;$this->args$args;print_r("2333") ;} public function __invoke($code,$args){echo $code;print_r("执行inv…...
![](https://img-blog.csdnimg.cn/img_convert/f64f28c35a5e1408cf25b89e84f767a7.png)
记一次若依后台管理系统渗透
前言 最近客户开始hw前的风险排查,让我们帮他做个渗透测试,只给一个单位名称。通过前期的信息收集,发现了这个站点: 没有验证码,再加上这个图标,吸引了我注意: 从弱口令开始 若依默认口令为ad…...
![](https://img-blog.csdnimg.cn/cde7ab2b573147559ea7a15c6c00a42b.png)
Mybatis(四):自定义映射resultMap
自定义映射resultMap前言一、处理字段和属性的映射关系问题:方案一:使用别名方案二:在mybatis-config.xml中设置mapUnderscoreToCamelCase方案三:在映射文件中设置redultMap二、多对一映射处理问题:方案一:…...
![](https://img-blog.csdnimg.cn/2f819457dc7446ee9d4e61afbfa86ca2.png#pic_center)
机器学习---降维算法
知其然知其所以然【写在前面】主成分分析(PCA)原理部分代码部分可视化部分线性判别分析(LDA)原理部分代码部分可视化部分独立成分分析(ICA)原理部分代码部分可视化部分t-SNE降维算法原理部分代码部分可视化…...
![](https://img-blog.csdnimg.cn/a49a4ca62ded4a8ebcc7001c8c654009.png#pic_center)
【Vue2从入门到精通】详解Vue.js的15种常用指令及其使用场景
文章目录前言1. v-text / {{ expression }}2.v-html3.v-bind4.v-on5. v-model6.v-for7.v-if / v-else-if / v-else9.v-show10.v-cloak11.v-pre12.组件注册指令13.动态组件指令14.自定义指令15.过滤器指令前言 Vue.js 是一款流行的前端框架,它通过指令(Di…...
![](https://img-blog.csdnimg.cn/090ced760496471d87c45eb957a1b51e.png)
数据库知识总结
数据库知识点总结个人向。 目录第一章 绪论第二章 关系数据库第三章 关系数据库标准语言SQL第四章 数据库安全性第五章 数据库完整性第六章 关系数据理论第七章 数据库设计第十章 数据库恢复技术第十一章 并发控制第一章 绪论 数据(data): 描述事物的符号记录。 数据库(DataB…...
![](https://www.ngui.cc/images/no-images.jpg)
处理数组循环中删除元素导致索引错位情况
就是很多时候我们对一个数组进行操作的时候,在for遍历的过程中删掉了一个元素,那么在删掉那个元素之后的所有元素的索引值都会减少一位,数组长度缩短一位,删完之后,正在进行的循环会继续循环下去,但是循环的…...
![](https://csdnimg.cn/release/blog_editor_html/release2.2.4/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N2N8)
快速排序,分治法实际应用(含码源与解析)
🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨,经典算法的解析✨都在这儿,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -…...
![](https://img-blog.csdnimg.cn/910275f075b9410aa0f5e5312e7a21db.png)
linux入门---操作体统的概念
什么是操作系统 操作系统是一个对软硬件资源进行管理的软件。计算机由一堆硬件组成,这些硬件遵循着冯诺依曼体系结构 在这个硬件的基础上还有一个软件叫做操作系统 操作系统的任务是对硬件进行管理,既然是管理的话操作系统得访问到底层的硬件…...
![](https://img-blog.csdnimg.cn/img_convert/229c4fd9e36da01b3d534baaaa99ed8e.png)
《Qt 6 C++开发指南》提供4个版本的示例程序
《Qt 6 C开发指南》包含丰富的示例项目,为了方便读者使用《Qt 6 C开发指南》学习Qt编程,本书提供了4个版本的示例程序。读者可在人民邮电出版社异步社区本书的配套资源(如图1)里下载这4个版本的示例程序。图1 异步社区本书配套资源…...
![](https://img-blog.csdnimg.cn/img_convert/45a803c6920995046880a4c8ddba6fce.png)
chartgpt 告诉我的,loss 函数的各种知识
一、libtorch中常见的损失函数及其使用场景的总结1. CrossEntropyLoss:CrossEntropyLoss(交叉熵损失)主要用于分类任务。它适用于多分类问题,其中每个样本只属于一个类别(互斥)。该损失函数将预测概率与真实标签的one-…...
![](https://img-blog.csdnimg.cn/7fad1f39e837464c9a32eafd251ae576.png)
旅行推销员问题的遗传算法中的完整子路线顺序交叉
摘要 旅行商问题(TSP)是许多著名的组合问题之一。TSP可以解释为很难找到从第一个城市出发,经过所有城市,然后返回起点的最短距离。在标准问题中,TSP通常用于确定新算法的效率。遗传算法是求解TSP问题的一种成功算法。…...
![](https://www.ngui.cc/images/no-images.jpg)
Python实现词频统计
词频统计是自然语言处理的基本任务,针对一段句子、一篇文章或一组文章,统计文章中每个单词出现的次数,在此基础上发现文章的主题词、热词。 1. 单句的词频统计 思路:首先定义一个空字典my_dict,然后遍历文章…...
![](https://img-blog.csdnimg.cn/75d72e3835f0433698634ae22d438f52.png)
微信小程序面试题(day08)
文章目录微信小程序自定义组件的使用?微信小程序事件通道的使用?微信小程序如何使用vant组件库?微信小程序自定义组件父传子子传父?微信小程序自定义组件生命周期有哪些?微信小程序授权登录流程?web-view。…...
![](https://img-blog.csdnimg.cn/img_convert/933eda6c28bca7a7ef5f52ac78da5f2e.png)
最强的Python可视化神器,你有用过么?
数据分析离不开数据可视化,我们最常用的就是Pandas,Matplotlib,Pyecharts当然还有Tableau,看到一篇文章介绍Plotly制图后我也跃跃欲试,查看了相关资料开始尝试用它制图。 1、Plotly Plotly是一款用来做数据分析和可视…...
![](https://img-blog.csdnimg.cn/img_convert/6bdc5bd1f67c216741e44ed1d2ac425d.png)
Ubuntu使用vnc远程桌面【远程内网穿透】
文章目录1.前言2.两台互联电脑的设置2.1 Windows安装VNC2.2 Ubuntu安装VNC2.3.Ubuntu安装cpolar3.Cpolar设置3.1 Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1.前言 记得笔者刚刚开始接触电脑时,还是win95/98的时代,那时的电脑桌面刚迈入图形…...
![](https://img-blog.csdnimg.cn/27320bac00b447789b6f5e7fbb9d2ef8.png)
【C++】map、set、multimap、multiset的介绍和使用
我讨厌世俗,也耐得住孤独。 文章目录一、键值对二、树形结构的关联式容器1.set1.1 set的介绍1.2 set的使用1.3 multiset的使用2.map2.1 map的介绍2.2 map的使用2.3 multimap的使用三、两道OJ题1.前K个高频单词(less<T>小于号是小的在左面升序&…...
![](https://www.ngui.cc/images/no-images.jpg)
css学习14(多媒体查询)
目录 多媒体查询 语法 示例代码 通用媒体查询 媒体功能参考列表 多媒体查询 CSS的媒体查询是一种CSS的技术,它可以根据不同的设备类型、屏幕尺寸、方向、分辨率等条件来应用不同的CSS样式,从而为不同的设备和屏幕提供最佳的浏览体验。这样ÿ…...
![](https://img-blog.csdnimg.cn/86da64d5f3224fd1af785a96a43a6155.png)
【C++进阶】C++11(中)左值引用和右值引用
文章目录左值引用左值引用的概念左值引用的使用右值引用右值引用的概念右值引用的使用左右值相互引用左值引用对右值进行引用右值引用对左值进行引用右值引用使用场景和意义左值引用的优势左值引用的短板右值引用的优势完美转发模板万能引用完美转发实际运用场景左值引用 左值…...
![](https://img-blog.csdnimg.cn/f9f528987115415cb7986da29bde952c.gif)
Python中的生成器【generator】总结,看看你掌握了没?
人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 1.实现generator的两种方式 python中的generator保存的是算法, 真正需要计算出值的时候才会去往下计算出值。 它是一种惰性计算(lazy evaluation)。 要创建一个…...
![](https://img-blog.csdnimg.cn/e57b557983d64f00bb926330a45c20b4.png)
MD5加密竟然不安全,应届生表示无法理解?
前言 近日公司的一个应届生问我,他做的一个毕业设计密码是MD5加密存储的,为什么密码我帮他调试的时候,我能猜出来明文是什么? 第六感,是后端研发的第六感! 正文 示例,有个系统,前…...
![](https://img-blog.csdnimg.cn/07c2ecf3bb7444699299f16e8a4759de.png)
【Linux】虚拟地址空间
进程地址空间一、引入二、虚拟地址与物理内存的联系三、为什么要有虚拟地址空间一、引入 对于C/C程序,我们眼中的内存是这样的: 我们利用这种对于与内存的理解看一下下面这段代码: 运行结果: 观察父子进程中 val 变量的值&…...
![](/images/no-images.jpg)
可以做头像的网站/西藏自治区seo 标题 关键词优化
alert([0,0,0].toString() [0,0,0].toString()); //true alert([0,0,0].toString()[0,0,0].toString());//true用JavaScript比较两个数组是否相等...
![](/images/no-images.jpg)
企业网站手机版源码下载/如何外贸推广
上章我们知道JVM可以通过参数的方式指定main方法所在的主类,但是即使最简单的"HelloWorld"程序,也是无法自行运行的,HelloWorld程序如下: public class HelloWorld{public static void main(String[] args){System.out.…...
![](/images/no-images.jpg)
wordpress ping/搜索引擎推广的费用
#include<stdio.h> int main() {int i, j;for (j 1; j < 9; j){for (i 1; i < j; i)printf("%d*%d%2d ", i, j, i * j);printf("\n");}return 0; }...
![](/images/no-images.jpg)
怎么样建设一个网站/头条搜索
1. 题目 时间限制:C/C 1秒,其他语言2秒空间限制:C/C 32M,其他语言64M我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是&…...
![](/images/no-images.jpg)
如何做装修网站/八百客crm登录入口
将python代码转化为 .c文件,可以像python的任意模块一样,import 导入进行使用,详见大佬博客: 转载:https://www.cnblogs.com/jianmu/p/7497274.html?utm_sourcedebugrun&utm_mediumreferral...
![](https://img-blog.csdnimg.cn/img_convert/1544ee5918d83af3c8e371a818982c63.png)
网络工作室经营范围怎么写/宁波seo推广定制
欢迎和号主【前端点线面】进群盘算法,此外本号干货满满:14个门类(100篇原创)内容(又干又硬)、《前端百题斩》pdf(助力薪资double)、20篇思维导图(知识系统化、记忆简单化…...