如何利用loadrunner做mysql压力测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用loadrunner做mysql压力测试相关的知识,希望对你有一定的参考价值。

参考技术A LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持)。LoadRunner本身直接支持Oracle、SqlServer数据库,这两个数据库直接选择相应的协议就可以录制脚本。而mysql数据库只能利用ODBC协议来录制(编写)脚本,所以必须要MySql的ODBC驱动,和支持ODBC的查询分析器(录脚本需要,自己编写就不需要)。 参考技术B http函数下的loadrunner编程。
globals.h
#ifndef _GLOBALS_H
#define _GLOBALS_H
#include "lrun.h"
#include "web_api.h"
#include "lrw_custom_body.h"
#include "modal_dialog_callbacks.h"
#define random(x) (rand()%x)
#include

#include
#include
#include
#include
#include
#include
#endif // _GLOBALS_H

vuser_init.c
MYSQL *db;
MYSQL_ROW record;
vuser_init()

char sql[128];
MYSQL_RES *results1;
lr_load_dll("libmysql.dll");
db = mysql_init(NULL);
mysql_real_connect(db, "192.168.8.32", "root", "123456", "sunboyu_test", 3311, "/tmp/mysql3311.sock", 1);
sprintf(sql, "show tables");
mysql_query(db, sql);
results1 = mysql_store_result(db);
while((record = mysql_fetch_row(results1)))

lr_log_message("table = %s", record[0]);

mysql_free_result(results1);
return 0;

vuser_end.c
vuser_end()

mysql_close(db);
mysql_server_end();
return 0;

Action.c
Action()

int r1 = 0;
char sql[128];
r1 = random(11); //10种用户,8种正常访问,两种在挖坟
lr_log_message(" %d", r1);
if(r1==11)

my_mysql_insert();

else

my_mysql_query( r1 );

return 0;

int my_mysql_query( int randid )

int r2 = 0;
int j = 0;
int count = 0;
int page = 0;
char sql[128];
MYSQL_RES *results2;
if(randid<2) //老数据,小部分 20%

r2 = random(700000);
sprintf(sql, "SELECT COUNT(*) AS count FROM posts_jx3 WHERE tid = %d;",r2);
lr_log_message("%s",sql);
mysql_query(db, sql);
results2 = mysql_store_result(db);
while((record = mysql_fetch_row(results2)))

lr_log_message("count = %d", record[0]);

mysql_free_result(results2);
page = count/10;
lr_log_message("page = %d", page);
for(j=0;j< =page;j++)

sprintf(sql, "SELECT * FROM posts_jx3 WHERE tid = %d LIMIT %d,10;",r2,j);
mysql_query(db, sql);
lr_log_message("%s", sql);
if (j>0)
results2 = mysql_store_result(db);
while((record = mysql_fetch_row(results2)))本回答被提问者采纳

Loadrunner实现Android / IOS 手机压力测试(实例)

Loadrunner实现Android / IOS 手机压力测试(实例)

2016.11.21 19:15* 字数 734 阅读 1117评论 2

随着手机APP用户量的增大,大的手机APP一般都需要进行压力测试这几天用了loadrunner 12进行了手机APP的压力测试,整理了下,大家可以参考参考怎样给Andorid / IOS手机APP进行压力测试,以下是操作实例。

下面介绍LR12进行手机压测的步骤:

1.      网上下载个Loadrunner 12的安装包,我下了个叫 HP_LoadRunner_12_Community_Edition_T7177-15045.exe的文件,这个960M,还有个1.2G的名称中有个Addition的我没装,我的系统是Win7 32位 + IE8

2.      我这个装好后,默认的license是长期的但只有50人,我建议可以用这个录制脚本到时用Loadrunner8.0并发更多,因为手机APP实际上是监控手机对服务器发出的请求,LR12捕获这些请求,压力测试是压测服务器的。

3.      准备个小度,插入USB接口,用驱动人生扫描驱动,扫描出小度wifi驱动没装,点击安装,驱动人生下载驱动并安装好,安装完后的小度有wifi名及密码。

技术分享图片

 

4.      手机连接上这个网络,长按此网络,点击修改网络配置,显示高级选项,代理服务器设置为 – 手动,代理主机名及代理服务器端口设置下,下载个CCProxy,运行下,可以查看到本机局域网IP地址,端口随便设置个,如8899. 停止CCProxy.

技术分享图片

 

5.      启动LR12 Virtual User Generator,点击File – New script. and solution,Single Protocol里选择 Web – HTTP/HTML,点击Create

6.      点击工具栏的红色的Record按钮,Recording mode选择 Remote Application via LoadRunner Proxy,端口设置为8899,Loadrunner会监听这个端口,此端口为手机连接的代理服务器端口。

技术分享图片

7.      点击 Start Recording开始录制

技术分享图片

8.      录制完成后会生成脚本,如下,可以删掉不必要的脚本,剩下自己要测的程序的。

技术分享图片

9.      回放脚本,脚本回放成功,并成功登录手机APP,返回别名

技术分享图片

10.  从 Tools 点击Create Controller Scenario,设置Number of Vusers为10人,可以设置更多,这里我设置成10,跑一下,在Controller里Design的tab下将Scenario Schedule的Run Mode设置成为Basic schedule,Controller – Results – Results Setting

s,窗口打开后勾选第一个生成每个用户运行时日志,此窗口记录下日志保持的文件夹,运行场景。

技术分享图片

11.  在Controller点击Results – Analyze Results,查看结果

技术分享图片

12.  检查每个用户运行时日志查看细节

技术分享图片

以上是关于如何利用loadrunner做mysql压力测试的主要内容,如果未能解决你的问题,请参考以下文章

如何用loadrunner做简单网站的压力测试

LoadRunner如何对GIS服务器进行性能测试

Loadrunner实现Android / IOS 手机压力测试(实例)

性能测试实战 | JMeter 录制/回放做 App 后端性能压测

网站服务器如何做访问压力测试?

SoupUI 结合loadrunner压力测试