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

自动化测试中,该如何高效管理测试数据?

今晚在某个测试群,看到有人问了一个问题:把测试数据放配置文件读取和放文件通过函数调用读取有什么区别?

当时我下意识的这么回答:数据量越大,配置文件越臃肿,放在专门的数据文件(比如excel,csv),方便针对性的维护。

乍看没毛病,但回头和人讨论这个问题的时候,就认真思考了一下这个问题,下面是我的一些思考和讨论的一些结果,仅供参考。。。

自动化测试过程中,现在大多都默认测试脚本与测试数据分离的设计,这样做的好处是:降低维护成本,迁移成本以及提高效率。

因此测试数据放在哪里,如何管理,不能一概而论。个人觉得应该从以下几方面来考虑:

1、业务场景

①、比如在UI自动化测试中,需要测试某个电商网站的各个业务模块,但前提是要用户登录。这个用来执行登录的测试账号数据往往是固定的,那么专门将

  一组username和password放在一个测试数据文件或者测试数据库中,这样就显得太笨重,耗时费力。将其写入测试脚本或者写入配置文件,直接引用效率会更高。

②、同样,测试电商网站,账号体系分为普通账号,会员账号,会员还分很多等级,有时候为了测试会员中心不同的账号展示的信息是否不同,就需要使用不同的

  等级的账号登录,这种场景下,可以将测试数据放在测试文件里(比如excel、csv),通过参数化的方式来循环读取,执行后续操作。

③、在API自动化测试中,比如针对restful风格的接口,它的域名相对来说都是固定的,只是不同接口的path不同,那么也可以将域名写入配置文件,

  测试过程中只需要将实例化的域名和path进行拼接即可,这样也省却了在测试数据文件中维护的成本,一定程度上提升了测试效率。

2、数据类型

测试数据也分不同类型,大概分为以下几种类型:

base-data:即基础数据,比如电商网站的商品信息、SKU,比如物流公司的仓储管理等,这类数据往往基数比较大,可以视为持久层,储存在DB中;

test-data:测试数据,根据业务场景不同,数据无论量级还是变更频次也不同,基于测试脚本与数据分离的概念,可放在专门的测试文件中,比如excel、csv;

ephemeral-data:临时数据,即使用一次的数据,这种类型的数据可以用临时文件存储(比如dat、csv等)格式,然后进行参数化读取,或者直接写入脚本中;

3、数据量级

①、还是电商网站的某个场景,需要先执行登录,登录的账号比如是专门配置的一个测试账号,相对固定,那么将测试账号写入测试脚本也无可厚非。

  不过我本人不喜欢将测试数据直接写入脚本,这种情况我会写入配置文件,然后实例化调用,这种情况就需要根据个人习惯来设计,没有固定的套路;

②、数据量级在几十——几百上千之间,这种时候,可以写入excel文件进行存储管理,但是excel的局限在于其本身目前最大支持65500+行的数据存储,

  而且只支持单事务,如果需要多线程读取,就会变成瓶颈。

③、csv文件,结构简单、通用,可以和excel进行转换,可以减少存储文件size,且具备简单的安全性,可以在一定程度上替代excel成为数据存储文件。

  我本人目前在大多数场景下也是使用csv类型的文件进行测试数据存储管理;

④、当测试数据超过一定量级,比如性能测试中,如果要执行并发测试或者稳定性测试,那么所需测试数据量级就很大,这时使用excel或者csv就会变得很不方便。

  无论是从维护的成本还是便捷性考虑,都应该选择利用DB或其他高效的管理方式来存储和管理测试数据;

4、使用频次

测试数据的重用频次不同,也需要选择不同的存储方式,比如:

①、once:只使用一次的测试数据,那么只需要写入临时文件,用完作废或者删除即可;

②、often:即经常使用的测试数据,应根据数据量级,使用场景,数据类型选择合适的存储管理方式;

③、alway:可以理解为base-data或者持久数据,这种类型的数据因为其本身更新频次很低,或者数据量级较大,一般存储在DB中是比较好的一种管理方案。

综上所述,测试数据的存储和管理,没有固定的套路,需要结合业务场景,使用频次,数据类型和数据量级来综合考虑,设计合理高效的方案,才是正确的方式!

内容仅供参考,如有更好的建议,希望评论提出,谢谢。。。

B站2023年最详细的python自动化测试框架全栈测试开发技术入门到精通教程

相关文章:

自动化测试中,该如何高效管理测试数据?

今晚在某个测试群,看到有人问了一个问题:把测试数据放配置文件读取和放文件通过函数调用读取有什么区别? 当时我下意识的这么回答:数据量越大,配置文件越臃肿,放在专门的数据文件(比如excel&am…...

Qt中项目A调用另一个项目B的方法汇总

在开发一个软件项目时候,当涉及到一个模块,已经有过类似的项目开发,为了避免重复开发,涉及到在该项目的工程中调用已开发的项目作为子项目,有很多种方法。 一、将项目编译成库文件然后进行调用 调用库文件通常有两种…...

【项目精选】基于Javaee的影视创作论坛的设计与实现(视频+论文+源码)

点击下载源码 基于Javaee的影视创作论坛的设计与实现主要用功能包括: 首页推荐、用户管理、影片管理、评论管理、 预告片管理、海报管理、公告管理、数据检索、用户注册与登录等等功能、统结构如下 (1)后台管理: 管理模块:管理员…...

深入【虚拟列表】动态高度、缓冲、异步加载... Vue实现

前言🎀 在前文中我们了解到: 1.在某种特殊场景下,我们需要将 大量数据 使用不分页的方式渲染到列表上,这种列表叫做长列表。 2.因为事件循环的机制,一次性大量的渲染耗时较长,并且渲染期间会阻塞页面交互…...

Windows 11 + WSL(ubuntu 20.04) + CLion(2022.3) 编译OpenJDK12

编译OpenJDK12 目录编译OpenJDK12前言一、下载OpenJDK源码二、编译OpenJDK参考https://openjdk.org/groups/build/doc/building.html1:安装编译所需的组件2:执行编译命令3:验证编译结果三、在Clion中调试OpenJDK源码1:Clion中配置…...

Freemarker 语法精粹

文章目录说明基本用法宏加载宏定义宏文件写法import和include区别内置方法注册全局共享变量处理空值和默认值获得hashmap的键值从map中拿对象遍历Map其它小技巧迁移事项参考说明 Freemarker 还存在我的一些老项目中,比起前端框架,自有它的简便之处&…...

使用Benchto框架对Trino进行SQL性能对比测试

有时需要对魔改源码前后的不同版本Trino引擎进行性能对比测试,提前发现改造前后是否有性能变差或变好的现象,避免影响数据业务的日常查询任务性能。而Trino社区正好提供了一个性能测试对比框架:GitHub - trinodb/benchto: Framework for runn…...

Redis之哨兵模式

什么是哨兵模式? Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是Redis高可用解决方案,哨兵可以监视一个或者多个redis master服务,以及这些master服务的所有从服务。 某个master服务宕机后,会把这个master下…...

Selenium自动化测试Python二:WebDriver基础

欢迎阅读WebDriver基础讲义。本篇讲义将会重点介绍Selenium WebDriver的环境搭建和基本使用方法。 WebDriver环境搭建 Selenium WebDriver 又称为 Selenium2。 Selenium 1 WebDriver Selenium 2 WebDriver是主流Web应用自动化测试框架,具有清晰面向对象 API&…...

蓝桥杯模块学习17——AT24C02存储器(深夜学习——单片机)

一、硬件电路:1、引脚功能:(1)A0-A2:决定不同设备的地址码:(2)WP:写保护二、通讯方式(IIC协议)通讯方式与PCF8591相同,可参考以下文章…...

netty

Netty的介绍Netty是异步的(指定回调处理)、基于事件驱动的网络应用框架,用于快速开发高性能、高可靠性的网络IO程序。Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景,分布式节点远程调用中Netty往往作为R…...

Django项目部署-uWSGI

Django项目部署-uWSGIDjango运维部署框架整体部署架构web服务器与web应用服务器的区别部署环境准备安装python3安装mariadb安装Django和相关模块Django托管服务器uWSGI使用uWSGI配置使用Django运维部署框架 整体部署架构 操作系统: Linux 。优势:生态系统丰富&…...

jhipster自动生成java代码的方法

一、前言 java springboot后台项目用到了jpa查询数据库,还用到了jhipster,这个东西可以自动生成基础的Controller、Service、Dao、JavaBean等相关代码,减少重复开发。 在此总结下使用方法。 二、jhipster自动生成java代码的方法 1.需要先…...

LeetCode 82. 删除排序链表中的重复元素 II

原题链接 难度:middle\color{orange}{middle}middle 题目描述 给定一个已排序的链表的头 headheadhead , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,…...

tensorflow gpu环境安装

查看本电脑支持的最高cuda版本:nvidia-smi在~/.condarc修改conda 源:channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/- https://mirrors.tuna.tsinghua.edu.cn/…...

如何在现实场景中随心放置AR虚拟对象?

随着AR的发展和电子设备的普及,人们在生活中使用AR技术的门槛降低,比如对于不方便测量的物体使用AR测量,方便又准确;遇到陌生的路段使用AR导航,清楚又便捷;网购时拿不准的物品使用AR购物,体验更…...

操作系统-处理机调度

1.处理机调度的概念、层次1.1调度的基本概念制定某种规则来决定处理任务的顺序。1.2调度的三个层次高级调度(作业调度)中级调度(内存调度)进程的挂起态与七状态模型低级调度(进程调度)小结2.进程调度的时机…...

手机截图如何提取文字?

在当今信息爆炸的时代,图文并茂已经成为了一个广告宣传的常用方式。然而,图片中的文字信息往往难以获取,尤其对于那些需要快速获取信息的人们来说,阅读图片中的文字会是一项繁琐且费时的任务。现在,我们有一个好消息要…...

vue中复制内容

vue中复制内容vue2vue-clipboard2依赖项在main.js引入使用vue3vue-clipboard3依赖项引入使用更新于:2023-02-15vue2vue-clipboard2 依赖项 “vue”: “^2.6.11” “vue-clipboard2”: “^0.3.1” 在main.js引入 import VueClipboard from vue-clipboard2 Vue.us…...

MySQL CAST()函数用法

一、语法 expr:源数据,如字符串’China’。type:目标数据类型,例如CHAR。 cast(expr AS type)二、命令说明 将任何类型的值转换为具有指定类型的值。 CAST()函数通常用于返回具有指定类型的值,以便在WHERE&#xff…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...