1 搭建ebusiness場景
1.1錄制
1,打開Window IE浏覽器代理
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcuYjM2QTOhF2YkZTM3UjZiJjZ3E2NxkzNzcjYkFWMmNjMvw1N2YzNxUjNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
2,啟動ebusiness服務
3,打開JMeter,右鍵點選 Test Plan->Add->Threads(user)->Thread Group 添加一個線程組
4,Thread Group->Add->ConfigElement->Http request Default
5,如圖設定
6,右鍵點選 Test Plan->Add->Non-test Elements->Http(s) Test ScriptRecorder 添加HTTP代理伺服器
7,如下圖進行修改
8,加上過濾
(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)
9,點選start開始錄制
10,錄制完畢出現如下圖所示
11,删除不需要的,修改一下名稱
12. 把Simple Control換為LoopControl,
13,把編碼改為utf-8
14,删除“HTTP(S) Test Script Recorder”。
15,删除“HTTP Header Manager”。
16,在頭部加入“HTTP Header Manager”
17,在頭部加入“HTTP Cookie Manager”
注意:一定必須為“标準(standard)”。
18,由于“登入驗證界面”驗證通過後自動進入“商品清單頁面”,删除“商品清單頁面”,然後調整一下“登入驗證界面”。
19,關閉“HTTP Request Defaults”
20,加上“檢視結果樹”“Debug Sample”執行下腳本,進行驗證。
Sample->Debug Sample
Listener->View Result Tree
運作
檢視是403錯誤,沒有權限。
1.2處理csrftoken
1.添加正則表達提取器:PostProcessors->Regular Expression Extractor
2. 添加cookies:Config Elements-> HTTP Cookies Manager
3. POST參數也是這樣也用這個參數
4. 設定響應斷言:Assertion->Response Assertion
5. 試運作
6. 設定BeanShell斷言:Assertion-> BeanShell Assertion
response = prev.getResponseDataAsString();
Failure = true;
if (response.contains("電子商務系統")){
Failure = false;
}else{
FailureMessage="響應内容中沒有找到電子商務系統";
}
複制
1.3 多場景
1. 獲得csrftoken
2.設定csrftoken
3. 建立兩個Throughput Controller:Logic Controller->ThroughputController,分别為“查詢商品”“檢視商品詳情”。使用者配置設定分别為:
二者與“登入界面”“商品清單界面”處于同等位置。
5. 建立“查詢商品”事務。
6,建立驗證查詢商品是否成功
通過驗證是否進入到/search_name/目錄下。
7. 建立“檢視商品詳情”事務。
通過${__Random(1,5,num)}随機檢視編号為1、2、3、4、5的商品。
8. 加入驗證
9. 設定線程為2
10.設定循環5次
11. 加入Summary Report
12. 運作
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
- user.dat為檔案名。
- UTF-8為編碼格式。
- username,password為擷取後的參數。
- ,為分割符号。
2.修改POST參數
3. 設定Loop Control循環次數為5
4. 試運作
并且通過Debug Sample檢視參數是否正确。
- username=peter
- password=zxcvb
1.3.2 使用函數助手做參數化
1,點選
進入函數助手
2,選擇random
産生從0-2之間的整數
3,建立type.txt
茶,測試,包
複制
4,選擇csvread函數
- type.txt為參數檔案
- ${__Random(0,2,num)}為0,1,2随機之間任意一個随機數。
5,在查詢商品頁面進行參數化,
- 查詢參數為{__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
其中:
- Search:為連接配接JDBC Request的參數;
- jdbc:mysql://localhost:3306/sec中3306為mysql的端口号,sec為通路的資料庫名。
- root為登入名
- 123456為密碼,不明文顯示。
3,Sample->JDBC Request
- 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來提取使用者名和密碼。
建立正則表達提取器
- 從變量result中擷取。
- 擷取完畢存入變量parm中。
- 正則表達提取式為:{name=(.*?),password=(.*?)}。
- 由于有兩個變量,是以Template為:12。
- 随機取數,Match No.輸入:0
5,在POST請求中修改參數。
username、password分别為{parm_g1}、{parm_g2}。
6,運作
到此位置接口設定的部分結束,開始與性能相關的部分。
1.5 性能相關的設定
1. 設定線程組
- 50個線上使用者,在5秒内加載完畢。測試持續600秒(10分鐘),啟動後5秒後開始執行。
2.設定無限循環
3. 在登入請求後加入同步集合點:Timer->Synchronizing Timer。
- 并發使用者為5
- 4秒後,如果達不到并發條件,立即執行。
4. 同樣在“查詢商品”“檢視商品詳情”也加入同步集合點。
1.6 設定報表
1.6.1 Summary Report
Listener->Summary Report
1.6.2 Aggregate Report
Listener->Aggregate Report
1.6.3 Aggregate Graph
Listener->Aggregate Graph
Aggregate Graph比Aggregate Report多了個圖顯示
1.6.4 Response Time Graph
Listener->Response Time Graph
1.6.5 Graph Results
Listener->Graph Results
強烈要求在測試執行的時候不要打開報表,用指令行執行,然後産生執行報告後導入JMeter。
1.6 整體運作
1.6.1 僅運作登入
将“查詢商品”“檢視商品詳情”吞吐量控制器設定為0%
檢視Summary Repoer,僅有“登入頁面”和“商品清單頁面”
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
3 上傳多個檔案
1,config Element->CSV Data SetConfig
2,修改Http request
3,增加循環次數
4,運作,檢視伺服器端