最近做了几周的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的帮助文档。

  1. #include "lrd.h"
  2. Action()
  3. {
  4. static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
  5. static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =
  6. {
  7. {LRD_DBTYPE_ODBC, LRD_DBVERSION_ODBC_30},
  8. {LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}
  9. };
  10. static LRD_CONTEXT FAR * Ctx1;
  11. static LRD_CONNECTION FAR * Con1;
  12. static LRD_CURSOR FAR *     Csr1;
  13. //上面的定义的代码如果录制脚本,在vdf.h中就有定义,同时还有一些其他文件
  14. //如果手写脚本,则需要手工添加,主要是定义各种变量
  15. //查询行数
  16. unsigned long count=0;
  17. //初始
  18. lrd_init(&InitInfo, DBTypeVersion);
  19. //打开上下文
  20. lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
  21. //申请连接的内存
  22. lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);
  23. //打开连接,注意DRIVER就是上面安装的
  24. 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);
  25. //打开游标
  26. lrd_open_cursor(&Csr1, Con1, 0);
  27. //Sql语句,注意1代表的意思是,立马执行
  28. lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -1, 1, 0 /*None*/, 0);
  29. //统计行数到count变量中
  30. lrd_row_count(Csr1, &count, 0);
  31. //打印消息
  32. lr_message("count= %d",count);
  33. //先关闭游标
  34. lrd_close_cursor(&Csr1, 0);
  35. //再关闭连接
  36. lrd_close_connection(&Con1, 0, 0);
  37. //释放连接,和alloc相呼应,否则有内存泄露
  38. lrd_free_connection(&Con1, 0 /*Unused*/, 0);
  39. //再关闭上下文
  40. lrd_close_context(&Ctx1, 0, 0);
  41. //完毕,返回0
  42. return 0;
  43. }

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

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

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表示查询成功了

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

性能相关的系列文章:

LoadRunner利用ODBC编写MySql脚本 
LoadRunner压力测试时监控服务器Linux的资源情况 
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate 
高性能服务器架构(High-Performance Server Architecture) 
网站性能测试PV到TPS的转换以及TPS的波动 
用GTmetrix来优化你的网页(集成了YSlow、FireBug的功能)

LoadRunner利用ODBC编写MySql脚本的更多相关文章

  1. LoadRunner利用ODBC编写MySql脚本(转)

    LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持).LoadRunner本身直接支持Oracle.SqlServer数据库,这两个数据库直接选择相应的协议 ...

  2. loadrunner通过odbc测mysql数据库语句

    #include "lrd.h" Action() { double trans_time;  //定义一个double型变量用来保存事务执行时间 static LRD_INIT_ ...

  3. loadrunner 利用JDBC操作mysql数据库

    import lrapi.lr;import java.util.ArrayList;import java.util.List; import java.sql.Connection; import ...

  4. MFC通过ODBC连接mysql(使用VS2012编写MFC)

    原创文章,转载请注明原文:MFC通过ODBC连接mysql(使用VS2012编写MFC) By Lucio.Yang 1.ODBC连接mysql 首先ODBC是什么呢? 开放数据库互连(Open Da ...

  5. 利用java编写的盲注脚本

    之前在网上见到一个盲注的题目,正好闲来无事,便用java写了个盲注脚本,并记录下过程中的坑 题目源码: <?php header("Content-Type: text/html;ch ...

  6. Loadrunner与idea编写加密的java Vusers脚本总结

    Loadrunner与idea编写加密的java Vusers脚本总结 准备工作:   jdk版本的选择:       Loadrunner11 使用版本jdk1.6 32位(如果使用1.7的Load ...

  7. Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本

    脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...

  8. Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本

    脚本开发-利用Loadrunner生成Web service测试脚本 1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“ ...

  9. CentOS下编写shell脚本来监控MySQL主从复制的教程

    这篇文章主要介绍了在CentOS系统下编写shell脚本来监控主从复制的教程,文中举了两个发现故障后再次执行复制命令的例子,需要的朋友可以参考下 目的:定时监控MySQL主从数据库是否同步,如果不同步 ...

随机推荐

  1. directive 指令

    参考文章 : http://www.zouyesheng.com/angular.html#toc20    18. 自定义指令directive http://blog.jobbole.com/62 ...

  2. Qt for Windows - Deployment和它的参数

    http://doc.qt.io/qt-5/windows-deployment.html

  3. Borland license information was found,but it is not valid for delphi.

    The start Delphi7 come amiss: Borland license information was found,but it is not valid for delphi. ...

  4. 原型模式 - OK

    原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 简单说来原型模式就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节. 原型模式UML ...

  5. cf493A Vasya and Football

    A. Vasya and Football time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  6. hdu 4512 吉哥系列故事——完美队形I_LCIS

    题目链接 题意: 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要    求,则就是新 ...

  7. cocos2dx-lua绑定自定义c++类(一)

    本文主要介绍mac上,如何将自定义的c++类,绑定到lua. 1.工具先行 找到 你的cocos2d-x/tools/tolua++,里面文件按类型大致分为: (1)*.pkg:用于定义要绑定的c++ ...

  8. vim编辑器的设置文件

    vim配置特点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 2.自动插入文件头 ,新建C.C++源文件时自动插入表头:包括文件名 ...

  9. WPF 实现控件间拖拽内容

    想实现这样一个常用功能:在ListBox的一个Item上点住左键,然后拖拽到另外一个控件(如ListView中),松开左键,数据已经拖拽过来. 步骤如下: 1. 设置ListBox 的AllowDro ...

  10. 多封装,少开放。强烈建议C++标准添加class之间的注入机制

    近日在改动了一下下引擎代码(为了自己的组件),发现有些接口是仅仅有特定类及其内部函数才去訪问,却不使用友元声明的形式进行数据訪问--当然使用了普通非virtual的形式也就是意味着不建议重载. 故此: ...