loadrunner 测试mysql性能lib驱动实现
上一篇 /
下一篇 2016-05-18 16:04:06
/ 个人分类:loadrunner
1、下载mysql驱动包,里面包含lib和bin两个目录,把lib和bin下的文件分别拷贝到loadrunner安装路径下的lib和bin目录里。http://down.51cto.com/data/403722
2、创建lr脚本,选择http协议即可
3、vuser_init代码
#include "Ptt_Mysql.h"
#define MYSQLSERVER "x.x.x.x" //mysql目标地址
#define MYSQLUSERNAME "root" //链接用户名
#define MYSQLPASSWORD "password" //密码
#define MYSQLDB "wind" //目标数据库名称
#define MYSQLPORT "3306" //端口号
MYSQL *Mconn;
vuser_init()
{
lr_load_dll("libmysql.dll");//加载dll文件
Mconn = lr_mysql_connect(MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT));//创建mysql链接。
return 0;
}
4、action代码
Action()
{
char chQuery[1024];
sprintf(chQuery,"select * from aa01 limit 1;");
lr_rendezvous("myQuerySql");
lr_start_transaction("myQuerySql");
lr_mysql_query(Mconn,chQuery); //执行sql语句
lr_end_transaction("myQuerySql",LR_AUTO);
mysql_close(Mconn);//释放mysql链接,这一步千万不要忘了。
return 0;
}
5、注意点 sql语句的参数化
比如需要对select * from a where b='1'里b的赋值参数化,sprintf(chQuery,"select * from a where b='{parameter}';")这种方式提取出来的sql语句为select * from a where b='{parameter}',将查不到任何值。
根据上述例子设计action代码
Action()
{
char chQuery[1024];
strcpy(chQuery,"select * from a where b='");
strcat(chQuery,lr_eval_string("{parameter}"));
strcat(chQuery,"'");
lr_rendezvous("myQuerySql");
lr_start_transaction("myQuerySql");
lr_mysql_query(Mconn,chQuery); //执行sql语句
lr_end_transaction("myQuerySql",LR_AUTO);
mysql_close(Mconn);//释放mysql链接,这一步千万不要忘了。
return 0;
}
6、一次测试过程中并发跑到300就报如下错误,试了各种办法没有解决。今天在其他环境里重新跑了一次脚本1000个都能通过,MYSQL版本是否一致还没确定,操作系统都是linux,里面的数据库不一致,该问题有机会深究一下。 Abnormal termination, caused by mdrv process termination.
收藏
举报
TAG:
性能测试
LoadRunner
loadrunner
MySQL
mysql