作为一个测试人员,需要做性能测试时候,如果没有实际数据,或者实际数据不适合做压测,就要自己着手造数据了。

以下面的接口测试为例,简单介绍下需要的数据:

这是一个会员注册接口,入参比较多,你可以选用全部必填字段,忽略非必填字段,你也可以选用所有入参来进行测试; 我这里就选用了下面的入参

一般注册接口中,邮箱,手机号,身份证号,openid,unionid都是必须唯一的,不能与已经存在的会员重复。

这个时候造数据就需要造一些唯一的邮箱,手机号,身份证号和openid,unionid。

CREATE TABLE LoadTestTable
(
ID INT IDENTITY(1,1),
NAME VARCHAR(50),
GENDER INT,
HEIGHT INT,
MOBILE BIGINT,
IDnum VARCHAR(50),
singautre VARCHAR(50),
OPENID VARCHAR(50),
UNIONID VARCHAR(50),
MEMO VARCHAR(50)
);

  如上先创建了一张表,你可以创建临时表 #LoadTestTable,但是这边我最近可能要用2-3天,而且在一个单独的QA数据库,我可以任性一点,创建一个物理表。^_^

DECLARE @NAME VARCHAR(50)
DECLARE @GENDER INT
DECLARE @HEIGHT INT
DECLARE @MOBILE BIGINT
DECLARE @IDNUM VARCHAR(50)
DECLARE @OPENID VARCHAR(50)
DECLARE @UNIONID VARCHAR(50)
DECLARE @SINGAUTRE VARCHAR(50)
DECLARE @VAR INT
SET @VAR=1000
SET @MOBILE = 21111173440
WHILE @VAR<10000
BEGIN SET @NAME = '微信小程序' +CONVERT(VARCHAR(50),@VAR);
SET @GENDER=1;
SET @HEIGHT=160;
SET @MOBILE = @MOBILE+1;
SET @IDNUM = 'ABCD12341QAZ12' + CONVERT(VARCHAR(50),@VAR);-----18位身份证
SET @OPENID = 'OPENID1234'+ CONVERT(VARCHAR(50),@VAR);
SET @UNIONID = 'UNIONID1111'+ CONVERT(VARCHAR(50),@VAR); INSERT LOADTESTTABLE(NAME,GENDER,HEIGHT,MOBILE,IDNUM,SINGAUTRE,OPENID,UNIONID)
VALUES(@NAME,@GENDER,@HEIGHT,@MOBILE,@IDNUM,NULL,@OPENID,@UNIONID) SET @VAR=@VAR+1
END  

先用while循环生成了9000个会员,这些会员姓名不一样,手机号不一样,等等。

身份证这边主要用了18位,并没有完全遵守国家规定的身份证格式。

大概看一下测试数据:

报文中加密字段,签名需要注意下,这边我没有一步计算出来,放在了第二步

  UPDATE A
SET A.SINGAUTRE = SUBSTRING(SYS.FN_VARBINTOHEXSTR(HASHBYTES('MD5', CONVERT(VARCHAR(50),B.GENDER)+'XXX')),3,32)
FROM LOADTESTTABLE B
JOIN LOADTESTTABLE A ON A.ID = B.ID

 这边根据性别随意计算了一下对应的MD5 32位加密后的值,由于性别是int类型,这边转换了一下,否则会有报错 Argument data type int is invalid for argument 2 of hashbytes function.

因为性别一样,计算出的签名也是一样的,实际应用中当然不会选择这个字段,这选择别的字段,或者多个字段

得到希望的数据到,SELECT * FROM LOADTESTTABLE,将数据复制到一个excel或者txt文档中,添加Jmeter的元件CSV Data Set Config进行配置即可

以下是CSV Data Set Config各个参数的简要说明:

FileName:即同目录下csv文件的名称,如果不是同目录,请给出绝对路径
File Encoding: 默认为ANSI,你看一下你保存文件的格式,一般都用utf-8
Varible Names: 定义文本文件中的参数名,参数之间逗号分隔.定义后可在脚本在以Shell变量的同样的方式引用,必须要一一对应,不能写漏了,否则会出错哦

Ignore first line(Only used if Variable Name is not set):我的数据文件中第一行是字段名不是测试数据,要忽略

Delimiter:数据文件的分隔符,我这边是|
Allow Quoated data: 双引号相关
Recycle on EOF: 设置为True后,允许循环取值  EOF 是end of file,数据文件中数据都用完了,要不要从头再来,我这边不需要,设置False
Stop Thread on EOF: 当Recycle on EOF为false并且Stop Thread on EOF为true,则读完csv文件中的记录后,停止运行
Sharing Mode: 设置是否线程共享

我的数据文件如下:

我的设置如下

Recycle on EOF和Stop Thread on EOF

我以前一直忽略这两个参数的使用,一般做性能测试,我准备的数据比最终要使用的都多很多(造测试数据反正不要钱么^_^)

Until one time,第三方没有能将粉丝券同步给我们,希望将数据以文件形式导给我们,让我们手工插入数据库;

support担心在生产数据库上直接插入会影响效率,毕竟当时还有很多人在不停地领取粉丝券,我们以前也出现过某张表效率低下,不记录一些类似log记录到表中的情况

于是,我自告奋勇地说,让我来用接口插入数据吧,我加上思考时间,这个接口我以前在QA上压测过,巴拉巴拉·······不会有问题的,于是PM就同意了,于是我留下来加班哈哈哈哈哈 ^_^

当时没有更改Recycle on EOF和Stop Thread on EOF,最终的结果是发现一些券同步的时候有失败,一看是数据用完了,我查看了请求的总数大于文件的总数

顺便测了一下Jmeter 4.0中的共享模式:

放置位置如图:

还有发现的接口问题: 同一条数据发出多个请求,因为手机号身份证等未入库,或者说同时入库,一条数据分成的多个请求,最终会生成多个数据。【已解决】

 如果放置的位置在当前线程下,那么只能是当前线程组的,不会共享给别的线程组,这个位置关系和查看结果树不同。

Jmeter性能测试 如何利用SQLserver造出大批的数据的更多相关文章

  1. JMeter 参数化之利用JDBCConnectionConfiguration从数据库读取数据并关联变量

    参数化之利用DBC Connection Configuration从数据库读取数据并关联变量   by:授客 QQ:1033553122 1.   下载mysql jar包 下载mysql jar包 ...

  2. 基于webdriver的jmeter性能测试-通过jmeter实现jar录制脚本的性能测试

    续接--基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包 在进行测试前先将用于支持selenium录制脚本运行所需的类包jar文件放到jmeter ...

  3. Jmeter性能测试入门(链接收藏)

    Jmeter性能测试入门: http://www.cnblogs.com/TankXiao/p/4045439.html

  4. Jmeter性能测试入门(转)

    出处:http://www.cnblogs.com/by-dream/p/5611555.html Jmeter性能测试步骤 1. 添加线程组之后,先设置这两项: 2. 添加一个http请求 被测的u ...

  5. Jmeter学习一:Jmeter性能测试环境搭建(Windows下)

    最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...

  6. JSON序列化及利用SqlServer系统存储过程sp_send_dbmail发送邮件(一)

    JSON序列化 http://www.cnblogs.com/yubaolee/p/json_serialize.html 利用SqlServer系统存储过程sp_send_dbmail发送邮件(一) ...

  7. Jmeter性能测试

    Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的 ...

  8. JMeter性能测试,完整入门篇

    1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,也越来越流行成为了主流的性能测试工具 ...

  9. 【转载】Jmeter 性能测试入门

    [转载]Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmete ...

随机推荐

  1. 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码

    下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...

  2. 粒子系统属性Life,发射速率和总数的关系

    提示,粒子系统的life,发射速率以及总粒子数是相互影响的. 如果你要发射器射出粒子流然后停顿一会,你将简单的必须确保lifetime和发射速率相匹配以至于在发射出的粒子达到粒子总数之前一些粒子是活跃 ...

  3. 标准会话对象——StandardSession

    Tomcat使用了一个StandardSession对象用来表示标准的会话结构,用来封装需要存储的状态信息.标准会话对象StandardSession实现了Session.Serializable.H ...

  4. 中国象棋游戏Chess(2) - 走棋

    之前的文章请看:中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制 现在实现走棋的功能. 首先需要获取点击到的棋子,用QWidget中的函数 mouseReleaseEvent 实现函数: vo ...

  5. 中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制

    本项目都使用QT来实现绘图,没有任何第三方的资源. 工程详情:Github 首先将棋盘设计为一个类Board // Board.h // Board类实现了棋盘的绘制以及显示 // #ifndef B ...

  6. iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用

    键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因为你可以利用字符串的方式去动态控制一个对象.其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的 ...

  7. 安装docker及配置Android开发环境

    安装docker 官方原来的安装docker的脚本https://get.docker.com/已经过时,现在使用的是https://get.docker.com/,命令如下: curl -s htt ...

  8. IOS中UITextView(多行文本框)控件的简单用法

    1.创建并初始化 UITextView文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文.UITextField的用处多,UITextVie ...

  9. IOS原声二维码条形码扫描实现

    本文讲述如何用系统自带的东东实现二维码扫描的功能:点击当前页面的某个按钮,创建扫描VIEW.细心的小伙伴可以发现 title被改变了,返回按钮被隐藏了.这个代码自己写就行了,与本文关系不大...绿色的 ...

  10. rails应用ajax之二:使用rails自身支持

    考虑另一种情况: 1. 页面上半部分显示当前的所有用户,页面下半部分是输入新用户的界面: 2. 每当输入新用户时,页面上半部分会动态更新新加用户的内容: 我们还是用ajax实现,不过这次用rails内 ...