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

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

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

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

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

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

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

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

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

NineData 数据生成介绍

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

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

图片

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

图片

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

图片

图片

实操示例

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

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

图片

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

图片

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

图片

图片

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

图片

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

图片

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

图片

总结

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


http://www.kler.cn/news/365068.html

相关文章:

  • 海港[NOIP2016]
  • 什么是代码注入,如何防御?
  • 开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现推理加速的正确姿势-Gradio
  • 模拟信号采集显示器+GPS同步信号发生器制作全过程(焊接、问题、代码、电路)
  • 基于Spring Boot的宿舍管理系统设计与实现(源码+定制+开发)宿舍信息管理平台、智能宿舍系统开发、学生宿舍管理平台设计、宿舍入住与信息管理
  • 反编译工具jadx
  • 多线程学习篇五:wait / notify / notifyAll
  • JSON Web Token (JWT)的简单介绍、验证过程及令牌刷新思路
  • 植物健康,Spring Boot来助力
  • 如何训练 RAG 模型
  • axios取消请求逻辑
  • html+css+js实现Badge 标记
  • Mysql树形结构表-查询所有父级数据(模糊查询)
  • Android14 和android12 在锁屏界面Keyguard输错5次密码后倒计时30秒时重启手机不显示倒计时
  • SOLIDWORKS正版软件的渠道分别是哪些,如何选择?
  • 使用RNN、LSTM和Transformer进行时间序列预测
  • AJAX 实例:深入解析与实战应用
  • 代码随想录算法训练营Day09 | 151.翻转字符串里的单词、卡码网:55.右旋转字符串、28. 实现 strStr()、459.重复的子字符串
  • AUTOSAR CP 中 BswM 模块功能与使用介绍(2/2)
  • python主流框架Django:ORM框架关联查询与管理器
  • 关于Linux自带的python2.6.6升级到2.7.5版本步骤详解
  • 在银河麒麟系统中Qt连接达梦数据库
  • Python爬虫:自动化获取商品评论数据
  • 纯血鸿蒙的未来前景
  • 7款视频转换器大测评!哪款是最适合你的视频格式转换器?
  • spring boot yml文件中引用*.properties文件中的属性