TestDataLake在提升测试效能方面的实践

目录

1.背景

2.预期目标

3.系统设计和实现

3.1系统功能组成

3.2 数据智能生成

3.3 接口遍历测试

4.应用效果和收益

5.后续规划


1.背景

随着软件开发的迅速发展,测试数据管理变得越来越复杂。手动创建测试数据需要耗费大量时间和精力,同时容易出错。若缺乏测试数据,则会导致测试结果不够全面,甚至可能在线上环境中引发问题,从而给软件产品带来质量风险。因此,如何生成大量、真实、正确的测试数据成为了测试人员和研发人员所关心的重要问题。

在业务数据较为简单、常规的项目中,手动编写少量测试数据来跑完用例可能并没有太大问题。但是在接口性能测试和接口遍历测试时需要大量的测试数据,以确保测试结果的覆盖度和全面性。而且,在垂直行业领域中,业务数据往往具有特定的数据结构和约束条件。如果依赖手工创建测试数据或通过编写脚本生成数据,有如下弊端:1) 花费时间;2) 容易出错; 3)覆盖度不够,且缺乏完整性;4) 缺乏可维护性。

为解决这些问题,许多公司开始转向自动化测试数据生成。通过程序或脚本来快速生成符合特定业务场景的测试数据。这种方法相比手动创建测试数据更加高效。

然而,自动化测试数据生成也存在着一些问题和挑战。

需要考虑业务场景:为了生成真实的测试数据,需要对业务场景有充分的理解和掌握。否则,生成的测试数据可能不符合实际业务需求。

维度成本高:虽然自动化测试数据生成可以提高测试效率和准确性,但是针对具体业务测试数据生成工具需要一定的开发和维护成本。

为了解决这些痛点,TestDataLake应运而生,将复杂的测试数据准备工作简化为可视化的过程,是一种非常有效的数据管理工具,可以帮助测试人员快速、准确地生成符合预期的测试数据,并且可以提高测试效率和测试质量。

2.预期目标

为了帮助测试人员快速、准确地生成符合预期的测试数据,并降低脚本生成测试数据的成本,TestDataLake 目标是可以方便地生成覆盖度高、全面和真实的测试数据,用于日常的功能测试、性能测试和接口遍历测试。具体包括:

1)低成本、快速地造出高可用测试数据;

2)保证测试数据的覆盖度、全面性和真实性;

3) 建立业务字典库和通用数据字典库,确保测试数据的时效性和准确性,并且可以灵活扩展业务字典;

4)智能化的依赖关系设计,轻松地从不同的数据字典中抽取字段,并组合成所需的测试数据。

3.系统设计和实现

TestDataLake具有多种功能模块,包括数据模型管理、数据智能生成模块、预览及导出模块、接口遍历测试、接口遍历报告、业务数据查询、数据源管理、数据字典维护等。这些功能模块可以为测试人员和研发人员快速地创建高可用测试数据,提高测试效率和节约测试成本。同时,这些功能模块还可以保证测试数据的覆盖度、全面性和真实性,建立业务字典库和通用数据字典库,确保测试数据的时效性和准确性,并且可以灵活扩展业务字典。最重要的是,可视化数据池平台提供了智能化的依赖关系设计功能,可以轻松地从不同的数据字典中抽取字段,并组合成所需的测试数据,大大提高了测试数据生成的质量和准确性,为开发和测试提供了有力的支持。

图片

图1 TestDataLake系统组成图

3.1系统功能组成

数据模型管理和数据智能生成模块是TestDataLake提供的核心功能,数据模型管理以直观的可视化界面为用户提供了智能化的依赖关系设计功能。可以轻松地从不同的数据字典中抽取字段,灵活设定数据之间的依赖关系,并组合成所需的测试数据。这样,用户可以避免繁琐的手工编写测试数据工作,同时也可以提高测试数据的质量和准确性。数据智能生成模块可以根据不同的测试需求,自动化生成符合要求的测试数据。该功能模块内置了多种数据生成策略,如随机生成、序列生成、枚举生成、关联数据生成等。这些策略可以根据测试数据的需求进行配置,以产生更加符合实际场景的测试数据,并大大提高测试效率和节约测试成本。

预览及导出模块可帮助用户直观地查看和验证测试数据的正确性和完整性。用户可在该模块中对生成的测试数据进行预览,并可按所需选择导出数据的格式,例如Excel、CSV、SQL、JSON等。以方便后续在其他系统中使用。

接口遍历测试基于智能数据生成的结果,实现全面覆盖的接口测试。可帮助用户发现系统接口中的潜在问题和漏洞,全面测试系统的接口功能,并根据测试结果生成相应的报告。该功能模块可以尽可能地覆盖到所有场景,包括正常情况、异常情况以及边界情况等。过去,测试人员需要准备大量的测试用例和脚本来进行测试,这是一项繁琐且耗费时间的任务。现在,在TestDataLake的帮助下,利用智能数据生成的数据作为接口遍历的数据源,测试团队可以更好地管理测试数据,并提高接口遍历测试的效率和准确性,从而提高系统的稳定性和可靠性。在接口遍历测试中,断言是非常关键的一步。通过断言,测试人员可以验证每个接口是否按照预期工作,并找到可能存在的问题。为了简化测试人员手动编写断言代码的工作量,TestDataLake提供了常见的断言模板示例,进一步提升了测试的效率和准确性。

日常工作中,产品运营人员及测试人员查询数据成本很高,常用业务数据查询正是为了解决这个痛点。基于建立的业务数据池,可方便用户快速查询和使用常用的业务数据。该功能模块支持自定义查询条件,并提供多种查询方式和结果展示方式,以帮助用户更快地查找和使用数据。

数据源管理可方便地连接和管理各种数据源,例如数据库、API等。数据字典维护可帮助用户建立业务字典库和通用数据字典库,灵活地扩展业务字典,并根据需要添加新的数据字典,并对不同类型的数据进行分类和归档。数据字典支持定期更新,以确保测试数据的时效性和准确性。

3.2 数据智能生成

 数据智能生成是可视化数据池平台核心的功能。它将复杂的测试数据准备工作简化为可视化的过程。可以轻松地从不同的数据字典中抽取字段,灵活设定数据之间的依赖关系,并组合成所需的测试数据。这样,用户可以避免繁琐的手工编写测试数据工作,同时也可以提高测试数据的质量和准确性。数据智能生成模块还可以根据预设的规则自动化生成大量数据来模拟用户请求,为接口遍历测试、接口压力测试等系统提供数据,减轻了测试数据准备工作量,从而便于对系统的稳定性和性能进行验证。整体业务流程如图2所示。

图片

图2 TestDataLake业务流程图

下面来介绍一下数据智能生成的流程。只需点击新增,填写易于理解的名称和用途即可创建指定环境的数据模型。在创建好的数据模型中,您可以轻松指定要生成的字段信息以满足不同场景下的需求。该工具支持使用频率较高的业务字典,如品牌车系车型城市经销商和顾问等,让您快速生成符合要求的测试数据。例如生成一份包含车系ID、车型名称、店铺ID和店铺名称的测试数据,其中店铺和车系字段存在依赖关系,只需要3分钟即可完成。

图片

图3 数据模型字段信息映射

通过智能化的依赖关系设计,省去了以往人工造测试数据时关联自断的复杂工作量。

图片

图4 数据模型字段依赖关系维护

配置好所需要的字段信息后,您可以通过预览功能实时生成少量数据来确认这些数据是否符合预期。确认数据无误后,就可以生成大量测试数据,并将数据导出为Excel格式,方便您在接口压力测试、接口遍历测试及其它系统中进行导入和使用。

图片

图5 数据模型生成数据预览

3.3 接口遍历测试

拥有了更多更真实的测试数据,TestDataLake在智能数据生成的基础上,帮助测试团队轻松实现接口遍历测试。为了保证接口遍历测试的效果,需要覆盖到所有的场景,测试人员必须准备大量的测试用例和脚本,这是一项繁琐且耗费时间的任务。TestDataLake将智能数据生成的数据作为接口遍历的数据源,帮助测试团队更好的管理测试数据,并提升接口遍历测试的效率和准确性。当我们将前面生成的数据模型作为接口测试的数据源时,系统支持属性名智能提示,从而方便将接口输入参数与模型中的属性名对应。可以轻松的完成输入参数的赋值工作。

图片

图 6 接口遍历任务维护界面

在接口遍历测试中,断言是非常关键的一步。系统提供了常见的断言模板,测试人员可以根据实际情况进行修改和定制,简化了测试人员手动编写断言代码的工作量。

系统还提供了一个直观明了的接口遍历测试报告,直观的柱状图清晰地展示出结果的分布情况,如成功率失败率,还提供了详细的测试结果列表,测试人员可以查看每个用例的执行状态,请求和响应信息等,帮助测试和研发人员快速定位问题并及时解决,提高测试效率和质量。

图片

图7 接口遍历测试报告

4.应用效果和收益

TestDataLake以数据为核心的解决方案,可以帮助测试人员管理和维护测试数据,提高测试效率和质量。根据不同的测试需求,可以快速地生成符合实际场景的测试数据,避免了手动编写测试数据的繁琐工作,提高了测试效率和节约了测试成本。以往测试人员准备1次性能测试所需要的数据,大约需要1小时,甚至半天时间,如今只需要几分钟就可以实现,效率提升10余倍。接口遍历测试以往由于接口数量庞大,需要花费很多时间和精力准备测试数据和脚本,才能完成遍历测试。这需要测试人员具备一定的编程技能和经验。苦于门槛和成本比较高,一直无法广泛使用。TestDataLake在智能数据生成的基础上,帮助测试团队轻松实现全面覆盖的接口遍历测试,对于保证产品质量和用户满意度非常重要。

5.后续规划

TestDataLake已经在接口压力测试和接口遍历测试方面,有效地提高了测试效率和质量。然而对于一些复杂的业务流程需要定制,比如,在C端生成订单数据,并在B端跟踪的整体复杂流程。目前需要根据业务流程编写相关代码。是否可以通过灵活编排实现个性化的数据生成流程,满足不同的测试需求呢?后续我们将重点研究灵活编排业务流程的实现方案,进一步提高测试效率和系统的适用性。


以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

【Docker】docker镜像+nginx部署vue项目:

文章目录 一、文档:二、打包vue项目:三、配置nginx:四、配置Dockerfile:五、构建镜像:六、运行容器:七、最终效果: 一、文档: 【1】菜鸟教程:https://www.runoob.com/do…

【云原生】深入掌握k8s中Pod和生命周期

个人主页:征服bug-CSDN博客 kubernetes专栏:kubernetes_征服bug的博客-CSDN博客 目录 1 什么是 Pod 2 Pod 基本操作 3 Pod 运行多个容器 4 Pod 的 Labels(标签) 5 Pod 的生命周期 1 什么是 Pod 摘取官网: Pod | Kubernetes 1.1 简介 Pod 是可以在 …

linux Ubuntu 更新镜像源、安装sudo、nvtop、tmux

1.更换镜像源 vi ~/.pip/pip.conf在打开的文件中输入: pip.conf [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple按下:wq保存并退出。 2.安装nvtop 如果输入指令apt install nvtop报错: E: Unable to locate package nvtop 需要更新一下apt&a…

mysql8配置binlog日志skip-log-bin,开启、关闭binlog,清理binlog日志文件

1.概要说明 binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复,增量备份,主主复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但是对于运维或者架…

【2023】XXL-Job 具体通过docker 配置安装容器,再通过springboot执行注册实现完整流程

【2023】XXL-Job 具体通过docker 配置安装容器,再通过springboot执行注册实现 一、概述二、安装1、拉取镜像2、创建数据库3、创建容器并运行3、查看容器和日志4、打开网页 127.0.0.1:9051/xxl-job-admin/ 三、实现注册测试1、创建一个SpringBoot项目、添加依赖。2、…

【C语言进阶】数据的存储----整型篇

​ 🍁 博客主页:江池俊的博客 💫收录专栏:C语言—探索高效编程的基石 💻 其他专栏:数据结构探索 ​💡代码仓库:江池俊的代码仓库 🎪 社区:GeekHub 🍁 如果觉得…

nuxt脚手架创建项目

在初始化时遇到一个依赖找不到的问题,记录一下,如有遇到同样问题的小伙伴,希望能给你们一点指引。 从安装脚手架开始,首先 一:安装nuxt脚手架 1. C盘全局安装: npm i -g create-nuxt-app 安装后可creat…

机器学习深度学习——卷积神经网络(LeNet)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——池化层 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮助 卷积神…

Pandaer的iPhone手机壳

哇塞,Pandaer的设计太棒了!手机壳的花样多到让我眼花缭乱,好多系列设计都很有意思,让人有集齐的冲动。我最近入手了几个iPhone的手机壳,它有亮色和透明的款式,亮色的壳内部也是亮的,因为手机壳全…

Pytorch Tutorial【Chapter 2. Autograd】

Pytorch Tutorial 文章目录 Pytorch TutorialChapter 2. Autograd1. Review Matrix Calculus1.1 Definition向量对向量求导1.2 Definition标量对向量求导1.3 Definition标量对矩阵求导 2.关于autograd的说明3. grad的计算3.1 Manual手动计算3.2 backward()自动计算 Reference C…

Java学习笔记

JVM JVM是java虚拟机,由于不同的客户端(如手机、笔记本、台式)有不同的芯片,同一段代码会被翻译成不同的机器指令,所以在没有JVM的时候,对于这些不同的客户端,需要编写不同的代码,就…

uniapp微信小程序 401时重复弹出登录弹框问题

APP.vue 登陆成功后,保存登陆信息 if (res.code 200) {uni.setStorageSync(loginResult, res)uni.setStorageSync(token, res.token);uni.setStorageSync(login,false);uni.navigateTo({url: "/pages/learning/learning"}) }退出登录 toLogout: func…

C高级--day4(wc指令、case...in、while循环、for循环、select..in、break、continue、shell中的函数)

#!/bin/bash function fun() {uidid -u $namegidid -g $nameecho $uid $gid } read name retfun $name echo $ret

Detector定位算法在FPGA中的实现——section1 原理推导

关于算法在FPGA中的实现,本次利用业余的时间推出一个系列章节,专门记录从算法的推导、Matlab的实现、FPGA的移植开发与仿真做一次完整的FPGA算法开发,在此做一下相关的记录和总结,做到温故知新。 这里以Detector在Global Coordina…

ORCA优化器浅析——CFunctionProp function properties

CFunctionProp CFunctionProp代表了function properties函数属性,主要由function stability函数易变性( enum EFuncStbl { EfsImmutable, /* never changes for given input */ EfsStable, /* does not change within a scan */ EfsVolatile, /* can ch…

Air32 | 合宙Air001单片机内部FLASH读写示例

Air32 | 合宙Air001单片机内部FLASH读写示例 代码已经通过测试,开发环境KEIL-MDK 5.36。 测试代码 void FLASH_RdWrTest(void) {uint32_t Address;uint32_t PageReadBuffer[FLASH_PAGE_SIZE >> 2];uint32_t PageWriteBuffer[FLASH_PAGE_SIZE >> 2];mem…

【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动,平动,转动4【数理知识】向量数乘,内积,外积,matlab代码实现5【数理知识】协…

java+springboot+mysql日程管理系统

项目介绍: 使用javaspringbootmysql开发的日程管理系统,系统包含超级管理员、管理员、用户角色,功能如下: 超级管理员:管理员管理;用户管理;反馈管理;系统公告;个人信息…

.Net6 Web Core API --- AOP -- log4net 封装 -- MySQL -- txt

目录 一、引入 NuGet 包 二、配置log4net.config 三、编写Log4net封装类 四、编写日志记录类 五、AOP -- 拦截器 -- 封装 六、案例编写 七、结果展示 一、引入 NuGet 包 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore MySql.Data ---- MySQL…

K8S系列文章之 开源的堡垒机 jumpserver

一、jumpserver作为一款开源的堡垒机,不管是企业还是个人,我觉得都是比较合适的,而且使用也比较简单。 二、这里记录一下安装和使用过程。 1、安装,直接docker不是就行 version: 3 services:xbd-mysql:image: mysql:8.0.19restart…