loadrunner mysql_LoadRunner 测试 Mysql

这篇博客详细介绍了如何使用LoadRunner进行MySQL数据库的性能测试。首先,需要下载并安装MySQL LoadRunner libraries,将其文件复制到LoadRunner相应路径。然后,创建测试用的数据库和表,接着编写vuser_init、action和vuser_end脚本,实现数据库的连接、插入、更新、查询和删除操作。博客提供了简单版和复杂版的脚本示例,复杂版包括了连接失败的重试机制以及参数化的数据读取。
摘要由CSDN通过智能技术生成

准备文件

1. 下载 MySQL LoadRunner libraries。

2. 可以看到 MySQL LoadRunner libraries 里面有两个文件夹:bin 以及 include。

将 bin 文件夹里的文件拷贝到 LoadRunner 安装路径下的 bin 文件夹下。

将 include 文件夹里的文件全部拷贝到 LoadRunner 安装路径下的 include 文件夹下。

LoadRunner安装路径一般都是 C:\Program Files (x86)\HP\LoadRunner 或者 C:\Program Files \HP\LoadRunner

准备测试用的数据库

新建test数据库

在test数据库下新建表格 people:包含如下3个字段。

id需要勾选自动递增。

7137d9afa8a3b2ca3efcd51f9abb83a9.png

简单版

1. 编写 vuser_init文件

//引入mysql lib的h文件

#include "Ptt_Mysql.h"MYSQL*Mconn;

vuser_init()

{#define MYSQLSERVER "xx.xx.xx.xx"//mysql的ip

#define MYSQLUSERNAME "root"//用户名

#define MYSQLPASSWORD "xxxxxx"//密码

#define MYSQLDB "test"//数据库

#define MYSQLPORT "3306"//端口

//引入libmysql的dll

lr_load_dll("libmysql.dll");//连接mysql

Mconn =lr_mysql_connect(MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT));return 0;

}

Ptt_MySql.h 这个文件是刚刚拷贝到LoadRunner的include文件夹里面的文件之一。

可以打开看到 Ptt_MySql.h  这个文件主要包含3个函数:lr_mysql_connect 、lr_mysql_query、lr_mysql_disconnect。这都是我们后边要用到的,所以拿出来放到 vuser_init() 初始化函数之前 。

然后就是定义连接数据库所需要的东西:IP、用户名、密码等。通过下面的 lr_mysql_connect()函数来连接数据库。

连接数据库前,需要加载  libmysql.dll 文件。

2. 编写action文件

Action()

{char chQuery[128];intresult;//把字符存到chQuery[]中

sprintf(chQuery, "INSERT INTO people (username,password) VALUES('user11','111111')");//执行sql

result =lr_mysql_query(Mconn, chQuery);if(result == 0){

lr_output_message("insert 成功");

}else{

lr_error_message("insert 失败");

}return 0;

}

这里进行的是插入操作。

数据库常见的增删改查,这里只需要把 sprintf里面的字符串替换掉就可以。

3. 编写vuser_end文件

vuser_end()

{//关闭数据库连接

lr_mysql_disconnect(Mconn);return 0;

}

这里就是关闭数据库连接。

复杂版

1. 编写 vuser_init文件

这里添加了一些文件是否存在的验证,以及多次连接Mysql 的尝试。

#include "Ptt_Mysql.h"#include"mysql.h"#include"mysql_com.h"#include"mysql_time.h"#include"mysql_version.h"#include"typelib.h"#include"my_list.h"#include"my_alloc.h"

#define MYSQLSERVER "localhost"

#define MYSQLUSERNAME "root"

#define MYSQLPASSWORD "xxxxxx"

#define MYSQLDB "test"

#define MYSQLPORT "3306"

int statu=1;

MYSQL*Mconn;int conn_fail=0, conn_iter=0;

vuser_init()

{//Load libmysql.dll

intrc;

rc= lr_load_dll("libmysql.dll");if (rc != 0) {

lr_error_message("Could not load libmysql.dll");

lr_abort();

}

lr_start_transaction("mysql_connection");//Initialise MySQL

if(!(Mconn =mysql_init(NULL)))

{

lr_message("Error -1: Cannot initialize MySQL - %s", mysql_error(Mconn));

statu= 0;

lr_end_transaction("mysql_connection", LR_FAIL);

}do{//Connect to database

if (!mysql_real_connect(Mconn, MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT), NULL, 0))

{

conn_fail= -2;

conn_iter++;

sleep(100);

}elseconn_fail= 0;

}while(conn_fail < 0 && conn_iter < 10);if (conn_fail < 0)

{

lr_message("Error : %s", mysql_error(Mconn));

statu= 0;

lr_end_transaction("mysql_connection", LR_FAIL);return -2;

}else{

lr_message("MySql - Good Connection");

statu= 1;

lr_end_transaction("mysql_connection", LR_PASS);

}return 0;

}

2. 编写 Action_insert 文件

这里尝试向 people表格插入一条数据。

可以看到这里使用的数据是直接从 参数文件读取的,所以需要事先建立好参数 user 以及 pwd。

Action_insert()

{if(statu)

{char chQuery[1024];int status=0;

lr_start_transaction("mysql_insert");

lr_output_message("The parameter user is : %s",lr_eval_string("{user}"));

lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}"));

sprintf(chQuery,"INSERT INTO people (username,password) VALUES('%s','%s')",lr_eval_string("{user}"),lr_eval_string("{pwd}"));

status=lr_mysql_query(Mconn, chQuery);if(status!=0)

{

lr_end_transaction("mysql_insert",LR_FAIL );

}else{

lr_end_transaction("mysql_insert", LR_PASS);

}

}return 0;

}

3. 编写 Action_update 文件

Action_update()

{if(statu)

{char chQuery[1024];int status=0;

lr_start_transaction("mysql_update");

lr_output_message("The parameter user is : %s",lr_eval_string("{user}"));

lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}"));

sprintf(chQuery,"UPDATE people SET password = '123456789' WHERE username='%s'",lr_eval_string ("{user}"));

status=lr_mysql_query(Mconn, chQuery);if(status!=0)

{

lr_end_transaction("mysql_update",LR_FAIL );

}else{

lr_end_transaction("mysql_update", LR_PASS);

}

}return 0;

}

4. 编写 Action_select 文件

查询出来的结果保存在多维数组中,可以使用 row[][].cell 来获取数据。

Action_select()

{if(statu)

{char chQuery[1024];int status=0;

lr_start_transaction("mysql_select");

lr_output_message("The parameter user is : %s",lr_eval_string("{user}"));

lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}"));

sprintf(chQuery,"SELECT username,password FROM people WHERE username='%s'",lr_eval_string("{user}"));

status=lr_mysql_query(Mconn, chQuery);

lr_save_string(row[0][0].cell,"user1");

lr_save_string(row[1][0].cell,"pw1");

lr_output_message(lr_eval_string("User:{user1}"));

lr_output_message(lr_eval_string("Password:{pw1}"));if(status!=0)

{

lr_end_transaction("mysql_select",LR_FAIL );

}else{

lr_end_transaction("mysql_select", LR_PASS);

}

}return 0;

}

5. 编写 Action_delete 文件

Action_delete()

{if(statu)

{char chQuery[1024];int status=0;

lr_start_transaction("mysql_delete");

lr_output_message("The parameter user is : %s",lr_eval_string("{user}"));

lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}"));

sprintf(chQuery,"DELETE FROM people WHERE username='%s'",lr_eval_string("{user}"));

status=lr_mysql_query(Mconn, chQuery);if(status!=0)

{

lr_end_transaction("mysql_delete",LR_FAIL );

}else{

lr_end_transaction("mysql_delete", LR_PASS);

}

}return 0;

}

6. 编写 vuser_end 文件

vuser_end()

{

lr_mysql_disconnect(Mconn);return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值