1. 程式人生 > >一個使用Jmeter做接口性能測試的實戰案例

一個使用Jmeter做接口性能測試的實戰案例

如果 sql查詢語句 進入 port plugins 連接 ext 目標 本地

1 安裝並配置Jmeter

Jmeter的安裝不在這裏闡述,安裝步驟非常簡單。

直接進入主題

1.1 數據庫連接配置

由於測試過程需要調用數據庫獲取響應部署數據,因此需要先建立與數據庫的連接。 如果不涉及數據操作,可以跳過此步驟。

步驟1:打開jmeter開源性能測試工具,測試計劃->添加線程組

步驟2:添加jdbc request請求 –>添加JCBC connection Configuration 數據庫連接配置

步驟3:配置jdbc request請求,添加sql查詢語句

舉例Sql語句:

select DISTINCT A.XX,A.XX,B.XX,A.XXX

from Table A

left join

(select XX,XX,XX,XXX from TableB) as B

on A.XXX=B.XXX

where XX like ‘KKK%‘;

步驟4:添加後置處理器 JDBC Request->後置處理器-> BeanShell PostProcessor

對選擇出來的數據進行參數化處理。

import java.util.ArrayList;
String count_DB = vars.get("var_#");
int count = Integer.parseInt(count_DB);
ArrayList 變量ANoArray 
= new ArrayList(); ArrayList 變量BNoArray = new ArrayList(); for(int i=0;i<count;i++){ String 變量A= String.valueOf(vars.getObject("result").get(i).get("變量A")); String 變量B= String.valueOf(vars.getObject("result").get(i).get("變量B")); 變量ANoArray.add(變量A); 變量BNoArray.add(變量B); } vars.putObject(
"變量ANoArray",變量ANoArray); vars.putObject("變量BNoArray",變量BNoArray);

1.2http請求配置

步驟1:增加循環循環控制器 線程組->邏輯控制器->循環控制器

步驟2:添加自增計數器

步驟3:添加Constant Throughput Timer (常數吞吐量定時器)

 Target throughput(in samples per minute):目標吞吐量。註意這裏是每分鐘發送的請求數,因此,對應測試需求中所要求的1000/s,這裏的值應該是 60000。

註意:

Constant Throughput Timer只有在線程組中的線程產生足夠多的request 的情況下才有意義,因此,即使設置了Constant Throughput Timer的值,也可能由於線程組中的線程數量不夠導致沒有生效。實測,一個線程可以啟動10-20的並發,那麽一個可設置300個線程左右。

步驟4:添加http請求

註意json格式的需要增加 http信息頭管理器,Content-Type設置為application/json。

http的詳細請求中根據業務的接口報文來添加數據,主要添加如下:

請求地址

URL

端口

請求報文

步驟5:添加前置處理器 http請求->前置處理器-> BeanShell PreProcessor

根據jdbc請求出來的數據,參數化,實現批量數據操作

import java.util.ArrayList;
String Counter_DB = vars.get("Counter");
int Counter_1 = Integer.parseInt(Counter_DB);
int Counter = Counter_1-1;
log.info("……………Counter………"+Counter);
ArrayList 變量ANoArray = vars.getObject("變量ANoArray");
ArrayList 變量BNoArray = vars.getObject("變量BNoArray");
String 變量A= 變量ANoArray.get(Counter);
String 變量B= 變量BNoArray.get(Counter);
vars.put("變量A",變量A);
vars.put("變量B",變量B);
log.info("……………變量A………"+變量A);
log.info("……………變量B………"+變量B);

步驟6:添加BeanShell Sampler實現請求數據的MD5加密

如果請求中的數據涉及md5加密,Jmeter自身沒有實現MD5加密的函數,可以自定義一個jar包

參考:http://blog.csdn.net/yuanwq2012/article/details/51252649

註: MD5加密包放到此目錄下,重啟Jmeter即可生效

apache-jmeter-3.2\apache-jmeter-3.2\lib

3.3添加監控數據

在服務器上啟動agent,作為服務端:

cd JmeterAgent/

./startAgent.sh –sysinfo

Jmeter 作為客戶端連接服務器:

首先,需要獲取JMeterPlugins-Standard-1.4.0插件包,並解壓到本地任一目錄下如D:\software\apache-jmeter-3.2\apache-jmeter-3.2\lib\ext目錄下,重啟Jmeter生效。

3.4 性能測試執行&數據收集

點擊Jmeter的啟動按鈕,啟動測試,測試過程註意觀察請求結果是否有報錯。測試結果如果不達標,則需要進行性能調優。

一個使用Jmeter做接口性能測試的實戰案例