测试工程师都是怎么写测试用例的?​

news2024/9/29 15:21:49

很多人不知道写测试用例有什么用,而仅仅是像工具人一样,在每次提测之前,把测试用例照着需求文档抄一遍,仿佛像是走个过场。

开发提测之后,就照着测试用例点点点,可能一天就走完用例了,开发代码写得真好,测试用例执行完毕都没有测出bug,然后美其名曰:测试完了,达到上线标准。

测完之后,测试用例毫无价值,像随手仍垃圾一样,随地保存,终于无迹可寻。

在他们眼里,从事测试工作,和去东莞进厂打工没什么区别。

反正测试用例写久了,都能成为人人爱戴的熟练工,想着到了35岁,光荣下岗,回老家享受荣华富贵。

最后上线之后,bug一大堆,反而还怪写测试用例浪费时间,且没有用。

目录

  1. 明确为什么要写测试用例?
  2. 传统的测试用例编写规范?
  3. 臻叔独创的测试用例编写大法?
  4. 没时间写测试用例怎么办?
  5. 全量的测试用例是否有必要?
  6. 测试用例应当如何保存?

一、为什么要写测试用例?

或者说,写测试用例到底有什么用?

敲黑板!测试用例主要有以下六大作用:

  1. 方便理清测试思路,避免漏测
  2. 有助于测试工作量的评估
  3. 便于提前准备测试数据
  4. 相当于工作日志,把控测试工作进度
  5. 方便进行上线前的回归测试
  6. 便于测试工作的组织,提高测试效率,降低测试交接成本

所以,写测试用例是很有必要的!

那些没有写测试用例、或者说写测试用例没有用的,都是没有掌握测试用例的使用姿势。

二、传统的测试用例编写规范

一般写测试用例,大家习惯于用 「Excel(表格)」 或者 「Xmind(思维脑图)」

一般用 Excel 要表达的元素有:用例编号、用例标题、测试项目、用例级别、预置条件、测试输入、执行步骤、预期结果。

比如说,我们要测试一个“常规搜索关键词输入”的功能,我们用 Excel 来表达,类似下图所示:

假如我们用 Xmind 来编写测试用例,大概呈现成:

 

可以看到用 Excel 和 Xmind 去设计测试用例,粒度以及使用场景都不太相同。

「在一些功能比较单一、步骤简单、输入和预期比较明确的场景,可以采用 Excel 的风格去编写测试用例。」

「在一些功能比较繁杂、依赖测试人员的主观能动性的场景,可以采用 Xmind 的风格去编写测试用例。」

三、测试用例编写模版

现在在互联网公司,产品迭代很快,功能也比较复杂。

如果用 Excel 去设计测试用例的话,会花费比 Xmind 更多的时间去编写,而且编辑维护、可读性等等,都比较差。

项目这么紧急,用 Excel 去写测试用例,显然是不合理的。

「所以用 Xmind 的方式去编写测试用例,在互联网测试圈子里面也是深得人心。」

「但是,在一些回归验证的场景,是可以用 Excel 去写测试用例的,我们习惯把回归用例当作上线 CheckList,逐条去验证,防止遗漏。」

小细节

  • 日常测试工作,用 Xmind 去编写测试用例。
  • 上线环节,用 Excel 去编写回归用例,确保万无一失。

那么,我们日常测试,「用 Xmind 编写测试用例时,需要注意些什么呢」

  1. 「照抄产品需求文档没有必要的!」 这么做的坏处是:做了很多重复工作,而且思维容易被产品思维框住,有些不合理的地方或许难以发现。
  2. 「测试用例一定是可执行的!」
  3. 「测试用例并不是写得越多越好」。写得太多,可读性很差,也会无形之间给自己增加心理压力,而且根据二八原则,80%的bug都出现在20%的主流程上面。那异常测试做不做?当然要做!但是千万不要把异常测试作为重点,重点应该是站在用户的角度,优先保证核心主流程。
  4. 「测试用例要体现测试目标」,注意,这里不仅仅是预期,而是测试目标,要明白测试这条用例,到底目的是啥,产品功能和意图是否已经实现。
  5. 测试用例设计最好遵循金字塔原理,「尽量穷尽,完全独立,避免太多重复的用例」
  6. 「测试用例千万要做好分等级」,优先重点。
  7. 根据测试用例逐条进行测试时,还可以在「测试用例上做一些标注」,标记测试情况。
  8. 测试用例不仅仅是用例,对于一些构造的「测试数据也可以在测试用例上体现出来」,方便后续回归验证。
  9. 「测试用例需要注明用例基本信息」,还可以记录一些文档的链接(比如需求文档、技术文档)等等。
  10. 「用尽可能少的用例,覆盖绝大部分的测试场景」

所以,新式的测试用例,感觉不该叫测试用例,应该叫 「“测试日志”」 更加合适。

下面,我将把我是「如何构思和设计测试用例」,一步一步给大家呈现出来,是时候展示真正的技术了!

第一步,把测试用例的基本信息表示出来。

基本信息包含:「干系人、测试范围、用例说明、关联文档」等等信息。

有了这些信息,就可以把测试用例当成一个入口,提升查找相关文档的效率。

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

第二步,开始写测试用例。

这一块可以因人而异去设计,遵循几个原则:「不要照抄需求文档、设计的用例都是可执行的、用例做到分级、尽量穷尽,完全独立,避免太多重复的用例」

设计用例的时候,最好可以从测试目标出发,再进行向下延展。

举个例子:

第三步,用例评审。

用例评审就是拉个会,喊上开发、产品和设计,针对编写好的测试用例进行评审。这个环节需要在开发提测之前进行。

主要目的:

  • 沟通测试用例有没有遗漏的地方,评估当测试用例执行完,没有bug的情况下,是否可达到上线标准。
  • 和开发约定好,在开发自测阶段,开发需要保证冒烟测试用例能够通过。冒烟用例通过基本上可以作为提测标准。
  • 和开发、产品对接好上线前的验收标准。

第四步,执行用例。

一边执行用例,一边做好标记,方便查处bug之后,后续有针对性的去验证,而不是又从头把用例再走一遍,提升回归验证的效率。

另外,对于测试过程中,用到的一些测试数据,也可以直接在用例上标注出来,提高后续回归测试的效率。

「当测试完毕,达到上线标准之后,我们需要准备一份 CheckList,在上线当天使用」

CheckList 比较强调步骤性,所以适合用 Excel 去表达。

 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

上线无小事,一定得谨慎!

所以,知道怎么写测试用例了么?

下面是闲聊时间,我想和大家一起聊聊三个很现实的问题:
  • 「没时间写测试用例怎么办?」
  • 「全量的测试用例是否有必要?」
  • 「测试用例应当如何保存?」

四、没时间写测试用例怎么办?

身处互联网公司,项目时间紧,三天两头就要上线一个新功能,这是常态。

有的测试老司机在这种情况下,就放弃写测试用例,直接上手就测,其实这是很不好的习惯。

写测试用例不是面子工程,没有必要追求极致,写得像满分作文一样。

「其实写测试用例最主要的作用,就是帮助测试人员提升工作效率」

一方面,通过写测试用例可以对需求更加熟悉,脑子理顺;

另一方面,测试用例可以更好的指导你进行测试工作,尤其是你做好测试标记之后,对于后续验bug很有必要。

不写测试用例,不应该拿时间紧作为借口。

「我们应该根据需求的重要程度、难易程度来评定要不要写测试用例。」

如果是一些紧急且重要的需求,那肯定要写测试用例;如果只是一句话的需求、几个文案的改动,那这种不写测试用例也罢。

都是成年人了,应该要有判断力。

五、全量测试用例是否有必要?

以前入职一家新公司,导师总会要求新员工去写一份全量的测试用例,或者说丢一份很全的用例给新员工去阅读,说是帮助新员工更好的熟悉系统。

但是工作久了,我发现这对于新员工的培养,并不能起到什么效果,反而让新员工产生厌烦的心理。

写一份全量的测试用例是没有意义的,就像你让一个小学生去背字典一样,毫无意义。

「那怎样让新员工更好的融入到工作当中,快速上手呢?」

最好的办法就是将心比心,你「把自己所有的文档分门别类,多画点系统架构图、流程图,新员工培养手册等等,把这些给到新员工」,我觉得是比丢一个全量测试用例给一个测试新手更有用。

六、测试用例应当如何保存?

当然不是随手一丢,仍垃圾桶。

如果公司有条件的话,可以有个用例平台,把 项目-需求-测试用例 进行关联,后续遇到bug,都可以有迹可循,方便总结和回溯。

如果公司没有那么好的条件,可以用gitlab进行维护,进行版本控制。

字节跳动推出了飞书,里面的飞书文档也是特别香的,自带文档管理功能,而且还有飞书脑图可以替代 Xmind 进行测试用例编写,也是一种不错的保存测试用例的方案。

最后,绵薄之力.
感谢每一个认真阅读我文章的人,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

资料获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,关注公众号:一个心态巨好的朋友 即可自行领取。

 

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

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

相关文章

最优化理论-线性规划中的大M法的步骤

目录: 一、引言 二、线性规划的基本概念 三、最优化理论中的大M法 1. 大M法的基本思想 2. 大M法的步骤 3. 大M法的优缺点 四、大M法的应用 1. 生产计划问题 2. 运输问题 3. 投资问题 五、总结 一、引言 最优化理论是数学中的一个重要分支…

【2023/05/19】NFA

Hello!大家好,我是霜淮子,2023倒计时第14天。 非确定有限状态自动机(NFA)是一种模拟复杂系统行为的数学模型 目录 一、基本概念和理论 二、优点和缺点 三、应用场景 四、问题和挑战 五、重要性、作用和使用价值 …

学习HCIP的day.07

目录 7、SPF算法 --- OSPF防环机制 OSPF区域间防环 OSPF域外防环 基于以上长篇理论总结: 7、SPF算法 --- OSPF防环机制 (1)在同一个区域每台路由具有一致的LSDB (2)每台路由器以自己为根计算到达每个目标的最短路…

Java泛型,数组和方法返回类型 - 协变,逆变和不变

首先,让我们通常理解一下子类型规则是什么。 协变vs逆变vs双变vs不变 编程语言可能有支持以下子类型规则的特性: 协变 允许用超类型替换子类型。 逆变 允许用子类型替换超类型。 双变 同时是协变和逆变。 不变 不允许上述任何替换。 让我们看看Java支持哪…

Intellij IDEA 如何删掉插件

在 Intellij IDEA 的配置中,找到插件选项。 在插件选项中,选择需要删除的插件,然后在右侧的对话框中选择 uninstall 就可以了。 卸载以后,可能不会要求重启,为了安全起见,还是重启下你的 IDE 吧。

C++容器详解

什么是容器 首先,我们必须理解一下什么是容器,在C 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对…

Flutter控件之文本Text封装

Flutter控件之基类Widget封装 上篇文章,我们简单针对Widget做了一个基类封装,拓展出了很多常见又易用的属性,比如宽高,内外边距等等,很方便的为接下来的各个基础组件的封装,提供极大的便利,在上…

虚拟机启动时出现“已启用侧通道缓解”的解决方法

系列文章目录 Hypervisor launch failed centos7配置ssh免密登陆完成,进行ssh登陆时出现”代理承认未能使用密钥签名“ 解决pip更新的代码 文章目录 系列文章目录 一、问题描述 二、启用了侧通道缓解的虚拟机可能会出现性能下降 (79832&#xff0…

Linux系统vim查看文件中文乱码

Linux系统查看文件-cat中文正常显示 vim中文乱码 1、背景2、环境3、目的4、原因5、操作步骤5.1、修改vim编码配置 6、验证 1、背景 服务器部署业务过程中查看文件内容,使用cat 命令查看中文正常显示,使用vim命令查看显示中文乱码 cat 查看 vim 查看 …

陶哲轩宣布主持白宫生成式AI工作组,李飞飞、Hassabis发表演讲

来源 | 新智源 ID | AI-era 【导读】最近,「数学天才」陶哲轩表示,自己将领导白宫生成式人工智能工作组,就当前AI评估并收集意见。在陶哲轩看来,加入工作流的ChatGPT在数学专业领域中,并没有太多增值。 近来&#xf…

Redis主从复制、哨兵、cluster集群原理+实验

Redis 主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务…

Fluent局部坐标系(曲线坐标系)

1 概述 在某些模型中,利用局部坐标系可极大的方便模型设置,例如对弯曲的多孔板设置多孔介质属性、设置各向异性的材料属性等。 2 创建坐标系 通过树状菜单中“curvilinear coordinate system”可创建曲线型局部坐标系。 右键点击“新建”,在如…

Linux 安装redis

一、概述 官网:https://redis.io/ Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘…

基于静态和动态特征融合的语音情感识别层次网络

题目Hierarchical Network based on the Fusion of Static and Dynamic Features for Speech Emotion Recognition时间2021年期刊\会议ICASSP 基于静态和动态特征融合的语音情感识别层次网络 摘要:许多关于自动语音情感识别(SER)的研究都致…

【集群划分】基于kmeans的电压调节的集群划分【IEEE33节点】

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

HTTP/HTTPS协议详解

目录 一. HTTP详解 ✅1.1 概念 ✅1.2 HTTP的协议格式 1.2.1 HTTP请求体格式: 1.2.2 HTTP响应体格式: ✅1.3 HTTP请求方法 ✅1.4 认识请求报头 ✅1.5 HTTP请求过程 ✅1.6 认识状态码 二. HTTPS详解 ✅2.1 HTTPS简介 ✅2.2 HTTPS加密过程 TCP/UDP是位于传…

d3d(Direct X)中的com技术详解

本文不会对Com进行非常详细的分析 因为这个技术分析起来难度还是非常大的 要想真正弄懂还是非常困难的 我只会针对d3d中使用到的com技术和comptr技术进行说明 所以看完本文后 可以熟练使用d3d中使用到的相应技术 comptr类似于c11中的智能指针,用于管理com对象的生命周期,所以我…

深度学习基础篇之卷积神经网络(CNN)

一、CNN的基本结构 首先我们来看CNN的解百纳结构,一个常见的图像识别CNN模型如下图: 从图中可以看出最左边的图像就是模型的输入层,在计算机中就是若干个矩阵,这点与DNN类似。 接着是卷积层(Convolution Layer&…

rtmp协议

目录 1 rtmp格式 2 header 3 chunk data 1 rtmp格式 Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。 在RTMP协议中信令和媒体数据都称之为Message,包含Mess…

Intellij IDEA 提示 Thrift Support 支持不兼容

最近升级 Intellij IDEA 后老提示 Thrift Support 不兼容。 后来看了下这个插件已经不少时间没有更新了,也一直不知道这个插件是干什么 用的, 后来看了下,这个插件是: Thrift是一种接口描述语言和二进制通讯协议,它被…