测试人员为什么要编写测试用例?好的测试用例应该具备那些特点?

设计测试用例可以说是测试人员的一项最基本技能 。很多时候当我们接到设计测试用例的任务时 ,往往都是想的该如何更快的完成这项任务 ?而很少去想为什么要完成这项任务? 对于测试用例也是如此,为什么要设计测试用例呢(目的)?其实这个问题是我们做好测试用例的元问题 ,回答好这个问题,你设计出的测试用例就更具有全面性 。

1.什么是测试用例 ? 包含什么要素 ?

首先,让我们来了解一个最基本的问题,什么是测试用例 ? 所谓的测试用例就是针对软件设计的一系列验证项 ,其中每个验证项中都包含了有输入,执行步骤,预期结果等要素 。其目的就是为了验证产品功能是否符合产品需求 。

通常情况下我们会将测试用例存放在一个具体的文档或工具中 ,比如 :excel , xmind ,禅道 或一些其它的测试用例工具中 。

当然它里面包含的要素也会根据文档/工具的不同 ,里面所包含的要素也有所不同 ,但整体上来说差别不大。主要包括基本要素(必备要素)和扩展要素两个部分 。

  • 基本要素 :用例编号 ,产品/项目名称,模块 ,测试用例标题 ,前提条件 ,操作步骤 ,预期结果 ,执行结果 。

  • 扩展要素 : 输入数据 ,测试用例类型 ,适用阶段以及备注等。

有了这个这些要素 ,即使没有测试用例模板 ,也能很快的构建出来 。当然 ,经常设计测试用例的肯定是对这些了如指掌 。

2.为什么要编写测试用例 ?

那么,回到我们开头的那个问题 ,为什么要编写测试用例 ?它有什么好处 ?能体现在哪里 ? 要想回答这些问题 ,我们可以去找出编写测试用例和不写测试用例它们之间的区别是什么 。从而这个问题的答案 。

首先,设计测试用例的过程是一个高度专注的过程,在此过程中你可能需要借助各种专业的方法、经验以及想象力 ,才可能设计出完备且有效的测试用例集。而这个过程最合适的时机就是找一个尽量没人打扰的时间段进行集中统一设计 。所以把它放在提测前统一设计是最合适的 ,到了执行阶段只负责执行即可。

但是假如这个用例因为其它原因未进行设计呢 ? 那么我们的执行就会变的随机 ,你可以想象一下这样的场景,你一会在想测试点,一会又在执行测试用例 ,一会又在提bug ,甚至还要和同事进行各种的沟通,在这种如此频繁切换场景的情况下,你的测试点还能否保证覆盖度? 其实是一个很大的未知数 。这也是编写测试用例和未编写测试用例的一个最本质区别 。即写测试用例会覆盖度更强 ,而不写测试用例它的随机性会更强,漏测点会更多。

那么,我们所编写的测试用例到底是在覆盖什么 ?很多人会说肯定是在覆盖需求 ,但是我觉得这个答案不够完整 。它应该是:

  • 首先,验证每一个功能是否正确,即验证功能的正确性;

  • 其次,应该针对每个功能需求进行深入的覆盖,即验证每个功能的深入性 。

  • 最后,对需求中的每一个功能进行覆盖,即验证整个系统的全面性

也就是说,我们真正设计测试用例的目的就是为了保证这三个性:正确性、深入性和全面性 。

3.设计时该如何覆盖 ?

所以,一个好的测试用例的特点应该至少包括验证功能的正确性 、验证每个功能的深入性(测试深度)以及验证功能的全面性(测试广度) 。

其中,正确性很好理解 ,这里不在解释,但是深入性和全面性是什么意思呢 ? 或者说在设计测试用例过程中该如何体现呢 ?

先说全面性 ,全面性其实就是指所设计出的测试用例是否包含了全功能的覆盖(功能范围)和全类型的覆盖(类型范围);

而深入性是指针对某个单一功能是否包含了各种方法的覆盖 ,因为归根结底测试用例是由各种方法设计出来的 。

这里面需要说明的是 ,每种测试类型都会有不同的方法 ,掌握方法的多少是决定设计出来的测试用例细粒度的一个主要因素 。这也是为什么我们需要掌握更多的测试方法的原因 。因这个话题太大,我们不在这里说明 。

4.无需求时该如何编写 ?

以上目的是有一个前提条件的 ,就是必须依赖于需求 ,比如说验证产品功能的正确性 ,那么产品的预期结果其实是来源于需求 ,同样其它两个目的也是如此 。但是在现实的工作中,常常会遇到没有需求而编写测试用例的情况 。那么这样的情况下,以上的目的还是否有效呢 ?答案是有的,但需稍作修改 。具体变为 :

  • 验证每个功能的正确性 ,依据用户逻辑去判断是否正确 。

  • 验证每个功能的深入性 。

  • 验证是否覆盖了所有的参考物 ,这里的参考物可以是已实现的系统功能、UI图中的功能,基于这些参考物我们也可以根据经验写出对应的测试用例来 。

通过以上的修改 ,就能兼容有需求和无需求的情况 。测试用例的目的就会变的更加通用。

5.总结

总结一下 ,编写测试用例可以说是一项非常基础的能力 ,我们不仅仅是要知道如何编写测试用例 ? 而且更要知道为什么要编写测试用例 ,也就是知其然也要知其所以然 。在元问题上进行更多的思考,有助于我们提高对事物本质的认识 。

那么,我们编写测试用例的目的是什么呢 ?

  • 验证每个功能的正确性 ,依据需求(用户逻辑)去判断 。

  • 验证每个功能的深入性 ,从测试方法上去深入 。

  • 验证是否覆盖了所有的功能(参考物 ) ,可以从功能的测试类型上考虑全面性 。

知道了测试用例的编写目的 ,也就知道了编写测试用例所要达到的目标 ,从现状作为起点到最终的目标的这个过程就是不断使用不同方法去靠近的一个过程 ,其中两者的差距就是我们提升的空间 。

 

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

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

相关文章

Jellyfin影音服务本地部署并结合内网穿透实现公网访问本地资源

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

拼图小游戏的界面和菜单的搭建

package Puzzlegame.com.wxj.ui;import javax.swing.*;public class GameJframe extends JFrame { //游戏主界面 public GameJframe(){//初始化界面initJFrame();//初始化菜单initJmenuBar();//让界面显示出来this.setVisible(true); }private void initJmenuBar() {//创建整个…

需求变化频繁的情况下,如何实施自动化测试

一.通常来说,具备以下3个主要条件才能开展自动化测试工作: 1.需求变动不频繁 自动化测试脚本变化的频率决定了自动化测试的维护成本。如果需求变动过于频繁,那么测试人员就需要根据变动的需求来不断地更新自动化测试用例,从而适应新的功能。…

qiankun子应用静态资源404问题有效解决(涉及 css文件引用图片、svg图片无法转换成 base64等问题)

在👉🏻 qiankun微前端部署👈🏻这个部署方式的前提下,遇到的问题并解决问题的过程 最开始的问题现象 通过http请求本地的静态json文件404css中部分引入的图片无法显示 最开始的解决方式 在👉&#x1f3…

行测-言语:2.语句表达

行测-言语:2.语句表达 1. 语句排序题 捆绑就是看两句话是不是讲的同一个内容,相同内容的句子应该相连。 1.1 确定首句 1.1.1 下定义(……就是 / 是指) A 1.1.2 背景引入(随着、近年来、在……大背景 / 环境下&#…

Android 渲染机制

1 Android 渲染流程 一般情况下,一个布局写好以后,使用 Activity#setContentView 调用该布局,这个 View tree 就创建好了。Activity#setContentView 其实是通过 LayoutInflate 来把布局文件转化为 View tree 的(反射)…

使用Go语言编写自定义的HTTP代理:探险网络奇幻之旅

你是否曾经想过自己也能编写一个代理服务器,掌握网络冲浪的主动权?现在,有了Go语言,这个梦想不再遥不可及!让我们一起踏上这段探险之旅,用Go语言编写一个自定义的HTTP代理,开启网络奇幻之旅&…

音频格式之AAC:(3)AAC编解码原理详解

系列文章目录 音频格式的介绍文章系列: 音频编解码格式介绍(1) ADPCM:adpcm编解码原理及其代码实现 音频编解码格式介绍(2) MP3 :音频格式之MP3:(1)MP3封装格式简介 音频编解码格式介绍(2) MP3 :音频格式之MP3&#x…

HNU-编译原理-甘晴void学习感悟

前言 熬过煎熬的考试周、复习以及更加煎熬的等成绩,查到成绩的那一刻,心里还是挺开心的。 虽然我没有完全学懂这门课程,但我还是兢兢业业地通过了课程的考试,拿到了这门课程的认可。 记录一下自己对编译原理的学习感悟&#xf…

优化用户体验测试应用领域:提升产品质量与用户满意度

在当今数字化时代,用户体验测试应用已经成为确保产品质量、提升用户满意度的关键工具。随着技术的不断发展,用户的期望也在不断演变,因此,为了保持竞争力,企业必须将用户体验置于产品开发的核心位置。本文将探讨用户体…

知识圣殿,智慧熔炉

知识圣殿,智慧熔炉 知识殿堂,巍然屹立 一座灵魂熔炉,号称图书馆 万卷书香盈架,智慧如星河汇聚 每一册书页,流淌着人类文明的血脉 钢笔与墨水交织诗篇 思想发芽,真理绽放光焰 浩瀚知识海洋,波涛…

Dlearning

Deep Learning Basic 神经网络: #mermaid-svg-rR22a8Udy5SxGOoP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rR22a8Udy5SxGOoP .error-icon{fill:#552222;}#mermaid-svg-rR22a8Udy5SxGOoP .error-t…

【MATLAB源码-第122期】基于matlab斑马优化算法(ZOA)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 斑马优化算法(Zebra Optimization Algorithm,简称ZOA)是一种模仿斑马群体行为的优化算法。在自然界中,斑马是一种社会性很强的动物,它们具有独特的群体行为模式&…

【STM32】STM32学习笔记-硬件SPI读写W25Q64(40)

00. 目录 文章目录 00. 目录01. SPI简介02. W25Q64简介03. SPI相关API3.1 SPI_Init3.2 SPI_Cmd3.3 SPI_I2S_SendData3.4 SPI_I2S_ReceiveData3.5 SPI_I2S_GetFlagStatus3.6 SPI_I2S_ClearFlag3.7 SPI_InitTypeDef 04. 硬件SPI读写W25Q64接线图05. 硬件SPI读写W25Q64示例06. 程序…

1块9毛钱,修复拓牛TC1D智能垃圾桶盖子不能正常开合的故障

前言 21年9月份买了拓牛的智能垃圾桶,一直用的很流畅,再加上屋里没啥有机垃圾,也没有宠物,用上之后每次投入垃圾,之后都会盖上盖子,没有很多的异味散发,屋里也没有蟑螂等害虫。 再加上门口有帘…

Chrome单独配置代理的方法

Windows Windows上单独对Chrome设置代理,需要在启动时传递参数,具体步骤如下。 在Chrome浏览器的快捷方式上右击,进入属性。在 快捷方式 标签下找到 目标 项目,在最后添加 –proxy-server“socks5://xxx.xxx.xx.xx:xxxx” 如果要…

Flink SQL 实时数据开发经验总结

使用SQL实现流处理的核心技术 在了解了Table\SQL API的使用方法以及作业运行机制之后,接下来分析SQL实现流处理的核心技术。 为什么要分析这个问题呢? 因为传统的关系代数以及SQL最开始是为了批处理设计的,在传统关系型数据库以及批处理中…

SpringBoot操作Jedis

SpringBoot操作Jedis 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

大创项目推荐 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

Conda python管理环境environments 二 从入门到精通

Conda系列&#xff1a; 翻译: Anaconda 与 miniconda的区别Miniconda介绍以及安装Conda python运行的包和环境管理 入门Conda python管理环境environments 一 从入门到精通 1. 指定环境environment的位置 可以通过提供路径来控制 conda 环境所在的位置 复制到目标目录。例如…