LoadRunner 测试 Mysql
准备文件
1. 下载 MySQL LoadRunner libraries。
下载地址:http://files.cnblogs.com/files/xiaoxitest/MySQL_LoadRunner_libraries.zip
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需要勾选自动递增。

简单版
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 ;
}
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[];
int result; //把字符存到chQuery[]中
sprintf(chQuery, "INSERT INTO people (username,password) VALUES('user11','111111')"); //执行sql
result = lr_mysql_query(Mconn, chQuery); if(result == ){
lr_output_message("insert 成功");
}
else{
lr_error_message("insert 失败");
} return ;
}
这里进行的是插入操作。
数据库常见的增删改查,这里只需要把 sprintf里面的字符串替换掉就可以。
3. 编写vuser_end文件
vuser_end()
{
//关闭数据库连接
lr_mysql_disconnect(Mconn);
return ;
}
这里就是关闭数据库连接。
复杂版
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=;
MYSQL *Mconn;
int conn_fail=, conn_iter=; vuser_init()
{
// Load libmysql.dll
int rc;
rc = lr_load_dll("libmysql.dll");
if (rc != ) {
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 = ;
lr_end_transaction("mysql_connection", LR_FAIL);
} do{
// Connect to database
if (!mysql_real_connect(Mconn, MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT), NULL, ))
{
conn_fail = -;
conn_iter++;
sleep();
}
else
conn_fail = ;
}
while(conn_fail < && conn_iter < ); if (conn_fail < )
{
lr_message("Error : %s", mysql_error(Mconn));
statu = ;
lr_end_transaction("mysql_connection", LR_FAIL);
return -;
}
else
{
lr_message("MySql - Good Connection");
statu = ;
lr_end_transaction("mysql_connection", LR_PASS);
} return ; }
2. 编写 Action_insert 文件
这里尝试向 people表格插入一条数据。
可以看到这里使用的数据是直接从 参数文件读取的,所以需要事先建立好参数 user 以及 pwd。
Action_insert()
{
if(statu)
{
char chQuery[];
int status=; 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!=)
{
lr_end_transaction("mysql_insert",LR_FAIL );
}
else
{
lr_end_transaction("mysql_insert", LR_PASS);
}
}
return ;
}
3. 编写 Action_update 文件
Action_update()
{
if(statu)
{
char chQuery[];
int status=; 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!=)
{
lr_end_transaction("mysql_update",LR_FAIL );
}
else
{
lr_end_transaction("mysql_update", LR_PASS);
}
}
return ;
}
4. 编写 Action_select 文件
查询出来的结果保存在多维数组中,可以使用 row[][].cell 来获取数据。
Action_select()
{
if(statu)
{
char chQuery[];
int status=; 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[][].cell,"user1");
lr_save_string(row[][].cell,"pw1"); lr_output_message(lr_eval_string("User:{user1}"));
lr_output_message(lr_eval_string("Password:{pw1}")); if(status!=)
{
lr_end_transaction("mysql_select",LR_FAIL );
}
else
{
lr_end_transaction("mysql_select", LR_PASS);
}
}
return ;
}
5. 编写 Action_delete 文件
Action_delete()
{
if(statu)
{
char chQuery[];
int status=; 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!=)
{
lr_end_transaction("mysql_delete",LR_FAIL );
}
else
{
lr_end_transaction("mysql_delete", LR_PASS);
}
}
return ;
}
6. 编写 vuser_end 文件
vuser_end()
{
lr_mysql_disconnect(Mconn);
return ;
}
LoadRunner 测试 Mysql的更多相关文章
- Jememeter和Loadrunner测试MySQL性能
From:http://blog.csdn.net/testingstar/article/details/60579454 MySQL数据库性能测试的方法 前置条件: 安装系统:windows 7 ...
- 老李分享:loadrunner操作mysql数据库
老李分享:loadrunner操作mysql数据库 在poptest测试开发工程师就业培训的课程中,针对一套商业系统进行性能测试,目标是mysql后台数据库的负载能力,在这里我把测试代码 ...
- Loadrunner测试数据库性能,测试SQL语句的脚本例子
Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作, 主要用到的是lr_db_connec ...
- LoadRunner测试结果分析03 转载至zhangzhe的新浪博客
LoadRunner测试结果分析之我见 前面分析的Web Resource(网络资源)的测试情况,其主要关注的是服务器性能,而系统本身和环境都有可能存在问题,页面诊断(Web Page Diagnos ...
- LoadRunner测试结果分析02 转载至zhangzhe的新浪博客
LoadRunner测试结果分析之我见 上述测试过程的重点在于事务,而LoadRunner生成的测试结果图并不局限于事务上,其中还有是关于Vusers.Errors.Web Resources.Web ...
- LoadRunner测试结果分析01 转载至zhangzhe的新浪博客
LoadRunner测试结果分析之我见 LoadRunner生成测试结果并不代表着这次测试结果的结束,相反,这次测试结果的重头戏才刚刚开始.如何对测试结果进行分析,关系着这次测试的成功与否.网上关于L ...
- LoadRunner测试场景中添加负载生成器
如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...
- LoadRunner测试50人同时登陆下单
LoadRunner测试50人同时登陆下单 一.LoadRunner简介 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找 ...
- LoadRunner参数化MySQL
准备:安装[msql-ODBC驱动] 一.配置数据源 1.Win7,打开控制面板-系统和安全-管理工具,点击“数据源(ODBC)”. 打开数据源(ODBC),在用户DSN选项卡中点击“添加”按钮,弹出 ...
随机推荐
- [Visual Studio] 安装清单
VS安装位置要求路径必须是英文,且位于Program Files (x86)文件夹下. 下载工具vs_Professional.exe:https://pan.baidu.com/s/1jHRjiia ...
- 在IDEA(phpStorm)中使用Babel编译ES6
安装Babel 官方文档建议我们根据单个项目进行本地安装,原因是不同的项目可以依赖不同版本的 Babel,使你的项目更方便移植.更易于安装. 在项目的根目录下使用命令行工具(CMD等)执行下面代码 n ...
- 正确率、召回率和F值
正确率.召回率和F值是在鱼龙混杂的环境中,选出目标的重要评价指标. 不妨看看这些指标的定义先: 正确率 = 正确识别的个体总数 / 识别出的个体总数 召回率 = 正确识别的个体总数 / 测试集中存 ...
- lanmp安装一(centos+apache+nginx+mysql+php=lanmp地址下载)
背景 centos7 官网地址https://www.centos.org/download/ 下载选择DVD版进入(也就是标准版,系统齐全) 点击任何一个国家的下载链接 下载地址 http://m ...
- High Voltage Boost Supply
http://learn.adafruit.com/ice-tube-clock-kit/design Tubes such as VFDs, Nixies, Decatrons, etc requi ...
- kgtp linux内核调试
作者:朱辉 开源网址:https://github.com/teawater http://teawater.github.io/kgtp/ 有中文版说明 内核编绎: General set ...
- eclipse中文字体大小修改,让中英文字体协调
貌似有不少人苦恼eclipse中文字体大小修改问题,默认的eclipse中文字体很小,和英文字体大小完全不在一个调子上,因为默认的eclipse juno中英文字体是Consolas,字体大小是10, ...
- TQ2440实现触摸屏和qt图形 解决segmentation fault
使用触摸屏,首先安装触摸屏矫正程序. 下载并解压tslib-1.4,进入主文件夹,运行: 1 [root@localhost ~]#./autogen.sh 2 [root@localhost ~]# ...
- 嵌入式linux应用程序调试方法
嵌入式linux应用程序调试方法 四 内存工具 五 C/C++代码覆盖.性能profiling工具 四 内存工具 您肯定不想陷入类似在几千次调用之后发生分配溢出这样的情形. 许多小组花了许许多多时间来 ...
- LXT技术平台(Lenovo Trust Technology)
LXT技术平台(L是Lenovo的缩写,T是技术Technology,X代表多个应用方向),是联想以用户需求为导向,整合先进技术,为用户提供最佳应用体验的一体化解决方案. 中文:LXT技术平台 外文: ...