天天看點

通過案例教你玩轉JMeter

1 搭建ebusiness場景

1.1錄制

1,打開Window IE浏覽器代理

通過案例教你玩轉JMeter

2,啟動ebusiness服務

3,打開JMeter,右鍵點選 Test Plan->Add->Threads(user)->Thread Group 添加一個線程組

4,Thread Group->Add->ConfigElement->Http request Default

5,如圖設定

通過案例教你玩轉JMeter

6,右鍵點選 Test Plan->Add->Non-test Elements->Http(s) Test ScriptRecorder 添加HTTP代理伺服器

7,如下圖進行修改

通過案例教你玩轉JMeter

8,加上過濾

通過案例教你玩轉JMeter

(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)

9,點選start開始錄制

10,錄制完畢出現如下圖所示

通過案例教你玩轉JMeter

11,删除不需要的,修改一下名稱

通過案例教你玩轉JMeter

12. 把Simple Control換為LoopControl,

13,把編碼改為utf-8

通過案例教你玩轉JMeter

14,删除“HTTP(S) Test Script Recorder”。

15,删除“HTTP Header Manager”。

16,在頭部加入“HTTP Header Manager”

通過案例教你玩轉JMeter

17,在頭部加入“HTTP Cookie Manager”

通過案例教你玩轉JMeter

注意:一定必須為“标準(standard)”。

18,由于“登入驗證界面”驗證通過後自動進入“商品清單頁面”,删除“商品清單頁面”,然後調整一下“登入驗證界面”。

19,關閉“HTTP Request Defaults”

通過案例教你玩轉JMeter

20,加上“檢視結果樹”“Debug Sample”執行下腳本,進行驗證。

Sample->Debug Sample

Listener->View Result Tree

運作

通過案例教你玩轉JMeter

檢視是403錯誤,沒有權限。

1.2處理csrftoken

1.添加正則表達提取器:PostProcessors->Regular Expression Extractor

通過案例教你玩轉JMeter

2. 添加cookies:Config Elements-> HTTP Cookies Manager

通過案例教你玩轉JMeter

3. POST參數也是這樣也用這個參數

通過案例教你玩轉JMeter

4. 設定響應斷言:Assertion->Response Assertion

通過案例教你玩轉JMeter

5. 試運作

通過案例教你玩轉JMeter

6. 設定BeanShell斷言:Assertion-> BeanShell Assertion

通過案例教你玩轉JMeter
response = prev.getResponseDataAsString();     
Failure = true;
if  (response.contains("電子商務系統")){
       Failure = false;
}else{
       FailureMessage="響應内容中沒有找到電子商務系統";
}           

複制

1.3 多場景

1. 獲得csrftoken

通過案例教你玩轉JMeter

2.設定csrftoken

通過案例教你玩轉JMeter

3. 建立兩個Throughput Controller:Logic Controller->ThroughputController,分别為“查詢商品”“檢視商品詳情”。使用者配置設定分别為:

通過案例教你玩轉JMeter
通過案例教你玩轉JMeter

二者與“登入界面”“商品清單界面”處于同等位置。

通過案例教你玩轉JMeter

5. 建立“查詢商品”事務。

通過案例教你玩轉JMeter

6,建立驗證查詢商品是否成功

通過案例教你玩轉JMeter

通過驗證是否進入到/search_name/目錄下。

7. 建立“檢視商品詳情”事務。

通過案例教你玩轉JMeter

通過${__Random(1,5,num)}随機檢視編号為1、2、3、4、5的商品。

8. 加入驗證

通過案例教你玩轉JMeter

9. 設定線程為2

通過案例教你玩轉JMeter

10.設定循環5次

通過案例教你玩轉JMeter

11. 加入Summary Report

12. 運作

通過案例教你玩轉JMeter

13.“查詢商品”“檢視商品詳情”符合設定比例,是否符合預期的80%和20%。

1.4參數化

1.3.1使用cvs參數化

建立參數檔案:user.dat

linda,knyzh158
cindy,123456
jerry,654321
susan,qwert
peter,zxcvb           

複制

加入參數化:Config Element->CSVData Set Config

通過案例教你玩轉JMeter
  • user.dat為檔案名。
  • UTF-8為編碼格式。
  • username,password為擷取後的參數。
  • ,為分割符号。

2.修改POST參數

通過案例教你玩轉JMeter

3. 設定Loop Control循環次數為5

4. 試運作

通過案例教你玩轉JMeter

并且通過Debug Sample檢視參數是否正确。

  • username=peter
  • password=zxcvb

1.3.2 使用函數助手做參數化

1,點選

通過案例教你玩轉JMeter

進入函數助手

2,選擇random

通過案例教你玩轉JMeter

産生從0-2之間的整數

3,建立type.txt

茶,測試,包           

複制

4,選擇csvread函數

通過案例教你玩轉JMeter
  • type.txt為參數檔案
  • ${__Random(0,2,num)}為0,1,2随機之間任意一個随機數。

5,在查詢商品頁面進行參數化,

通過案例教你玩轉JMeter
  • 查詢參數為{__CVSRead(type.txt, {__Random(0,2,num)})}

6,試運作,通過Debug Sample檢視參數是否正确。

1.3.3通過MySQL參數化

1,mysql-connector-java-5.1.7-bin.jar放入%JMeter_HOME%\lib\ext\。然後重新啟動JMeter。

2,Config Elements-> JDBCConnection Configuration

通過案例教你玩轉JMeter

其中:

  • Search:為連接配接JDBC Request的參數;
  • jdbc:mysql://localhost:3306/sec中3306為mysql的端口号,sec為通路的資料庫名。
  • root為登入名
  • 123456為密碼,不明文顯示。

3,Sample->JDBC Request

通過案例教你玩轉JMeter
通過案例教你玩轉JMeter
  • Search必須與JDBCConnection Configuration一緻
  • name,password為查詢參數的名稱,通過Debug Sample可以看見:
name_#=5
name_1=cindy
name_2=linda
name_3=jerry
name_4=susan
name_5=peter
password_#=5
password_1=123456
password_2=knyzh158
password_3=654321
password_4=qwert
password_5=zxcvb           

複制

  • result為結果集,通過DebugSample可以看見:
result=[{name=cindy, password=123456}, {name=linda,password=knyzh158}, {name=jerry, password=654321}, {name=susan,password=qwert}, {name=peter, password=zxcvb}]           

複制

4,下面我們通過result來提取使用者名和密碼。

建立正則表達提取器

通過案例教你玩轉JMeter
  • 從變量result中擷取。
  • 擷取完畢存入變量parm中。
  • 正則表達提取式為:{name=(.*?),password=(.*?)}。
  • 由于有兩個變量,是以Template為:12。
  • 随機取數,Match No.輸入:0

5,在POST請求中修改參數。

通過案例教你玩轉JMeter

username、password分别為{parm_g1}、{parm_g2}。

6,運作

通過案例教你玩轉JMeter

到此位置接口設定的部分結束,開始與性能相關的部分。

1.5 性能相關的設定

1. 設定線程組

通過案例教你玩轉JMeter
  • 50個線上使用者,在5秒内加載完畢。測試持續600秒(10分鐘),啟動後5秒後開始執行。

2.設定無限循環

通過案例教你玩轉JMeter

3. 在登入請求後加入同步集合點:Timer->Synchronizing Timer。

通過案例教你玩轉JMeter
  • 并發使用者為5
  • 4秒後,如果達不到并發條件,立即執行。

4. 同樣在“查詢商品”“檢視商品詳情”也加入同步集合點。

1.6 設定報表

1.6.1 Summary Report

Listener->Summary Report

通過案例教你玩轉JMeter

1.6.2 Aggregate Report

Listener->Aggregate Report

通過案例教你玩轉JMeter

1.6.3 Aggregate Graph

Listener->Aggregate Graph

通過案例教你玩轉JMeter

Aggregate Graph比Aggregate Report多了個圖顯示

1.6.4 Response Time Graph

Listener->Response Time Graph

通過案例教你玩轉JMeter

1.6.5 Graph Results

Listener->Graph Results

通過案例教你玩轉JMeter

強烈要求在測試執行的時候不要打開報表,用指令行執行,然後産生執行報告後導入JMeter。

1.6 整體運作

1.6.1 僅運作登入

将“查詢商品”“檢視商品詳情”吞吐量控制器設定為0%

檢視Summary Repoer,僅有“登入頁面”和“商品清單頁面”

通過案例教你玩轉JMeter

1.6.2 僅運作查詢商品

“登入”并發設定為0

“檢視商品詳情”吞吐量控制器設定為0%。

1.6.3 僅運作檢視商品詳情

“登入”并發設定為0

“查詢商品”吞吐量控制器設定為0%。

1.6.4 多場景運作

“查詢商品”吞吐量控制器設定為80%。

“檢視商品詳情”吞吐量控制器設定為20%。

2 使用Http Put請求

1,打開Tomcat put請求,%TOMCAR_HONE%/conf/web.xml。

<servlet>
         <servlet-name>default</servlet-name>
         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
             <param-name>debug</param-name>
             <param-value>0</param-value>
        </init-param>
              <init-param>
         <param-name>readonly</param-name>
         <param-value>false</param-value>
         </init-param>
        <init-param>
            <param-name>listings</param-name>
             <param-value>false</param-value>
        </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>           

複制

2,啟動WEB伺服器

3,啟動JMeter。Sample->Httprequest

4,運作,檢視結果樹。

Listener->View Result Tree

Sample->Debug Sample

通過案例教你玩轉JMeter

3 上傳多個檔案

1,config Element->CSV Data SetConfig

通過案例教你玩轉JMeter

2,修改Http request

通過案例教你玩轉JMeter

3,增加循環次數

通過案例教你玩轉JMeter

4,運作,檢視伺服器端

通過案例教你玩轉JMeter