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

news2024/11/23 11:21:46

 

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

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

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

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

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

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

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

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

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

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

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

这种方法会比纯页面添加要快速一些,使用一个接口测试工具,比如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(

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

[ciscn 2022 东北赛区]math

1.题目 import gmpy2 from Crypto.Util.number import * from flag import flag assert flag.startswith(b"flag{") assert flag.endswith(b"}") messagebytes_to_long(flag) def keygen(nbit, dbit):if 2*dbit < nbit:while True:a1 getRandomNBitIn…

Py深度学习基础|关于Batch Normalization

1. 为什么需要Batch Normalization 通常我们会在输入层进行数据的标准化处理&#xff0c;这是为了让模型学习到更好的特征。同样&#xff0c;在模型的中间层我们也可以进行normalize。在神经网络中, 数据分布对训练会产生影响。 比如我们使用tanh作为激活函数&#xff0c;当输入…

微信小程序picker 组件 region 本地数据源

目录 mac系统获取 windows系统获取 总结 mac系统获取 打开文件目录 Contents/Resources/package.nw/js/libs/region_sub_strict 代码转换 let pcaData 复制出来的数据。。。。const pca pcaData.split(\n);const arr [];const getDepth (line) > line.trim().split(\t…

动态路由-链路状态路由协议ospf案例

实验拓扑和要求如图 ospf实验 1.设置各个接口地址 2.测试ar5到ar6的连通性 3.配置ospf协议&#xff0c;routerid&#xff0c;area&#xff0c; 详细的网络信息&#xff0c;等待网络收敛后&#xff0c; 查看ospf信息&#xff0c;路由表信息&#xff0c;再次测试连通性 注意区域…

C++动态内存区域划分、new、delete关键字、泛型编程、函数模版、类模版

目录 一、C/C中程序的内存区域划分 为什么会存在内存区域划分&#xff1f; 二、new关键字 1、内置类型的new/delete使用方法&#xff1a; 2、new和delete的本质 3、常见面试题——malloc/free和new/delete的区别 三、模版 1、泛型编程 2、函数模版 &#xff08;1&…

ASP.NET在线毕业论文提交系统的设计与实现

摘 要 本设计就很好的解决了上面的问题&#xff0c;它不但能实现毕业生论文的在线提交&#xff1b;还能给教师一定的权限&#xff0c;以在线的方式对自己指导的学生的论文进行审核&#xff1b;并且管理员还可以方便的将每个学生的论文信息按统一的论文排版本格式导出成word文…

大模型LLM 结合联网搜索增强isou

参考&#xff1a; https://github.com/yokingma/search_with_ai 在线使用网址&#xff1a; https://isou.chat/ 安装github下载&#xff0c;运行docker compose 如果一直报下面错误&#xff1a; 解决方法https://github.com/yokingma/search_with_ai/pull/7 默认打开&a…

阿里云VOD视频点播流程(2)

二、视频点播 1、入门代码 基于OSS原生SDK上传 &#xff0c;参考文档&#xff1a;https://help.aliyun.com/zh/vod/user-guide/upload-media-files-by-using-oss-sdks?spma2c4g.11186623.0.0.1f02273fj4lxNJ 视频点播面向开发者提供了丰富的上传方式&#xff0c;其中上传SDK&…

浅谈内存泄漏

内存泄漏 概念 在JavaScript中&#xff0c;内存泄漏是指应用程序在不再需要使用某块内存时仍然保持对其的引用&#xff0c;导致内存不能被垃圾回收机制释放&#xff0c;最终导致内存占用过高&#xff0c;性能下降。 内存泄漏通常发生在以下情况&#xff1a; 全局变量&#…

函数递归练习

目录 1.分析下面选择题 2.实现求第n个斐波那契数 3.编写一个函数实现n的k次方&#xff0c;使用递归实现。 4.写一个递归函数DigitSum(n)&#xff0c;输入一个非负整数&#xff0c;返回组成它的数字之和 5.递归方式实现打印一个整数的每一位 6.实现求n的阶乘 1.分析下面选择…

linux Docker在线/离线服务安装并支持centos7和centos8系统

注&#xff1a;以下内容都是经过测试;能在生产环境使用. 一、centos7版本的docker在线安装 1&#xff1a;运行以下命令&#xff0c;下载docker-ce的yum源。 sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo…

外卖系统拦截器实现(Interceptor)

SpringMVC的拦截器主要是用于拦截控制器方法的执行&#xff1b; 概念&#xff1a;是一种动态拦截方法调用的机制&#xff0c;类似于过滤器。在Spring中动态拦截控制器中方法的执行。 作用&#xff1a;在指定的控制器中调用前后执行预先设定的代码&#xff0c;完成功能增强。 应…

人才测评:计划管理能力与岗位胜任力素质测评

计划管理能力指的是什么&#xff1f; 计划管理能力&#xff0c;可以体现为从业者在精准制定好任务&#xff0c;或是根据任务的时间长&#xff0c;困难的程度来设定好完成的目标&#xff0c;一步一个脚印将工作完成好&#xff0c;并且能预估出可能出现的突发事件&#xff0c;将…

STM32--HC-SR501 热释电人体红外感应模块

实物引脚图&#xff1a; 模块工作特性&#xff1a; 当人进入感应范围之后输出引脚输出高电平&#xff0c;人离开感应范围自动延时输出低电平 热释电效应&#xff1a; 热释电传感器&#xff0c;也称为人体红外传感器&#xff0c;其工作原理基于热释电效应。这种传感器由几个关…

2024护网在即,今年的护网招聘着实有点离谱了!

最近刷到条护网招聘的朋友圈&#xff0c;今年的护网待遇着实有点离谱了&#xff0c;日薪提到了1w&#xff0c;还是全款垫付&#xff1f;&#xff1f;&#xff1f;&#xff01;&#xff01; 我算是理解了“我们当年可没你现在这个条件”这句话。 先给大家科普下护网行动&#x…

【C语言】6.C语言VS实用调试技巧(2)

文章目录 6.调试举例17.调试举例28.调试举例3&#xff1a;数组9.编程常⻅错误归类9.1 编译型错误9.2 链接型错误9.3 运⾏时错误 – 6.调试举例1 求 1!2!3!4!…10! 的和。 int main() {int n 0;int i 0;int ret 1;int sum 0;for (n 1; n < 3; n) {for (i 1; i < …

数据结构之栈与队列

一.栈 1.定义&#xff1a;一种线性表&#xff0c;只允许在固定的一端进行删除和插入数据的操作&#xff0c;该端叫栈底&#xff0c;另一端叫栈顶 2.特点&#xff1a;先进后出 注&#xff1a;栈中元素出栈是一对多的(他虽然满足先进后出但是我们可以在pop数据前先获取栈顶元素…

Tower for Mac:Git管理的新境界

Tower for Mac&#xff0c;让您的Git管理进入新境界&#xff01;这款专为Mac用户打造的Git客户端&#xff0c;凭借其出色的性能和丰富的功能&#xff0c;成为众多开发者的首选工具。 Tower不仅支持常规的Git操作&#xff0c;如提交、推送和拉取&#xff0c;还提供了许多高级功能…

【微服务最全详解】

文章目录 微服务微服务的介绍微服务服务架构演变 微服务网关微服务的负载均衡微服务的容灾机制服务崩溃服务容灾机制微服务熔断机制微服务限流Sentinel怎么实现限流微服务限流算法1.令牌桶算法2.漏斗桶算法 服务监控日志收集 微服务 微服务的介绍 微服务是一种软件架构风格&a…

MyBatis的创建和测试

创建项目点击Spring Initializr然后点击next 点击SQL 选择里面的Mybatis Framework和Mysql Driver 按如下图片创建项目 user表中的数据 #下面这些内容是为了让MyBatis映射 #指定Mybatis的Mapper文件 mybatis.mapper-locationsclasspath:mappers/*xml #指定Mybatis的实体目录 my…