lr创建mysql odbc_LoadRunner利用ODBC编写MySql脚本

分类: 4.软件设计/架构/测试 2010-01-08 17:48 5635人阅读

最近做了几周的LoadRunner测试,有一些心得,记录下来,以便以后查找。

LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持)。LoadRunner本身直接支持Oracle、

SqlServer数据库,这两个数据库直接选择相应的协议就可以录制脚本。而MySql数据库只能利用ODBC协议来录制(编写)脚本,所以必须要

MySql的ODBC驱动,和支持ODBC的查询分析器(录脚本需要,自己编写就不需要)。

1、首先要安装MySql的ODBC驱动,MyODBC 3.51.11 WIN。

2、从“控制面板”打开“数据源ODBC”,如果没有找到(我的电脑上就没有找到)。到桌面,新建一个快捷方式,目标位置:%SystemRoot%/system32/odbcad32.exe。

3、打开ODBC管理程序,添加的驱动为“MySQL ODBC 3.51 Driver”,然后填写一些ip、用户名、密码之类的,测试一下就可以了。(这一步其实是非必须的,如果写连接串,就不需要,如果要用DNS数据库名,就需要)

4、安装一个查询分析器,这个查询分析器必须是支持ODBC 的(这是必须的,否则录不上),这很不好找。我找了一个,还不好用,叫“通用数据库查询分析器”。http://www.onlinedown.net/soft/31366.htm 。

5、启动LoadRunner,Create Scripts;Application type选择Win32

Applications;Program

record选择第4步的查询分析器位置,记得查询分析器选择“ODBC”,才能录得上;录完了,运行一下是否正常。

6、Run Load Tests的时候,如果失败,看看License是否支持,用global-100的License就可以了。

录制的脚本是惨不忍睹(又臭又长),所以,我试着手工编写了一个简单的,每行都有注释,如果要高级的,请参考LoadRunner的帮助文档。

#include "lrd.h"

Action()

{

static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};

static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =

{

{LRD_DBTYPE_ODBC, LRD_DBVERSION_ODBC_30},

{LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}

};

static LRD_CONTEXT FAR * Ctx1;

static LRD_CONNECTION FAR * Con1;

static LRD_CURSOR FAR *     Csr1;

//上面的定义的代码如果录制脚本,在vdf.h中就有定义,同时还有一些其他文件

//如果手写脚本,则需要手工添加,主要是定义各种变量

//查询行数

unsigned long count=0;

//初始

lrd_init(&InitInfo, DBTypeVersion);

//打开上下文

lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);

//申请连接的内存

lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);

//打开连接,注意DRIVER就是上面安装的

lrd_open_connection(&Con1, LRD_DBTYPE_ODBC, "", "","", "DRIVER=MySQL ODBC 3.51 Driver;UID=root;PWD=123456;SERVER=192.168.1.99;DATABASE=TestDB", Ctx1, 1, 0);

//打开游标

lrd_open_cursor(&Csr1, Con1, 0);

//Sql语句,注意1代表的意思是,立马执行

lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -1, 1, 0 /*None*/, 0);

//统计行数到count变量中

lrd_row_count(Csr1, &count, 0);

//打印消息

lr_message("count= %d",count);

//先关闭游标

lrd_close_cursor(&Csr1, 0);

//再关闭连接

lrd_close_connection(&Con1, 0, 0);

//释放连接,和alloc相呼应,否则有内存泄露

lrd_free_connection(&Con1, 0 /*Unused*/, 0);

//再关闭上下文

lrd_close_context(&Ctx1, 0, 0);

//完毕,返回0

return 0;

}

写完了,自己运行一下可以查看日志如下:

------------------------------------------------------------------------------

Starting iteration 1.

Starting action Action.

Action.c(8): lrd_open_connection: User="", Server=""

Action.c(11): lrd_stmt: select column1 from table1 where colum1 = 1;

count= 1

Action.c(16): lrd_close_connection: User="", Server=""

Ending action Action.

------------------------------------------------------------------------------

count = 1表示查询成功了

==========================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值