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