【职场经验】关于自动化用例设计的思考

为什么要设计用例?

作为质量保证(QA)人员,设计测试用例的重要性不亚于开发人员编写技术实现方案。如果实现方案设计不周,编码阶段将可能遇到许多问题;同理,如果我们未能设计测试用例,产品质量就难以得到充分保障。

对于不同的测试类型,我们在设计测试用例时候的侧重点和颗粒度有所不同。

设计测试用例的目的,个人观点认为主要有如下几点原因:

方便测试活动开展

我们心中一定需要有质量和效率的意识。我们工作的核心是以更高的效率保证交付产出物的质量,这也是是所有测试工作的最终目标。

在实际工作实践中,绝大多数的测试工作都是围绕测试用例展开的。例如测试用例评审、冒烟测试、提测检查、用例执行、缺陷提交、缺陷跟踪和修复验证,直到最终线上发布。每个阶段都有对应的测试用例、脑图、测试点或者checklist。

保证业务场景覆盖

软件测试工作的核心是通过设计各种场景并进行校验,以确保交付的软件符合预期设计结果。无论是采用功能测试中的等价类、边界值、正交、因果图等用例设计方法,还是自动化测试中的分层概念,都是为了通过特定的方法和手段尽可能地保障业务场景的覆盖率,避免因遗漏而导致问题逃逸到线上,从而影响最终交付产出物的质量。

我们的目标是通过精心设计的测试策略和全面的测试覆盖,确保软件功能的稳定性、一致性和可靠性。

质量管控和评估

随着团队对质量的重视,开始对需求质量、研发质量、发布质量等进行质量评估,通过一系列的手段和策略去提升各个方面的质量,达到最终交付质量。

测试用例是研发过程质量中的重要组成部分,可以说是研发过程中各项测试工作的核心。

我们习惯以多维度的视角,运用各种测试技术手段来检验软件是否满足预期,都是为了验证和确保交付质量。同时,我们也严格遵循流程规范和度量标准,以保证最终交付的产品达到标准。

例如我们想要度量研发提测质量,通过单元测试、代码扫描、冒烟测试的手段,制定对应的度量标准如单元测试覆盖率、冒烟用例通过率、提测退回率、代码质量分等。

这里面我们有些可能不是完整的用例,但是会是一些检查点、度量指标。

如何设计自动化测试用例?

自动化测试的分层模型,我们应该已经很熟悉了,按照分层测试理念,自动化测试的投入产出应该是一个金字塔模型。越是向下,投入/产出比就越高,但开展的难易程度/成本和技术要求就越高。

分层自动化具体参考前面文章分层自动化测试的实战思考

Unit 自动化

单元测试(unit testing) 是指对软件中的最小可测试单元进行检查和验证。最初由开发人员完成,旨在确保其所负责的环节交付的产出物符合进入下一阶段的标准。

对于单元测试,我认为测试人员应该参与其中,共同协作进行测试和验证,以尽早发现问题。具体执行者主要是开发人员,但如果测试人员有能力、时间和精力,他们也可以参与其中的一部分。在设计单元测试用例和执行方面,可以考虑如下几点:

• 测试人员和开发人员分清楚职责和边界

• 测试人员和开发人员对于用例设计颗粒度达成共识,给出相关标准

• 划定业务范围、优先级、实施阶段和执行频率

• 测试人员和开发人员制定的度量标准需要达成共识,如覆盖率、通过率、阻碍bug数等

API 自动化

从测试分层金字塔模型来说,API自动化测试是性价比最高的一种测试手段。在设计用例时需要如下思考:

• 确定要开展API自动化测试的业务范围

• 针对业务范围内的接口进行优先级排序

• 优先保障正向业务场景覆盖,逆向场景后面再进行考虑

• 明确 API 接口相关基础信息,如接口参数、业务逻辑及数据落库等信息

• 优先保证单接口进行,再考虑对接口串联的场景化

UI 自动化

先说 UI 自动化用例设计之前,我们聊聊哪些项目、场景适合开展 Ui 自动化测试,我们需要考虑如下情况:

• 需求比较稳定,不会频繁变更

• 比较频繁的回归验证和执行

• UI界面稳定,变动少

• 软件维护周期长,可持续性

• 项目进度时间比较充裕

• 被测系统开发较为规范,可开展性高

• 存在比较好的基础设施

UI层是直接面向用户的入口,我们的业务功能测试工作主要集中在这一层。在进行UI自动化时,应针对性评估和筛选适合的业务场景来设计用例。然而在实际工作实践中,很难完全满足上述条件。

一般来说只要满足下面几点,就可以开展UI自动化测试:

需求稳定,不会频繁变更

UI自动化测试面临的主要挑战是需求和UI的频繁变化。为适应新的改动,脚本需要不断修改和扩展,过多的修改可能导致投入产出比低,从而降低UI自动化测试的价值和意义。一种妥协的办法是选择相对稳定的模块和功能进行自动化测试,而对于变动较大或需求频繁变更的部分,则采用手动回归。

比较频繁的回归验证和执行

测试数据、测试用例、自动化脚本的复用高,只有高频的执行才能体现出价值所在。

软件维护周期长,可持续性

UI自动化测试需要稳定的需求、精心设计的自动化框架以及花费时间进行脚本开发和调试,这实际上是一个软件开发过程。如果项目周期较短且没有足够的时间去支持这一过程,那么自动化测试可能就不再必要。

被测系统UI设计较为规范,可开展性高

主要基于以下几点进行考虑:

• 系统UI的差异,不同的系统UI可能会影响自动化测试的效果和效率

• 测试工具的适应性,选择的工具是否能适应项目的需求和环境

• 测试人员的能力,他们是否能够快速掌握并应用相关的知识和技术。

设计用例需要注意什么?

我们始终需要遵循小步快跑、逐渐迭代的思维原则,先跑起来,进行验证再说。

由易到难,从简单到复杂

不同类型的自动化测试用例设计和实施,都是覆盖范围越大/粒度越小,投入成本越大, ROI递减的过程。

在如今的环境中,大部分企业都强调研发效益的提升和快速迭代的重要性。此时,我们不能再沉溺于“慢工出细活”的传统理念,反而应着眼于如何在更短的时间内,以更低的投入实现核心场景的全面覆盖,以达到快速验证的目标。我们要理智地看待覆盖率、案例数量等度量指标,不应过分追求这些表面的数字,而应关注其背后的真实价值和意义。

我们千万不要面向质量度量和KPI搞自动化测试,这样容易因小失大

可监控、可确认、可评估

在设计自动化测试用例时还应注意这些:

• 可监控:用例执行需要很方便的查看执行过程场景,非常清晰的展示相关数据及变化;

• 可确认:自动化用例必须要有断言,执行完成需要达到我们的目标

• 可评估:自动化执行的结果要可评估,例如通过率为 100%,代表当前功能没有问题

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

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

相关文章

如何实现一个K8S DevicePlugin?

什么是device plugin k8s允许限制容器对资源的使用,比如CPU和内存,并以此作为调度的依据。 当其他非官方支持的设备类型需要参与到k8s的工作流程中时,就需要实现一个device plugin。 Kubernetes提供了一个设备插件框架,你可以用…

机器视觉系统选型-为什么还要选用工业光源控制器

工业光源控制器最主要的用途是给光源供电,实现光源的正常工作。 1.开关电源启动时,电压是具有波浪的不稳定电压,其瞬间峰值电压超过了LED灯的耐压值,灯珠在多次高压冲击下严重降低了使用寿命; 2.使用专用的光源控制器&…

【算法学习】搜索算法之深度优先搜索

深度优先搜索 DFS 1.算法介绍 深度优先搜索(DFS)算法是一种用于遍历或搜索树或图的算法。它的基本思想是尽可能深地搜索图的分支,直到到达叶节点或无法再深入为止,然后回溯到前一个节点,继续探索其他分支。这种搜索策略可以确保图中的每个节点都被访问到,除非它是一个环。…

inBuilder低代码平台新特性推荐-第十六期

各位友友们,大家好~今天来给大家介绍一下inBuilder低代码平台社区版中的系列特性之一 —— 构件热加载! 01 概述 构件热加载指的是:构件代码修改后,无需重启应用,通过WebIDE的部署或发布工程后,即可正常调…

08-静态pod(了解即可,不重要)

我们都知道,pod是kubelet创建的,那么创建的流程是什么呐? 此时我们需要了解我们k8s中config.yaml配置文件了; 他的存放路径:【/var/lib/kubelet/config.yaml】 一、查看静态pod的路径 [rootk8s231 ~]# vim /var/lib…

代码的复用——Mixin使用例子

Mixin(混入)是一种在Sass和Vue.js等框架中常用的技术,用于分发和重用代码。以下是Sass和Vue.js中Mixin的使用举例。 在Sass中,Mixin允许你定义可以在整个样式表中重复使用的样式。以下是一个Sass中Mixin的使用例子: …

华为配置直连三层组网直接转发示例

华为配置直连三层组网直接转发示例 组网图形 图1 配置直连三层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户接入WLAN网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…

标题:从预编译到链接:探索C/C++程序的翻译环境全貌

引言 在软件开发的世界里,我们通常会遇到两种不同的环境——翻译环境与运行环境。今天,我们将聚焦于前者,深入剖析C/C程序生命周期中至关重要的“翻译环境”,即从源代码到可执行文件这一过程中涉及的四个关键阶段:预编…

三七互娱,顺丰24春招内推

三七互娱,顺丰24春招内推 ①三七互娱 【介绍】知名上市游戏企业,24届本科及以上可投递,使用内推码,面试快人一步! 【岗位】美术设计类,运营类,游戏研发类,策划类,市场推广…

设备改造经历干扰处理

设备改造完了,终于松了口气。没过几天,客户打电话过来,刚松了的那口气立马又吊了起来。通过客户描述,感觉麻烦来了。 客户每台机器都用了4台伺服,国产某品牌的,之前就经常发生液压站压力变送器损坏、某个环节偶尔不工作等情况,通过增加滤波电路、分开走线等措施解决了。…

开发的软件如何在安卓市场上架

要在安卓市场上架开发的软件,你需要遵循一系列步骤来确保你的应用符合市场的要求和标准。以下是一个基本的上架流程: 1. 注册开发者账号 在Android安卓市场(如Google Play Store)上注册一个开发者账号。提供必要的信息&#xff…

LeetCode 算法题 (数组)存在连续3个奇数的数组

问题: 输入一个数组,并输入长度,判断数组中是否存在连续3个元素都是奇数的情况,如果存在返回存在连续3个元素都是奇数的情况,不存在返回不存在连续3个元素都是奇数的情况 例一: 输入:a[1,2,3…

数论 - 博弈论(Nim游戏)

文章目录 前言一、Nim游戏1.题目描述输入格式输出格式数据范围输入样例:输出样例: 2.算法 二、台阶-Nim游戏1.题目描述输入格式输出格式数据范围输入样例:输出样例: 2.算法 三、集合-Nim游戏1.题目描述输入格式输出格式数据范围输…

Python编程-使用OpenCV和Numpy库实现图片去水印(附代码)

目录 安装OpenCV和NumPy库 开始 读取图像 选取水印位置 删除指定位置的水印 去除并修复水印(完整代码) 优化修复方法 效果(标红区域是原水印位置) 注意 安装OpenCV和NumPy库 cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作;Numpy这是一个强大的处理矩…

【C++】创建多级目录下的指定文件

文章目录 一、判断文件存在二、获取文件所在目录三、创建指定目录四、使用方法 一、判断文件存在 static bool exists(const std::string &pathname) {// 方法1 获取文件状态,若存在则可能获取成功,若不存在则一定失败struct stat st;if (stat(path…

React18原理: React核心对象之ReactElement对象和Fiber对象

React中的核心对象 在React应用中,有很多特定的对象或数据结构.了解这些内部的设计,可以更容易理解react运行原理列举从react启动到渲染过程出现频率较高,影响范围较大的对象,它们贯穿整个react运行时 如 ReactElement 对象如 Fi…

美易平台:力拓2023年全年财报分析

力拓(Rio Tinto)是一家全球知名的矿业公司,其2023年全年财报显示,公司取得了可喜的业绩。根据公布的数据,力拓2023年全年基础盈利达到118亿美元,略高于预估的116.6亿美元。每股末期股息为2.58美元&#xff…

IO 作业 24/2/21

1、使用多线程完成两个文件的拷贝&#xff0c;第一个线程拷贝前一半&#xff0c;第二个线程拷贝后一半&#xff0c;主线程回收两个线程的资源 #include <myhead.h> //定义分支线程1 void *task1(void *arg) {int fdr-1;//只读打开被复制文件if((fdropen("./111.txt…

2024光伏展

2024年光伏展是一个专业的光伏行业展览会&#xff0c;旨在展示最新的光伏技术和产品&#xff0c;并促进光伏行业的发展和合作。 该展览会预计将吸引来自全球各地的光伏制造商、供应商、投资者和专业人士。参展的公司将有机会展示他们的最新产品和技术&#xff0c;与其他行业领导…

HTTP协议要点总结

一、什么是 HTTP 协议 1. 超文本传输协议 (HTTP &#xff0c; HyperText Transfer Protocol) 是互联网上应用广泛的一种网络协议。 是工作在 tcp/ip 协议基础上的 , 所有的 WWW 文件都遵守这个标准。 2. http1.0 短连接 http1.1 长连接 3. http 是 TCP/IP 协议的一个…