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

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

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

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

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

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

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

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

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

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

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

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

这种方法会比纯页面添加要快速一些,使用一个接口测试工具,比如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表格手动拖拽复制出来千条数量级的数据,但是如果数据量更大,就也不太方便了。需要有更加高效的方法。

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

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

 


drop procedure if exists proc_batch_insert;   # 如果存在存储过程就先删除
create procedure proc_batch_insert()   # 创建存储过程
begin declare i int;  # 定义一个变量用来计数declare _name varchar(25);  # 定义一个变量用来计数参数化用户名declare _phone char(11);   # 定义一个变量用来计数参数化手机号码set i=1;   # 设置计时器的初始值为1while i<=1000000 do    # while循环控制插入数据的次数set _name = concat('tom-',i);  # 拼接用户名,i为变化的保证用户名的差异性set _phone = 13000000000+i; # 拼接手机号码,i为变化的保证手机号码的差异性insert into tuser(username,phone) values(_name,_phone); # 插入数据set i=i+1;  # 每次循环计时器加1end while;
endcall proc_batch_insert();  # 运行存储过程
方法六:Python代码实现构造百万的数据

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


import random
import string
import pymysql# 数据库连接信息
host = '139.224.61.195'
user = 'root'
port = 3307
password = '123456'
database = 'test'# 建立数据库连接
connection = pymysql.connect(host=host, user=user,port=port, password=password, database=database)
cursor = connection.cursor()# 构造百万数据
batch_size = 10000  # 每批插入的数据量
total_records = 1000000  # 总共需要生成的数据量# 获取当前表中最大的id值
cursor.execute("SELECT MAX(id) FROM tuser")
max_id = cursor.fetchone()[0] or 0for i in range(total_records // batch_size):  #是整数除法,它计算出需要进行多少批次的数据生成和插入。# 生成批量数据batch_data = []for i in range(batch_size):max_id += 1user_id = max_id  # 使用自增长方式生成唯一idusername = ''.join(random.choices(string.ascii_lowercase, k=10))phone = ''.join(random.choices(string.digits, k=11))batch_data.append((user_id, username, phone))# 批量插入数据sql = "INSERT INTO tuser (id, username, phone) VALUES (%s, %s, %s)"cursor.executemany(sql, batch_data)connection.commit()# 关闭数据库连接
cursor.close()
connection.close()

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

 

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

 

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

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

相关文章

Centos服务器部署前后端项目

目录 准备工作1. 准备传输软件2. 连接服务器 部署Mysql1.下载Mysql(Linux版本)2. 解压3. 修改配置4. 启动服务另一种方法Docker 部署后端1. 在项目根目录中创建Dockerfile文件写入2. 启动 部署前端1. 在项目根目录中创建Dockerfile文件写入2. 启动 准备工作 1. 准备传输软件 …

全网唯一基于共享内存的C++ RPC框架

首先声明&#xff1a;我不是标题党&#xff0c;我是在找遍全网&#xff0c;没有找到一个基于共享内存实现、开源且跨平台的C RPC框架之后&#xff0c;才着手开发的这个框架。 项目地址&#xff1a;https://github.com/winsoft666/veigar 1. Veigar Veigar一词来源于英雄联盟里…

Nacos服务发现及其其他工具

1、什么是Nacos的服务发现功能 在微服务架构中&#xff0c;服务发现功能允许服务提供者&#xff08;服务实例&#xff09;将自己注册到Nacos服务器&#xff0c;同时服务消费者&#xff08;客户端&#xff09;能够通过Nacos服务器发现可用的服务实例。这样&#xff0c;服务消费…

2024年湖北省事业单位考试报名流程图解

⏰ 时间安排 ✔️ 注册&#xff1a;2024年2月19日至2月27日15:00 ✔️ 报名&#xff1a;2024年2月21日9:00至2月27日17:00 ✔️ 资格审查&#xff1a;2024年2月21日9:00至2月28日9:00 ✔️ 缴费确认&#xff1a;2024年2月28日9:00至3月1日24:00 ✔️ 岗位调整和改报&#…

数据结构与算法:图形数据结构

1. 图的基本概念和表示方法 图是一种由节点和边组成的非线性数据结构&#xff0c;用于描述事物之间的关系。在计算机科学中&#xff0c;图是一种十分重要的数据结构&#xff0c;广泛应用于各种领域&#xff0c;如网络分析、路径规划等。本节将介绍图的基本概念和两种常见的表示…

C++知识点总结(22):模拟算法

一、概念 模拟算法 根据题目描述进行筛选提取关键要素&#xff0c;按需求书写代码解决实际问题的算法。 二、步骤 1、提取题目的关键要素 2、根据关键要素的需求完成代码 三、关键要素 1、题目目的 2、样例的执行逻辑&#xff08;样例分析&#xff09; 3、数据范围&#xff08;…

上门服务系统|上门服务小程序|上门服务软件开发

随着移动互联网技术的普及&#xff0c;上门服务小程序系统成为现代企业数字化转型的关键一环。这一系统为消费者提供了更加便捷、高效以及个性化的服务体验&#xff0c;同时也为企业带来了更广阔的商业机会。让我们来看看上门服务小程序系统的优势和功能。 首先&#xff0c;上门…

vue3新特性-defineOptions和defineModel

defineOptions 背景说明&#xff1a; 有 <script setup> 之前&#xff0c;如果要定义 props, emits 可以轻而易举地添加一个与 setup 平级的属性。 但是用了 <script setup> 后&#xff0c;就没法这么干了 setup 属性已经没有了&#xff0c;自然无法添加与其平…

Docker基础篇(二)

docker run -d docker run -d 容器名或容器ID docker run -d 后台生成容器&#xff0c;并退出容器&#xff08;除容器中在运行脚本&#xff09; docker run -it 交互生成容器 docker run -d centos /bin/sh -c “while true; do echo zen; sleep 2;done” 查看容器中的进程…

【进程创建】

目录 进程创建的方式查看进程pid 调用系统调用创建子进程fock函数做了的工作子进程刚开始创建的状态 一个变量&#xff0c;两个不同的值创建子进程的作用 进程创建的方式 1.在操作系统上输入的指令。 2.已经启动的软件。 3.程序员在代码层面上调用系统调用创建进程。 linux中第…

服务器被黑该如何查找入侵痕迹以及如何防御攻击

当公司的网站服务器被黑&#xff0c;被入侵导致整个网站&#xff0c;以及业务系统瘫痪&#xff0c;给企业带来的损失无法估量&#xff0c;但是当发生服务器被攻击的情况&#xff0c;作为服务器的维护人员应当在第一时间做好安全响应&#xff0c;对服务器以及网站应以最快的时间…

【Java程序设计】【C00287】基于Springboot的疫情防控期间某村外出务工人员管理系统(有论文)

基于Springboot的疫情防控期间某村外出务工人员管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的疫情防控期间某村外出务工人员信息管理系统 本系统分为系统功能模块、管理员功能模块、用户功能模块、采集…

git 获取仓库代码与提交代码

1. 建文件夹&#xff0c;获取项目的完整代码 2.Git安装 打开安装程序后&#xff0c;一直点击下一步&#xff0c;直到以下位置&#xff1a; 此处代表使用VIM作为Git默认的编辑器。继续下一步&#xff0c;直到: 这里选择第一项&#xff0c;即仅仅在Bash中使用Git。如果有Linux的学…

面了 360、腾讯和百度的 NLP 算法岗,被问麻了。。。。。

文章目录 技术交流群1、360 NLP 算法岗2、腾讯 NLP 算法岗3、百度 NLP 算法岗用通俗易懂方式讲解系列 节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项…

后台管理登录权限怎么实现的,token具体有什么作用

后台管理系统的登录权限通常是通过以下步骤实现的&#xff1a; 用户输入用户名和密码进行登录。 后端接收到登录请求后&#xff0c;验证用户名和密码的正确性。 如果用户名和密码正确&#xff0c;后端会生成一个令牌&#xff08;Token&#xff09;&#xff0c;并将该令牌返回给…

281.【华为OD机试真题】贪吃的猴子(滑动窗口和动态规划—JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-贪吃的猴子二.解题思路三.题解代码Python题解代…

ASCII编码的影响与作用:数字化时代的不可或缺之物

title: ASCII编码的影响与作用&#xff1a;数字化时代的不可或缺之物 date: 2024/2/25 16:03:37 updated: 2024/2/25 16:03:37 tags: ASCII起源标准化字符文本处理基础编程语言基石数据库存储标准跨平台兼容多语言编码基础 一、ASCII编码的起源 ASCII&#xff08;American St…

Qt的QFileSystemModel与QTreeView、QTableView、QListView的组合使用

1.相关描述 QFileSystemModel与QTreeView、QTableView、QListView的组合&#xff0c;当QTreeView点击发生改变&#xff0c;QTableView和QListView也会发生变化 2.相关界面 3.相关代码 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h"…

2.WEB渗透测试-前置基础知识-web基础知识和操作系统

web基础知识 1.http协议 超文本传输协议是互联网上应用最广泛的一种网络协议。所有www文件都必须遵守的一个标准&#xff0c;是以 ASCII 码传输&#xff0c;建立在 TCP/IP 协议之上的应用层规范&#xff0c;通俗点说就是一种固定的通讯规则。 2、网络的三种架构及特点 网络应…

备战蓝桥杯————双指针技巧巧解数组3

利用双指针技巧来解决七道与数组相关的题目。 两数之和 II - 输入有序数组&#xff1a; 给定一个按升序排列的数组&#xff0c;找到两个数使它们的和等于目标值。可以使用双指针技巧&#xff0c;在数组两端设置左右指针&#xff0c;根据两数之和与目标值的大小关系移动指针。 …