news 2026/2/25 17:26:42

五大方法教你如何分分钟构造百万测试数据!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
五大方法教你如何分分钟构造百万测试数据!

在测试的工作过程中,很多场景是需要构造一些数据在项目里的,方便测试工作的进行,构造的方法有很多,难度和技术深度也不一样。本文提供方法供你选择。

在测试的工作过程中,很多场景是需要构造一些数据在项目里的,方便测试工作的进行。比如下面的场景:

  • 项目需要做性能测试,需要大量的数据

  • 就算是功能测试,比如测试搜索功能,需要有数据做搜索测试

  • 需要检查数据的一致性的检查的时候,也需要项目有大量的数据

  • 如果项目有一些统计表和图,需要测试数据统计正确性的时候,也需要构造海量的测试数据;

那么,测试如何快速的构造测试数据呢?

构造的方法有很多,难度和技术深度也不一样,可以根据数量级的不同可以采取不同的方法。

方法一:如果项目要求的数据不多,几十条或者十几条即可,可以手动页面操作构成

这种方法虽然原始,但是简单没有技术门槛,如果是少量的数据,手动操作也不太费时间。不过如果数据的数量级上来了,那么这种方法就不太靠谱了。

方法二:直接调用接口 批量发送接口请求

这种方法会比纯页面添加要快速一些,使用一个接口测试工具,比如Jmeter,postman的CSV的方法,批量读取数据发送接口请求,实现数据的构造;或者Python的requests库的都可以比较快的实现。

但是这种方法有一定的技术门槛,你必须熟练使用至少一款接口测试的工具。

而且还有一些功能接口要处理接口的依赖,或者有接口本地的一些bug阻塞或者性能瓶颈问题。

既然不管是页面操作还是接口操作,都是本质上把数据插入到数据库中,那我们是否可以直接去数据库插入数据呢?

答案是可以的。

方法三:直接使用sql insert 插入数据

使用使用SQL语句,比如:insert into tuser (username,phone) values ("tricy","13444444444")插入数据。

但是这种方法虽然是对数据库直接操作,奈何效率太低,一条一条的插入,所以这种方法在实际操作中是不可取的。

方法四:一次性从外部导入excel表格数据

第一步:本地电脑准备好一个excel表格,按照数据库的表的字段填入一行数据,然后在excel表格里进行下拉拖拽实现数据的快速复制。如下图:

然后保存好这个excel文件。

第二步:打开连接上MySQL数据库的Navicat,右键我们数据库的表,选择导入向导-->选择excel文件类型进行导入,具体步骤如下图所示:

完成导入操作后,数据库表里就会插入所有excel的数据。

然后这种方式,可以在excel表格手动拖拽复制出来千条数量级的数据,但是如果数据量更大,就也不太方便了。需要有更加高效的方法。

方法五:数据库的存储过程实现快速构建百万级的数据

存储过程其实就是数据库的编程,可以通过编程控制数据插入的次数。如下案例:

  1. drop procedure if exists proc_batch_insert; # 如果存在存储过程就先删除

  2. create procedure proc_batch_insert() # 创建存储过程

  3. begin

  4. declare i int; # 定义一个变量用来计数

  5. declare _name varchar(25); # 定义一个变量用来计数参数化用户名

  6. declare _phone char(11); # 定义一个变量用来计数参数化手机号码

  7. set i=1; # 设置计时器的初始值为1

  8. while i<=1000000 do # while循环控制插入数据的次数

  9. set _name = concat('tom-',i); # 拼接用户名,i为变化的保证用户名的差异性

  10. set _phone = 13000000000+i; # 拼接手机号码,i为变化的保证手机号码的差异性

  11. insert into tuser(username,phone) values(_name,_phone); # 插入数据

  12. set i=i+1; # 每次循环计时器加1

  13. end while;

  14. end

  15. call proc_batch_insert(); # 运行存储过程

方法六:Python代码实现构造百万的数据

如果有代码基础的同学,也可以使用Python代码编程实现这个过程:​​​​​​

  1. import random

  2. import string

  3. import pymysql

  4. # 数据库连接信息

  5. host = '139.224.61.195'

  6. user = 'root'

  7. port = 3307

  8. password = '123456'

  9. database = 'test'

  10. # 建立数据库连接

  11. connection = pymysql.connect(host=host, user=user,port=port, password=password, database=database)

  12. cursor = connection.cursor()

  13. # 构造百万数据

  14. batch_size = 10000 # 每批插入的数据量

  15. total_records = 1000000 # 总共需要生成的数据量

  16. # 获取当前表中最大的id值

  17. cursor.execute("SELECT MAX(id) FROM tuser")

  18. max_id = cursor.fetchone()[0] or 0

  19. for i in range(total_records // batch_size): #是整数除法,它计算出需要进行多少批次的数据生成和插入。

  20. # 生成批量数据

  21. batch_data = []

  22. for i in range(batch_size):

  23. max_id += 1

  24. user_id = max_id # 使用自增长方式生成唯一id

  25. username = ''.join(random.choices(string.ascii_lowercase, k=10))

  26. phone = ''.join(random.choices(string.digits, k=11))

  27. batch_data.append((user_id, username, phone))

  28. # 批量插入数据

  29. sql = "INSERT INTO tuser (id, username, phone) VALUES (%s, %s, %s)"

  30. cursor.executemany(sql, batch_data)

  31. connection.commit()

  32. # 关闭数据库连接

  33. cursor.close()

  34. connection.close()

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 19:14:29

SenseGlove R1外骨骼手套专为机器人遥操作设计

SenseGlove在远程操控人形机器人的领域带来了全新产品SenseGlove R1 触觉手套。它专为实现人形机器人手的无缝控制精心打造&#xff0c;集主动力反馈、精准力控制、毫米级手指跟踪精度以及振动触觉反馈等众多先进一身&#xff0c;为遥操作带来前所未有的触觉感知体验&#xff0…

作者头像 李华
网站建设 2026/2/24 18:49:28

Langchain-Chatchat如何实现问答结果的语音播报?

Langchain-Chatchat 如何实现问答结果的语音播报 在智能助手日益普及的今天&#xff0c;用户对交互方式的要求早已不再局限于“看”——越来越多的场景需要我们能“听”到答案。尤其是在工厂巡检、车载系统、老年服务等不方便盯着屏幕的环境中&#xff0c;语音播报已经成为提升…

作者头像 李华
网站建设 2026/2/22 21:59:29

67、Windows 7 磁盘管理与维护:压缩、加密与日常保养

Windows 7 磁盘管理与维护:压缩、加密与日常保养 1. 镜像恢复基础操作 在进行镜像恢复操作时,要保证原始镜像集拥有之前分配给完整镜像的驱动器号。若没有,需分配合适的驱动器号。接着,右键点击原始系统卷,选择“添加镜像”来重新创建镜像。最后,检查启动配置,确保在启…

作者头像 李华
网站建设 2026/2/22 22:34:40

76、Windows 7 网络设置、版本升级及启动环境全解析

Windows 7 网络设置、版本升级及启动环境全解析 1. 网络连接设置 当选择家庭作为连接类型时,会有额外的选项。若家庭网络没有家庭组,可设置新的家庭组;若已有家庭组,则能加入该家庭组并设置共享选项。完成网络设置后,Windows 7 会准备桌面。 2. 升级 Windows 7 版本 可…

作者头像 李华
网站建设 2026/2/23 22:06:43

91、桌面环境与System V打印系统全解析

桌面环境与System V打印系统全解析 在计算机的使用过程中,打印是一项常见且重要的功能。不同的桌面环境和打印系统有着各自的特点和使用方法,下面将为大家详细介绍桌面环境中的打印以及System V打印系统的相关内容。 桌面环境打印 在进行桌面环境的打印管理时,推荐使用原…

作者头像 李华
网站建设 2026/2/23 9:06:04

99、X Window System 全面指南

X Window System 全面指南 1. 概述 在 X 客户端/服务器模型中,应用开发者可选择多种常见的小部件库和用户界面标准。不过,这种选择往往更多地受主观因素影响,而非基于实际设计考量。过去,X 的用户界面缺乏统一标准和设计指导,导致多年来用户界面质量不佳。但如今,主流 …

作者头像 李华