专栏首页从零开始学自动化测试面试题:使用存储过程造10w条测试数据,数据不重复

面试题:使用存储过程造10w条测试数据,数据不重复

前言

面试题:如何造10w条测试数据,如何在数据库插入10w条数据,数据不重复? 想面试高级测试、高级自动化测试、测试开发岗位,面试时候考察 SQL 就不是简单的增删改查的,必然会问到存储过程。 一问到存储过程基本上是送命题了,本篇讲解下如何使用存储过程在 mysql 数据库快速造大量测试数据。

存储过程基本语法

MySQL 5.0 版本开始支持存储过程。存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

创建存储过程语法

create procedure 存储过程名(参数)

存储过程开始和结束符号:

begin
....end

定义变量,如定义一个int类型变量,variable是变量的名称,自己定义

declare variable int

其它数据类型,如

DECLARE a_int int unsigned default 10086;
DECLARE a_numeric number(8,2) DEFAULT 1.23;
DECLARE a_date date DEFAULT '2020-06-15';
DECLARE a_datetime datetime DEFAULT '2020-06-15 23:59:59';
DECLARE a_varchar varchar(255) DEFAULT 'This will not be padded';

变量赋值,变量定义后给变量一个初始值,如设置 variable = 1

SET 变量名 = 表达式值 [,variable_name = expression ...]

循环, 批量插入数据需用到循环:while ···· end while

while 条件 do
--循环体
endwhile

执行存储过程

call 存储过程名(参数);

使用存储过程造数据

我们需要插入的sql,如果id的是是变化的,那么把id设置一个变量

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('1', '', 'test123', '2019-12-17');

存储过程代码如下

-- 上海-悠悠
DROP PROCEDURE IF EXISTS create_user_tel;
create procedure create_user_tel()
begin
declare id int;
set id=100000;
while id <=199999
do
INSERT INTO `apps`.`apiapp_card` VALUES(id, '', 'test123', '2019-12-17');
set id=id+1;
end while;
end;-- 执行存储过程
call create_user_tel();

使用call 执行存储过程名称

如果执行存储过程提示:PROCEDURE create_user_tel already exists 解决办法先删除名称,在第一行加一句: DROP PROCEDURE IF EXISTS create_user_tel;

全部数据执行完成,大概需要十分钟,查询结果

SELECT COUNT(*) from apiapp_card

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python测试开发django-16.JsonResponse返回中文

    django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3...

    上海-悠悠
  • Locust性能测试6-命令行参数详解

    当我们在linux上使用locust工具压测的时候,会使用no-web模式,然后需要收集运行的日志,方便查找问题。

    上海-悠悠
  • Cypress web自动化16-参数化,数据驱动测试案例

    自动化测试里面参数化思想是非常重要的,同一类型的测试,只需维护不同的数据就可以了。 对每组测试数据自动生成对应的测试用例,并且每个测试用例的结果互不影响,不能因...

    上海-悠悠
  • 玩转Mysql系列 - 第17篇:存储过程&自定义函数详解

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。

    路人甲Java
  • 从WordPress SQLi谈PHP格式化字符串问题

    近日,WordPress爆出了一个SQLi漏洞,漏洞发生在WP的后台上传图片的位置,通过修改图片在数据库中的参数,以及利用php的sprintf函数的特性,在删...

    Seebug漏洞平台
  • 摩拜服务器又双叒叕挂了

    今天摩拜推送红包活动之后,傍晚时分,服务器又挂了,这次应该和9月份服务器宕机不一样,在9月份宕机的时候技术储备不足,这么长时间摩拜单车都没有把服务器问题解决,看...

    Leoo Bai
  • 我的开发日记(十五)

    这两天又遇到了两个坑:一个「host」缓存,一个多节点用户锁,解决方案比较现成,但是实施起来还是费了大劲。

    八音弦
  • JSP+ajax+springMVC+MayBatis处理excel上传导入

    jsp <div class="subtext1"> <div cla...

    用户1220053
  • 持续集成 — 构建接口自动化测试的一种解决方案

    给大家提供一种解决方案的思路,目前大部分同学接触到的jenkins构建自动化应该都是代码和jenkins服务在同一台服务器上面,但是很多时候事与愿违,也许公司的...

    DevOps时代
  • Spring Data JPA 映射VO/DTO对象

    sr

扫码关注云+社区

领取腾讯云代金券