1. 程式人生 > >Jememeter和Loadrunner測試MySQL性能

Jememeter和Loadrunner測試MySQL性能

found execute mes 執行sql 驅動程序 ack output data con

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性能