如何快速生成大量有意义的测试数据?

如何获取 MySQL 的测试数据,这是个很经典的问题,在开发、测试和性能优化的各个环节中,获取合适的测试数据都是必不可少的。MySQL 官方还特地提供了示例库 employees,用于测试用途,但 employees 并不是万能的,在某些情况下,生成更接近自己业务场景的测试数据才更加有效。

笔者以前生成测试数据,都是用的 sysbench,又快又好用,在性能测试场景下非常有效。但它也有缺点,那就是 sysbench 生成的都是【无意义】的字符与数字的组合,基本上只适合做性能压测。

那么测试数据为什么需要【有意义】呢?我们一起来看看:

  • 性能测试不仅仅是读写速度:在真实的业务环境中,数据库的性能不仅和数据量、查询速度有关,还和数据的分布、索引的使用密切相关。如果测试数据和真实数据相差太远,比如 sysbench 生成的随机字符串和实际业务中有逻辑规律的数据,性能测试的结果可能会与实际使用场景不符。

  • 功能测试和业务逻辑验证需要真实感:许多系统测试需要验证业务逻辑的正确性。无意义的数据无法全面验证系统在各种输入情况下的表现。

  • 数据关联性:许多业务系统中的数据存在关联性,比如一个电商平台的用户表和订单表之间的关系。生成测试数据时,如果只用随机数据,那么这些关联性会很难得到体现,测试时也无法验证系统是否能正确处理这些数据之间的关系。

长篇大论总结为一句话:根据自身业务逻辑创建的有意义的测试数据才能让测试结果更加可靠。这样一来,从网上获取开源数据集,或者用 sysbench 创建随机字符串就都无法满足了,我们需要一种可以根据自身业务逻辑,来自动生成真实测试数据的方法,那就不得不提一提 NineData 最新推出的数据生成功能了。

NineData 数据生成介绍

NineData 支持在数据库中自动生成符合特定业务场景的随机数据,用于模拟实际生产环境中的数据情况,帮助用户在不使用真实数据的情况下,进行功能测试、压力测试以及其他验证工作。

预定义的仿真规则:内置了 42 条预定义仿真规则,覆盖大部分业务场景。除此之外,支持创建自定义仿真规则。

图片

生成数据量可控:支持 1 ~ 1000万条测试数据生成,可通过 SQL 开发规范进行限制。

图片

自动关联相关字段:通过识别规则,仿真规则将自动关联对应的数据库字段,无需手动关联。

图片

图片

实操示例

那么我们就直接来试一下,为 account 表增加 1000 条测试数据。

1. 在数据生成任务页面,选择需要生成测试数据的数据源、库,以及表,然后为每个字段配置仿真规则

图片

2. 单击右侧的配置算法可以为仿真规则配置更加细节的选项。

图片

3. 左侧的生成数据量中可以配置需要生成多少条数据。单击右侧的预览还可以预览数据生成效果,确认配置算法是否符合预期。

图片

图片

4. 如果需要配置外键逻辑,为有业务关联性的两张表创建测试数据,可以使用外键约束规则,为外键列设置关联的主键值,这样,程序会从关联表的主键中随机获取数据作为当前表外键列的值。

图片

5. 提交后就可以执行了。

图片

6.执行完成后直接看效果。

图片

总结

可以看到通过 NineData 数据生成功能生成的测试数据非常符合真实场景,乍一眼根本难辨真假。有了这个法宝,企业能够快速生成大量真实、有意义的测试数据,从而加速开发进程,优化系统测试效果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为您的 WordPress 网站打造完美广告布局 A5广告单元格插件

一个为 WordPress 网站量身定制的强大工具,它将彻底改变您展示广告的方式 灵活多变的布局设计 A5 广告单元格插件的核心优势在于其无与伦比的灵活性。无论您是想要创建整齐的网格布局,还是希望打造独特的不规则设计,这款插件都能满足您的需求。 自定义网格数量:从 2…

vue 页面导出gif图片 img 导出gif 超简单~ 可修改播放速度

1.首先需要新建一个文件件 新建gif文件夹。这两个文件在文章最后面需要可自提 2.出gif分为两种情况 第一种情况 页面是img标签,直接导出图片作为gif 第二种情况 页面是div标签,需要导出div里面的图片作为gif 2.1页面是img标签,直接导出图…

博弈论:博弈类型空间集合;三层博弈拓展式;

目录 博弈论:博弈类型空间集合 θ(Dss-1=1 )就是博弈类型空间集合; 一、博弈的基本要素 二、博弈的主要类型 三、博弈类型空间集合的构建 三层博弈拓展式: 博弈论:博弈类型空间集合 这的博弈类型空间集合:指一方选择的策略,用符号进行表达:SDss-2(θDss-1=1) = …

手机玩使命召唤21:黑色行动6?GameViewer远程玩使命召唤教程

使命召唤21:黑色行动 6这个第一人称射击游戏,将于10月25号上线!如果你是使命召唤的老玩家,是不是也在期待这部新作?其实这个游戏不仅可以用电脑玩,还可以用手机玩,使用网易GameViewer远程就能让…

Golang | Leetcode Golang题解之第502题IPO

题目: 题解: func findMaximizedCapital(k, w int, profits, capital []int) int {n : len(profits)type pair struct{ c, p int }arr : make([]pair, n)for i, p : range profits {arr[i] pair{capital[i], p}}sort.Slice(arr, func(i, j int) bool {…

FileLink跨网文件摆渡系统:重构跨网文件传输新时代

在数字化浪潮的推动下,企业对于数据的高效利用和安全管理提出了前所未有的要求。面对不同网络环境间的文件传输难题,传统方法往往显得力不从心,不仅效率低下,还存在极大的安全隐患。而FileLink跨网文件摆渡系统的出现,…

http服务器的实现和性能测试

http服务器的实现 本文使用上一篇博文实现的epollreactor百万并发的服务器实现了一个使用http协议和WebSocket协议的WebServer。 完整代码请看我的github项目 1. 水平触发(Level Trigger)与边沿触发(Edge Trigger) 1.1 水平触发 水平触发是一种状态驱动机制。当文件描述符&a…

【学习AI-相关路程-mnist手写数字分类-python-硬件:jetson orin NX-自我学习AI-基础知识铺垫-遇到问题(1) 】

【学习AI-相关路程-mnist手写数字分类-python-硬件:jetson orin NX-自我学习AI-基础知识铺垫-遇到问题(1) 】 1、前言2、先行了解(1)学习基础知识-了解jetson orin nx 设备(2)学习python&AI…

AUTOSAR_EXP_ARAComAPI的6章笔记(2)

☞返回总目录 相关总结:AutoSar AP CM实例说明符的使用方法总结 6.2 实例说明符的使用方法 一、InstanceSpecifier 的概念 InstanceSpecifier 是在 [3] 中定义的一个核心概念,它由符合特定模型元素绝对路径的模型元素 shortName 组成,表现…

自定义中文排序在Java中的实现与注意事项

目录 前言1. 基本知识2. 实战 前言 #1024程序员节 | 征文# 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 原先的Java中文…

Ubuntu(22.04)本地部署Appsmith

Ubuntu(22.04)安装Appsmith 简要介绍 Appsmith 是一个开源的低代码开发平台,旨在帮助开发者和非开发者快速构建定制化的内部应用程序和管理工具。通过直观的拖拽界面和丰富的预配置组件,Appsmith 让用户无需编写大量代码即可创建…

【C++】string类(2)

🥳个人主页: 起名字真南 🥳个人专栏:【数据结构初阶】 【C语言】 【C】 目录 引言1 模拟实现string类基本框架2 实现string类中的主要成员函数2.1 Push_Back 函数2.2 reserve 函数2.3 append 函数2.4 c_str 函数2.5 begin ,end 函数2.5 operator 函数2.6…

IDEA开发工具使用技巧积累

一、IDEA 工具设置默认使用maven的settings.xml文件 第一步:打开idea工具,选中 File ——> New Projects Setup ——> Settings for New Projects 第二步:先设置下自动构建项目这个选项 第三步:选中 Build Tools ——>…

word删除空白页 | 亲测有效

想要删掉word里面的末尾空白页,但是按了delete之后也没有用 找了很久找到了以下亲测有效的方法 1. 通过鼠标右键在要删除的空白页面处显示段落标记 2. 在字号输入01,按ENTER(回车键) 3.成功删除了!! PS…

Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容

介绍 在当今数据驱动的世界中,抓取动态网页内容变得越来越重要,尤其是像抖音这样的社交平台,动态加载的评论等内容需要通过特定的方式来获取。传统的静态爬虫方法难以处理这些由JavaScript生成的动态内容,Selenium爬虫技术则是一…

基于SSM大学校医院信息管理系统的设计

管理员账户功能包括:系统首页,个人中心,校医管理,用户管理,在线问诊管理,线上挂号管理,病例记录管理,系统管理 校医账号功能包括:系统首页,个人中心&#xf…

用Java爬虫API,轻松获取taobao商品SKU信息

在电子商务的世界里,SKU(Stock Keeping Unit,库存单位)是商品管理的基础。对于商家来说,SKU的详细信息对于库存管理、价格策略制定、市场分析等都有着重要作用。taobao作为中国最大的电子商务平台之一,提供…

uniapp 微信小程序分包操作

1. 在项目根目录创建一个新的目录,名称为分包名称 2. 打开manifest.json,选择源码视图,加入以下代码 "optimization" : {"subPackages" : true } 3. 在pages.json中,pages后面添加分包代码 "subPackag…

Linux基础命令(入门)

linux 用户 root 用户 一个特殊的管理帐户 也被称为超级用户 root已接近完整的系统控制 对系统损害几乎有无限的能力 除非必要,不要登录为 root 普通( 非特权 ) 用户权限有限 造成损害的能力比较有限 linux的哲学思想(优点&#xf…

【Canvas与图标】制作电脑桌面图标

【成图】 制成的三种图标&#xff0c;都是120*120的。 制作时观察的大图 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>desk…