聚沙成塔

自增长函数LAST_INSERT_ID()在性能测试中的使用

上一篇 / 下一篇  2017-08-05 16:21:46 / 个人分类:性能测试

使用JMeter脚本做并发项目的性能测试时,如果使用集群方案,则每台压测机访问的参数化数据都是本地资源(csv,txt文件存储方案),无法做到共享数据。如果需要3台压测机,则需要准备3份脚本文件和测试数据文件,很难避免测试数据不重复以及相互影响。因此,我们可以的把共享数据存储在数据库系统中,开发一个函数或存储过程(利用自增函数LAST_INSERT_ID(),模运算和计数器等函数控制多线程的并发访问)供JMeter调用,利用数据库系统中自带的锁功能,使得每次返回的数据都不相同。

例如

 1、  创建一个user表用于存放用户信息

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

  `ID` bigint(20) DEFAULT NULL COMMENT '自增ID',

  `LoginID` varchar(50) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2、  准备好登录用户的数据转换成csv格式,导入user表中

3、  创建一个辅助表test,用于存放执行次数

DROP TABLE IF EXISTS `test`;

CREATE TABLE `test` (

  `id` int(11) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

4、  test插入一条数据,从而触发LAST_INSERT_ID()

Insert into test values(0);

5、  编写一个存储过程sp_getLoginID返回登录id

BEGIN

         DECLARE lid VARCHAR(50);

         UPDATE test SET id = LAST_INSERT_ID(id+1);

         SELECT loginid INTO lid FROM  user  WHERE id = (SELECT MOD(LAST_INSERT_ID(), 5000));

         RETURN lid;

END

6、  jmeter中新建JDBC请求从而获取登录id

SELECT sp_getSenderLoginID();


TAG: Jmeter

 

评分:0

我来说两句

Open Toolbar