自动化测试如何管理测试数据

news2024/11/6 9:40:03

前段时间,知识星球里有同学问到:自动化case越多,测试数据越多,数据的管理成本也越来越高,是否需要一个数据池来专门管理测试数据?这是一个好问题,也是很多测试同学在自动化测试实践中必须面对的一个问题。

近几年随着技术不断发展,新的工具、方法论和技术实践越来越多,自动化测试在具体工作中有了很多方法论和实践,这些实践的背后是什么原因在推动技术的发展,我觉得是个很值得复盘和回溯的事情。

这篇文章,我想聊聊自动化测试数据管理的方式,是如何迭代和不断演进的。

先看下面这张图,我将自动化测试成熟度演变分为如下几个阶段,关于如何管理数据,我会从下述几个阶段分开描述。
在这里插入图片描述

PS:上图不同阶段的标识,只是为了说明每个阶段的测试数据特性,而非这个阶段的具体技术实现方式和细节。

学习阶段

很多测试同学在刚开始学自动化测试的时候,基本都是脚本和测试数据写在一起,从实际工作应用的角度来说很不推荐。因为随着业务和技术的变化迭代,测试脚本和数据也要重新修改并执行,直接增加了自动化测试工作的维护成本,这样做有悖于自动化测试的本质(回归&提高效率)。

但对于新手或者初学者来说,将脚本+数据写在一起,它是可以快速实现和有直接反馈的一个demo。

初始阶段

自动化测试的数据管理第二个阶段,就是将测试数据写在配置文件里,通过键值对的方式去读取一些公用的数据,比如用户名密码、数据库连接配置、要访问的服务域名等。

这种做法大概在16年-17年是很常见的一种方式,也是很多刚开始尝试做自动化测试工作的同学常用的方式。当然那个时候在测试圈子里,所谓的PO模式、数据和脚本分离已经有了一定的讨论和实践。

不过这个阶段有个很有意思的点,很多公司为了自动化而自动化,专门招一个人来做自动化。求职市场也比较火爆,很多公司其实就是一个人做自动化测试,脚本数据都在本地保存和执行,这样做也无伤大雅。

作坊阶段

所谓的作坊阶段就是指测试团队有了一定规模,业务迭代速度和场景的复杂度有了一定提升,这个时候从需要有自动化开始转变为对效率的期待。很典型的一点就是这个时候所谓的版本管理和持续集成开始为测试同学注重起来,当然通俗来说就是SVN&Git和Jenkins开始在测试团队应用了起来,当然也仅限于使用。

还有一点就是部分测试同学开始意识到测试报告的重要性,大概18年左右,当时很多测试群和网上很多资料,都是关于HTMLTestRunner和Allure的各种魔改,以高大上和美观为主要追求。

当然,对于自动化测试需要的测试数据,大家也开始接受了数据和脚本分离,通过csv文件来存储测试数据。这样做的好处是测试场景变化后,只需要修改测试数据即可,提高了测试脚本的可维护性,也便于多人维护同一批测试数据。

团队阶段

到了第四阶段也就是团队阶段,测试团队的流程规范和技术体系开始逐步建立起来了,自动化测试也从独立的岗位变成了功能测试同学入厂标配。

为了便于测试数据的统一管理,也考虑到测试数据的持久化问题,大家开始引入数据库来进行测试数据存储,这样做进一步的降低了脚本和数据的耦合性,脚本就是不同的测试场景和case,数据作为公共部分被引入即可。

这个阶段还有个很有意思的点,测试平台的概念开始在各技术大会和技术沙龙上被提及,很多测试管理者甚至测试同学也在工作和不同场合中开始言必称开发平台。

成熟阶段

第五个阶段就是所谓的数据池或者造数工厂的概念了,所谓的造数工厂,其实就是通过直接调用应用程序的方法来产生数据,在自动化测试脚本或者服务联调、问题复现阶段直接引用。

这样做有几个特点:一是各种测试平台(不仅限于自动化测试平台)开始在企业内落地,二是催生了很多测试开发岗位,三是平台的适用范围开始由测试团队向其他技术团队扩散,也就是所谓的打通+赋能。

当然还有一些其他有意思的点,比如测试开始提倡全栈,各种招聘jd上要求懂前后端容器devops等各种东西,再比如测试圈子里开始讨论码代码能力到什么程度可以做测试开发,也是卷的不行。

追溯反思

综合上面几个阶段测试数据管理的方式以及近几年测试圈子或者说技术领域的一些现象,可以得到如下几个结论:

市场和企业对测试团队的要求越来越高;

手工测试开始逐渐向真正的工程师转变进化;

测试职能从功能验证开始转向质量保障和效率提升;

未来所谓的测试岗位几乎都会要求业务+技术既要还要;

当然,市场在不断变化,对于人的要求也在变得更丰富和具体,能跟随发展和市场要求的人,才能存活下来。

如果非要用几个关键字来概括上面的几个阶段的话,我认为这几个词可能会更合适:

市场期待——企业跟随——探索实践——效率提升——协同配合


          【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通


二、接口自动化项目实战  

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具


八、JMeter性能测试 

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

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

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

相关文章

RWEQ模型土壤风蚀模拟与风蚀模数估算、数据支持、参量提取、归因分析、相关SCI论文撰写技巧

目录 专题一 理论基础 专题二 平台基础 专题三 RWEQ模型数据支持 专题四 RWEQ模型参量提取 专题五 归因分析 专题六 RWEQ模型相关的SCI论文撰写技巧 结合案例讲解RWEQ模型的运行及相关的归因分析,从原理、数据、方法、归因分析方面对土壤风蚀情况进行实战讲解…

绝不多花一分钱,IT老兵的云上省钱之旅

相信很多网友感觉今年的日子不好过,各方面都在缩减支出,尤其是部分IT设备还在不断涨价,像今年的英伟达的40系桌面级显卡和A/H系列的商用显卡,动辙价格跳涨30%,让广大开发者苦不堪言。所幸在省钱方面,笔者有…

【c++底层结构】AVL树红黑树

【c底层结构】AVL树&红黑树 1.AVL树1.1 AVL树的概念1.2 AVL树结点的定义1.3 AVL树的插入1.4 AVL树的旋转1.5 AVL树的验证1.6 AVL树的性能 2. 红黑树2.1 红黑树的概念2.2 红黑树的性质2.3 红黑树节点的定义2.4 红黑树的插入操作2.5 红黑树的验证2.6 红黑树与AVL树的比较2.7 …

linux之iptables的理解与使用

1. 前言 iptables是一个用于Linux操作系统的防火墙软件,它可以对网络流量进行过滤、修改和重定向,从而控制网络通信。iptables是Linux内核中的一个子系统,它可以通过在命令行输入规则来配置网络防火墙。iptables可以对入站和出站的流量进行控…

初识mysql数据库之事务的隔离性

目录 一、理解隔离性 二、隔离级别 1. 不同的隔离级别的简单概述 2. 查看隔离级别 2.1 查看全局隔离级别 2.2 查看会话隔离级别 3. 设置隔离界别 4. 读未提交(Read Uncommitted) 4.1 读未提交测试 5. 读提交(Read Committed&#x…

Windows 10 安装 PostgreSQL 12.x 报错 ‘psql‘ 不是内部或外部命令 由于找不到文件libintl-9.dll等问题

目录 序言一、问题总结问题 1 psql 不是内部或外部命令,也不是可运行的程序或批处理文件。问题 2 “由于找不到文件libintl-9.dll,无法继续执行代码,重新安装程序可能会解决此问题。“1、卸载2、安装3、安装 Stack Builder (这个可…

Easyexcel简介及写、读操作

Easyexcel简介及写、读操作 一、背景二、简介三、引入依赖四、代码实现1.创建实体类2.写入excel操作3.读取文件操作3.1 指定excel对应索引3.2 设置监听器3.3 执行读取操作 一、背景 作为一个经常进行数据分析的后端人员,免不了面对各种报表,且在日常的工…

onTouchEvent浅析

我们接着上次的自定义星星来作讲解 当 onTouchEvent 返回 super.onTouchEvent ( false ) 时 public boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:Log.d("ACTION_DOWN","ACTION_DOWN:"event.getA…

Ansible-playbook(剧本)

Ansible-playbook(剧本) 一、playbook的构成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行(2)Variables:变量(3)Templates&am…

mybatis复杂环境搭建-多对一的处理-一对多的处理

复杂环境搭建: 1.1建表: CREATE table teacher( id int(10) not null, name varchar(30) default null, primary key(id) )engineInnoDB default charsetutf8mb3;INSERT INTO teacher (id, name) VALUES (1, 何老师);create table student( id int(10)…

用户端App自动化测试

一、自动化用例录制 1、Appium Inspctor 功能介绍 UI 分析录制用例元素查找测试Attcah 已有的 session云测试 2、用例录制 1)获取 app 的信息 2)配置待测应用 3、获取 app 的信息 1)app 入口,两种方式获取: * 通…

Linux系统中MySQL主从复制

本节主要学习了MySQL Replication概述,优点,复制类型,复制方式,复制过程和复制过程的限制,部署MySQL主从异步复制的流程及问题解决。 目录 一、MySQL Replication概述 1、优点 二、MySQL复制类型 1.异步复制&#…

#vue3报错 Cannot read properties of null (reading ‘isCE‘)#

场景:使用 npm 安装依赖包的时候,如如安装 npm i xlsx npm i file-saver 重新运行报错 Cannot read properties of null (reading isCE)# 解决办法: 使用的vite vue 在vite.config.ts添加如下配置: dedupe: [ vue ]

LeetCode使用最小花费爬楼梯(动态规划)

使用最小花费爬楼梯(动态规划) 题目描述算法流程(方法一)编程代码优化代码算法流程(方法二)编程代码代码优化 链接: 使用最小花费爬楼梯 题目描述 算法流程(方法一) 编程代码 class Solution { public:int minCostClimbingStair…

【雕爷学编程】Arduino动手做(104)---16X16点阵汉字屏模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

8种工程设计优化问题Matlab代码:多种智能优化算法求解对比

目录 一、8种工程设计优化问题 二、8种工程设计优化问题部分问题介绍 2.1 焊接梁设计 2.2 拉力压缩弹簧设计 2.3 三杆衍架设计问题 2.4 压力容器设计 2.5 减速器设计问题 三、多种智能优化算法分别求解部分工程设计优化问题 3.1 焊接梁设计 3.2 拉力压缩弹簧设计 3.…

数据结构基础之二叉树

文章目录 二叉树性质二叉树分类遍历二叉树如何判断是否为完全二叉树 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此…

企业选择租用CRM还是一次性买断CRM?分别有哪些优势?

CRM是企业管理客户关系,提升销售业绩,实现业务增长的重要工具。市场上的CRM系统销售方式主要有两种——租用型和买断型。那么,租用CRM好还是一次性买断CRM好?本文将从以下几个方面进行分析: 1、什么是租用型CRM和买断…

shell中按照特定字符分割字符串,并且在切分后的每段内容后加上特定字符(串),然后再用特定字符拼接起来

文件中的内容&#xff0c;可以这么写&#xff1a; awk -F, -v OFS, {for(i1;i<‌NF;i){$i$i"_suffix"}}1 input.txt-F,&#xff1a;设置输入字段分隔符为逗号&#xff08;,&#xff09;&#xff0c;这将使awk按照逗号分割输入文本。-v OFS‘,’&#xff1a;设置输…

数据结构:栈和队列的实现和图解二者相互实现

文章目录 写在前面栈什么是栈栈的实现 队列什么是队列队列的实现 用队列实现栈用栈模拟队列 写在前面 栈和队列的实现依托的是顺序表和链表&#xff0c;如果对顺序表和链表不清楚是很难真正理解栈和队列的 下面为顺序表和链表的实现和图解讲解 手撕图解顺序表 手撕图解单链表 …