当前位置: 首页 > news >正文

【软件测试】自动化测试如何管理测试数据

前言

在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。

随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高,如何有效管理测试数据也是自动化测试实践中一个值得探讨的问题。并且随着技术的发展和工具的不断革新,方法论和实践经验的积累,自动化测试中测试数据的管理方式也在不断迭代和演进。

本篇,就来聊一聊自动化测试过程中数据的管理。

脚本与数据捆绑

在学习自动化测试初期,基本上使用的都是线性脚本,也就是将测试数据与测试脚本捆绑在一起。

这也是每个初学者都会经历的阶段,这样做的好处就是可以快速实现一个demo,更好地帮助初学者从手工测试进阶到自动化测试,例如UI自动化就是模拟人在浏览器上的操作,打开浏览器、定位元素、操作元素、模拟页面动作、断言结果等一系列操作,线性脚本正好与这一系列操作对应,有助于初学者更好地理解,从而得到一个正反馈。

但是,在实际应用中,不推荐这种方式。

因为,刚开始少数的测试用例维护起来可能很容易,但随着时间迁移、产品迭代、测试套件的增长,脚本也会越来越臃肿,可维护性差且工作量大,有悖于自动化测试提高工作效率的本质。

配置文件

以键值对的方式将一些公用数据写入配置文件中,并使用相关API来读取配置信息,配置文件的格式可以是yaml、json、xml、properties、ini、toml等。

这里的配置文件主要用于管理一些公用的、使用频率较高、数据量级较小的测试数据。

例如:

  • 在接口自动化测试中,域名相对来说都是固定的,只是不同接口的请求路径(如:/register、/login)不一样,那么就可以把域名(如:https://caituotuo.top)写入配置文件,测试过程中只需要将实例化的域名与请求路径进行拼接即可
  • 在UI自动化测试中,要测试某个网站各个模块的业务,前提是用户登录,此时这个用来登录的测试账号往往都是固定的,因此就可以将这组用户名和密码写入配置文件中直接引用。比起用专门的文件或数据库来管理这组数据来说,写在配置文件中更加高效方便。
  • 数据库配置信息,包括:host、port、username、password、charset等。

测试文件

测试框架中的data模块,使用专门的文件来管理测试数据,实现数据与脚本的分离,降低维护成本,提高可移植性,文件格式可以是yaml、json、xml、excel、csv等。

这里的测试文件与上面所说的配置文件略有不同,配置文件主要用于存放整个项目需要用到的配置项,如URL、数据库信息等,而这里的测试文件更多的是与测试用例相对应,适用于相同的操作有不同的输入得到不同或相同的结果。

例如:

  • 要测试登录功能,需要用到不同的账号和密码,不同的组合都需要做登录场景的测试,正常的排列组合下可能会产生多个用例,对于这种情况,就可以将多组账号数据存放在测试文件中,再通过参数化的方式循环读取(如:利用TestNG的@DataProvider注解Excel数据源文件实现数据驱动),并执行后续操作。
  • 根据业务场景的不同,数据的量级和使用频率也不一样,基于数据和脚本分离的思想,将测试数据存放在专门的测试文件中。
  • 大量的测试数据,几百上千条测试数据,对于测试数据量级很大的场景也可以将数据写入Excel、CSV等文件中进行存储管理。

不同数据格式文件对比:

文件格式优点缺点
Excel生成数据方便二进制文件不利于版本管理;一张工作表最多有256列,65536行;只支持单事务,如需多线程读取会有瓶颈
CSV结构简单,可用Excel编辑,可与Excel进行转换文件格式方便版本管理,不容易描述复杂的层级结构
YAML格式完备,可读性好,可以注释格式简单
XML格式完备冗长复杂
JSON格式完备,可读性良好不能编写注释,格式死板

综上所述,YAML和JSON对于数据结构的支持和书写程度较好,但是YAML写法更加简洁且可以添加注释,因此最推荐的就是位于C位的YAML文件格式。

数据库管理

为了便于测试数据的统一管理,以及考虑到数据持久化的问题,可以将测试数据存储在数据库中,并使用数据库管理系统(如:MySQL、SqlServer、Oracle等)来管理和维护数据,测试脚本可以使用SQL查询语句来检索数据,进一步降低了脚本和数据的耦合性。

例如:对于一些基础数据,如电商网站的商品信息,此类数据往往基数较大,且本身更新频率较低,可将其存储放到数据库中做持久化。

数据平台

通过专门的数据池和造数工厂来生产和管理测试数据。所谓造数工厂就是通过调用应用程序的方法来产生数据,这些应用程序一般是专门的测试平台。通过此类造数据平台,可以帮助测试人员有效地管理测试数据,帮助测试人员创建、编辑、删除和查找测试数据。同时,测试人员可以根据测试数据的特定属性,如日期范围、类型等,对测试数据进行分类和组织。

这种方式对测试人员的技能要求较高,需要具备前端、后端、运维等相关知识。

综述

总之,管理测试数据是自动化测试过程中非常重要的一部分。

测试人员应该选择最合适的方式来管理测试数据,并确保测试数据的准确性、可靠性和保密性等。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

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

相关文章:

【软件测试】自动化测试如何管理测试数据

前言 在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高&#…...

Llama 3-V: 比GPT4-V小100倍的SOTA

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模…...

Anaconda安装配置

Anaconda下载: 网盘下载:https://pan.quark.cn/s/c5663477ccef 配置环境变量: 以管理员身份运行命令提示符 setx /M PATH "%PATH%;C:\ProgramData\anaconda3;C:\ProgramData\anaconda3\Scripts;C:\ProgramData\anaconda3\Library\bi…...

全面理解渗透测试

揭秘网络安全的秘密武器:全面理解渗透测试 在数字化时代,网络安全已成为人们关注的焦点。网络攻击和数据泄露事件频发,给个人、企业和国家带来了巨大的损失。为了应对这一挑战,渗透测试作为一种重要的网络安全评估手段&#xff0…...

「网络编程」基于 UDP 协议实现回显服务器

🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! 实现回显服务器 🍉socket api🍉回显服务器🍌实现🥝服务器🥝客户端 &#x1f3…...

云数融合与大数据技术在日常生活中的创新应用探索

前言 移动云模型服务产品在中国移动旗下主要包括云计算、大数据、人工智能等服务,它依托广泛的算力资源(4N31X)、丰富的网络接入资源和高品质云专网,实现算网端资源一站式开通,构建企业级一体化解决方案。 文章目录 前言云计算的日常应用智…...

ETCD 备份与还原

安装etcdctl 准备看下etcd如何命令行操作,才发现,主机上,只用kubeadm拉起了etcd,但没有etcdctl命令。 # sudo docker ps -a | awk /etcd-master/{print $1} c4e3a57f05d7 26a11608b270 836dabc8e254 找到正在运行的etcd&#xf…...

LeeCode 1787 DP

题意 传送门 LeeCode 1787 使所有区间的异或结果为零 题解 任一个元素都至多对 k k k个长度为 k k k的区间产生影响,故难以直接依次处理每一个元素。 观察到满足条件的数组中模 k k k意义下索引相等的各个元素相同,故可以依次处理每一个同余类。 d p…...

如何有效屏蔽手机上的骚扰电话20240530

如何有效屏蔽手机上的骚扰电话 引言 最近,我的手机经常接到954开头的7位数字座机电话,这些骚扰电话让我非常困扰。由于我经常点外卖,无法屏蔽所有陌生号码,因此需要一个既能屏蔽特定前缀的骚扰电话,又不影响日常生活…...

Linux CGroup资源限制(概念限制进程CPU使用)

Linux CGroup资源限制(详解) 最近客户认为我们程序占用cpu过高,希望我们限制,排查之后发现是因为程序频繁gc导致,为了精细化、灵活的的限制,想到了使用Linux CGroup。 0 前置知识 ①概念及作用 官网&#…...

Latex中标注通讯作者

** 直接使用脚注,不用添加宏包 多个同地址的并列,建议加点空格,好看一些 ** \title{xxxxxxxxxxxxxxxxxxx}\author{xxxxxxxxxxxxxxxxxxx\footnote{Corresponding author} ,bbbbbbbbbbbbbbbbbbb}\address{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx…...

PyQt5开发笔记:1.环境搭建与界面美化

推荐视频教程: https://www.bilibili.com/video/BV1LT4y1e72X?p23&vd_source7ab611f3afb3d469faad93d3996f99ba 一、打开网址,点击下载 https://build-system.fman.io/qt-designer-download 下载后,点开exe 不推荐:http…...

公派/自费访问学者申请出国访学的常见问题解答(下)

06、学术背景和研究成果要求? 访学是面向学术单位和企事业单位开放的。 针对学术单位,比如高校与科研院所,学科内涉及的论文发表,课题研究,专利,著作,含金量较高的奖项等背景都是国外比较看重…...

完全指南:C语言学习资源汇总

C语言是编程学习的基石,无论是为了职业发展还是个人兴趣,掌握C语言都是技术生涯的重要一步。为了帮助初学者和有经验的程序员更好地学习和深化对C语言的理解,我们汇总了一系列优秀的书籍和在线资源。这些资源将帮助你从基础知识到高级概念&am…...

Kubernetes——Ingress详解

目录 前言——Service策略的作用 1.外部访问方案 2.使用场景和限制 2.1NodePort 2.2LoadBalancer 2.3externalIPs 2.4Ingress 3.Ingress如何实现对外服务 4.LB和Ingress结合起来实现对外服务的过程 一、Ingress 1.定义 2.组成 3.工作原理 4.总结 二、部署Nginx-I…...

反射、类加载、静态代理,jdk动态代理,cglib代理

一、 反射 反射是在程序运行状态下,动态获取类的结构(属性,构造器,方法,注解),动态的创建类对象然后调用类中的属性方法。反射的起源Class,Class中包含类反射要使用的API 获取Class的…...

MySQL Hints:控制查询优化器的选择

码到三十五 : 个人主页 MySQL Hints是优化数据库查询性能的一种强大工具。它们允许开发者在SQL查询中嵌入指令,以影响MySQL优化器的决策过程。在某些情况下,优化器可能无法选择最佳的查询执行计划,这时我们可以使用Hints来引导优化…...

【TB作品】msp430g2553单片机,OLED,PCF8591,ADC,DAC

硬件 OLED PCF8591 /** OLED* VCC GND* SCL接P2^0* SDA接P2^1*//** PCF8591* VCC GND* SCL接P1^4* SDA接P1^5*//* 板子上按键 P1.3 *//* 单片机ADC输入引脚 P1.1 *//* 说明:将PCF8591的DAC输出接到单片机ADC输入引脚 P1.1,单片机采集电压并显示 */功能…...

C#WPF数字大屏项目实战10--不良指标分页

1、区域划分 2、区域布局 3、视图模型 4、控件绑定 5、运行效果 走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,动动你的金手指,财务自由...

数字塔问题

#include<iostream> using namespace std; //从下向上得到最优值 void dtower(int a[][100],int s[][100],int n) {for(int in; i>1; i--){for(int j1; j<i; j){if(in)s[i][j]a[i][j];else{int ts[i1][j];if(t<s[i1][j1])ts[i1][j1];s[i][j]a[i][j]t;}}} } void…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...