首页 > 代码库 > Jememeter和Loadrunner测试MySQL性能

Jememeter和Loadrunner测试MySQL性能

From:http://blog.csdn.net/testingstar/article/details/60579454

MySQL数据库性能测试的方法

前置条件:

安装系统:windows 7 64

MySQL版本:mysql-installer-community-5.6.35.0

Java版本:jdk1.6.0_45

Jmeter版本:apache-jmeter-3.1

Mysql odbc驱动:mysql-connector-odbc-5.1.7-win32.msi

Mysql jdbc驱动:mysql-connector-java-5.1.7-bin.jar

使用Jmeter JDBC Request方式实现

1.

打开JMeter,点击测试计划,点击浏览...”按钮,将你的JDBC驱动添加进来。

技术分享

2.

添加一个线程组,

右键点击线程组,在下面添加一个“JDBC Connection Configuration”

技术分享

来配置一下JDBCConnection Configuration页面。

技术分享

3.

右键点击线程组,在下面添加一个“JDBC request”,并配置请求信息;

技术分享

技术分享

4.

添加断言。

右键点击线程组---->添加--->断言---->响应断言。

技术分享

5.

我们来添加一些监听器来行查看(根据实际的需要配置监听器)

添加一个断言结果:

右键点击线程组---->添加--->监听器---->结果断言。

添加一个图形结果:

右键点击线程组---->添加--->监听器---->图形结果。

添加一个查看结果树:

右键点击线程组---->添加--->监听器---->查看结果树。

下面是添加所有东东的列表:

技术分享

6.

在线程组页面设置用户数、启动时间、循环次数

点击菜单栏运行”----“启动

下面是结果:

技术分享

其它的结果图片就不贴了......

 

 

使用Loadrunner 11 Web Services协议中的lr_db_xxxx系列函数方式实现

1.      安装MySQL ODBC驱动

 

在网上下载一个是MYSQL数据库的ODBC驱动程序:mysql-connector-odbc-5.1.7-win32.msi (已上传),以默认选项安装该文件。]

技术分享

技术分享

技术分享

2.  2

打开数据源:开始->设置->控制面板->找到数据源,或者直接访问数据源启动配置路径

技术分享

3.  3

打开数据源(ODBC),在用户DSN选项卡中点击“添加”按钮,弹出“创建新数据源”窗口。

技术分享

4.  4

选中“MYSQL ODBC 5.1Driver”,点击“完成”按钮。

技术分享

5.  5

弹出新窗口,在login选项卡中填写数据源信息。
Data Source Name 数据原名称;
Discription 描述(选填);
Server 数据源计算机的IP;
User 数据库用户名;
Password 数据库密码;
DataBase 数据源所要连接的数据库;

技术分享

6.  6

配置完后,点击“test”按钮,如果出现如下提示,即配置成功。

技术分享

 步骤阅读

点击“OK”返回用户DSN选项卡,增加一条记录,名为你所配置的数据源名称。

 技术分享

到此 Mysql ODBC 驱动安装配置成功。

2.启动Loadrunner的Virtual Vuser Generator ,创建Web Services协议脚本(因为lr_db_xxxx类函数只支持web services协议)

技术分享

3、根据实际需要编写脚本

1)lr_db_xxxx相关函数参数细信息:

int lr_db_connect("StepName","ConnectionString=<connection_string>","ConnectionName=<connection_name>","ConnectionType=<connection_type>", LAST );

int lr_db_executeSQLStatement("StepName=<step_name>","ConnectionName=<connection_name>","SQLStatement=<statement>",["DatasetName=<dataset_name>",] LAST );

int lr_db_dataset_action("StepName=<step_name>","DatasetName=<dataset_name>", "Action=<action>",LAST );

int lr_db_getValue("StepName=<step_name>","DatasetName=<dataset_name>","Column=<column>", "Row=<row>","OutParam=<output_parm>", LAST );

int lr_db_disconnect("StepName=<step_name>","ConnectionName=<connection_name>", LAST );

2)具体的脚本实现方法

Action()

{

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

   int NumRows=0;

   int i=0;

   lr_db_connect("StepName=databaseConnect",

                 "ConnectionString=DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;PORT=3306;DATABASE=test;USER=root;PASSWORD=012306;OPTION=3",

                 "ConnectionName=Mysql",

                 "ConnectionType=ODBC",

                  LAST);

   lr_start_transaction("SQL");

   //while(i<=5){

       lr_db_executeSQLStatement("StepName=PerformQuery",

                                 "ConnectionName=Mysql",

                                 "SQLStatement=SELECT * FROM student",

                                 "DatasetName=test",LAST);

        //i++;

       //}//执行SQL语句

   /*lr_output_message(lr_eval_string("{idParam}"));*/

   lr_end_transaction("SQL", LR_AUTO);

   lr_output_message("The query returned %d rows.",NumRows);

   lr_db_dataset_action("StepName=actionPrint",

   "DatasetName=test",

    "Action=PRINT",

   LAST);//对数据库执行操作

    /*while(i<NumRows){

       lr_db_getvalue("StepName=GetValue",

                      "DatasetName=test",

                      "Column=sname", //字段名

                      "Row=next",

                      "OutParam=MyOutputParam",

                      LAST);

       lr_output_message("The value is: %s",lr_eval_string("{MyOutputParam}") );

       i=i+1;

       }*/

 

   lr_db_disconnect("StepName=disconnect",

                    "ConnectionName=Mysql",LAST);

   //ConnectionName的值与lr_db_connect中的ConnectionName值要相同

   //与数据库断开连接

    return0;

}

技术分享

3)调试执行脚本

 技术分享

 

 

使用Loadrunner 11  Java Vuser协议 JDBC链接方式实现

1.启动Loadrunner的Virtual Vuser Generator ,创建Java/Java Vuser协议脚本

技术分享

2.根据实际需要编辑Mysql的请求链接、数据插入、修改、查询、删除脚本

/*

 * LoadRunner JavaScript. (Build: _build_number_)

 *

 * ScriptDescription:

 *                    

 */

 

import java.awt.List;

import java.sql.*;

import java.sql.DriverManager;

import java.sql.Statement;

 

import com.mysql.jdbc.Connection;

 

import lrapi.lr;

 

public class Actions

{

 

    public intinit() throws Throwable {

       return 0;

    }//end of init

 

    public intaction() throws Throwable {

            intColumnCount;

            intRowCount;

            Stringdriver = "com.mysql.jdbc.Driver";

            Stringurl = "jdbc:mysql://localhost:3306/test";

            Stringuser = "root";

            Stringpassword = "012306";

            try {

               Class.forName(driver);

               lr.start_transaction("jdbc");

               Connection conn = (Connection)DriverManager.getConnection(url,user,password);

               if(!conn.isClosed())

                {

                   System.out.println("数据库连接成功");

 

               lr.start_transaction("search");

           String sqls="select stu_id,sname,sage,ssexfrom student";  //sql语句

                   PreparedStatement ps = conn.prepareStatement(sqls);

                   ResultSet rs = ps.executeQuery();

               lr.end_transaction("search",lr.AUTO);

               while(rs.next()){

           ResultSetMetaData rsmd = rs.getMetaData();

                   ColumnCount = rsmd.getColumnCount();

                   rs.last();

                   RowCount = rs.getRow();

                   System.out.println("结果集的列数:" + ColumnCount);

                    System.out.println("结果集的行数:" + RowCount);

           }

       ps.close();

       conn.close();

                }

              lr.end_transaction("jdbc",lr.AUTO);

            }

            catch(ClassNotFoundException e)

            {

                System.out.println("数据库驱动程序没有找到");

               e.printStackTrace();

            }

            catch(SQLException e)

            {

               e.printStackTrace();

            }

        return 0;

        }//end of action

    public int end()throws Throwable {

       return 0;

    }//end of end

}

技术分享

Jememeter和Loadrunner测试MySQL性能