一、框架介紹
1、HttpRunner
是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份YAML/JSON腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。
2、Locust
Locust是一款易于使用的分布式用戶負載測試工具。它用于對網站(或其他系統)進行負載測試,并確定系統可以處理多少并發用戶。HttpRunner 通過復用Locust ,可以在無需對 YAML/JSON 進行任何修改的情況下,直接運行性能測試。
3 httprunner使用手冊
附httprunner中文使用文檔地址:https://cn.httprunner.org/
二、環境安裝
1 安裝httprunner:? ?pip install httprunner==2.2.5
2 安裝har2case:? ? pip install har2case
3 檢查安裝是否成功:hrun -h/-v;har2case -h/-v
4?安裝locust:? ??pip install locustio
三、在 HttpRunner 安裝成功后,系統中會新增如下 5 個命令:
1 httprunner: 核心命令
2 hrun: httprunner 的縮寫,功能與 httprunner 完全相同
3 locusts: 基于 Locust?實現性能測試
4 har2case: 輔助工具,可將標準通用的 HAR 格式(HTTP Archive)轉換為YAML/JSON格式的測試用例
四、用例生成
(1)利用fiddler/charles對接口數據進行抓包,將結果導出為XX.har文件
(2)將導出的XX.har文件轉化為json文件/yaml文件
轉化為json文件:har2case? xx.har
轉化為yaml文件:har2case? xx.har? ?-2y/--to-yml
?(3)? 轉化成功后的yaml文件如下:
status_code:請求的狀態碼
headers.Content-Type:將響應頭的內容格式做驗證
content.msg:響應內容的關鍵字作為驗證
----------------------------------------------------------------------
config:作為整個測試用例集的全局配置項,包括變量(variables,name)
test:對應單個測試用例
name?這個test的名字(用例的名稱)
request?這個test具體發送http請求的各種信息, 如下:
url?請求的路徑 (若config中有定義base_url, 則完整路徑是用 base_url + url )
method?請求方法 POST, GET等等
headers:請求頭
請求體:json格式的數據
validate(斷言): 完成請求后, 所要進行的驗證內容. 所有驗證內容均通過該test才算通過,否則失敗.
參數化:
testcases:
-
name: call demo_testcase with data 1
testcase: testcases/test_login.yml
parameters:
#? ? ? username: ["admin1","admin"]
? ? ? -username:
? ? ? ? - ["admin1"]
????????- ["admin"]
測試用例(testcase)嵌套testcases
變量取值:
響應頭和響應體的提取:
提取HTML的內容(正則表達式)
上傳文件場景
四、生成項目文檔:
(1)進入D盤
?(2)輸入命令:hrun? --startproject? 項目名稱
? ? ?testcases:存放用例
? ? ??testsuites:存放套件
? ? ??reports:自動生成報告并放到該目錄
3、?進入到目錄,查看對應的文件和目錄
? ? ?可以看到生成的3個目錄和一個py文件,api debugtalk.py? testcases suite
4、將轉化好的XX.har文件放置在項目文件夾testcases目錄中
5 、運行用例
(1)運行單個用例:指定具體的xx.yml或xx.json文件
hrun 文件路徑/hrun 文件路徑 --log-level info
(2)運行多個用例:hrun 文件的testcases目錄
(3) 運行testsuites目錄:運行testsuites目錄中所有的yml用例
參數化:多個參數三種類型參數化
六、查看報告
在項目文件夾report中,生成了html格式的測試報告,包括log日志記錄(包含request and response data)
注意事項:
hrun xx.yaml --log-level debug
(3) 將運行過程中的中間數據作為日志保存:hrun xx.yaml --log-file xx.log
七、接口的性能測試---locusts
1 執行性能測試用例:locusts -f? 文件路徑(相對路徑)? --processes
(在 Locust 中需使用多核處理器的能力,--processes?參數,可以一次性啟動 1 個 master 和多個 salve。若在?--processes?參數后沒有指定具體的數值,則啟動的 slave 個數與機器的 CPU 核數相同。)
2 用例運行完成后,在瀏覽器中輸入地址? ?http://localhost:8089/,可查看到locust頁面
Number of total users to simulate:并發用戶數
Hatch rate?(users spawned/second):多少秒啟動這些并發
Host:接口的主機地址
locustos在執行請求動作
3 查看性能測試報告:
(2) 每秒完成的請求數(RPS:Requests Per Second)
?(3)響應時間(Response Times),單位ms
(4)不同時間的虛擬用戶數:穩定值(一定時間后)
(5)查看cpu并發壓力:類似負載均衡--CPU usage(cpu的使用率)
6、參數說明
host:http://10.0.10.27:10080
請求路徑(name):/api/login
7 腳本執行結果
從測試結果可以看出,實際上每秒并沒有觸發10個請求(RPS值不到10),因為在locustfile.py文件里面有個等待機制
min_wait = 1000 最小等待時間1秒
max_wait = 5000? 最大等待時間5秒
把max_wait改成1000就可以達到 10 RPS了
locustfile.py
當啟動locusts的時候,會在當前目錄自動生成一個locustfile.py文件。這個才是locust的腳本文件
使用locust執行locustfile.py腳本文件
locust -f locustfile.py
測試結果 RPS=9.9 接近10