使用jmeter對web業務進行一次完整的性能測試,包括錄制腳本、腳本調試、設計場景、執行壓測,記錄結果、性能分析等,全面了解使用jmeter進行web性能測試流程。
在錄制腳本前,需要先明確業務流程,需要添加的事務,需要創建幾個線程等。
web業務中一個頁面操作,會有大量的http請求,我們一般不關注單個請求的性能,而是某個操作整體的性能狀況,所以需要將操作添加到事務,最終關注事務的性能狀況。
本例查詢業務,需要進行的操作主要有登錄、搜索菜單、打開菜單、點擊查詢、注銷登錄等,其中一個虛擬用戶,登錄、注銷操作只需要做一次,查詢業務可以做多次,因此將注銷放tearDown Thread Group線程組,所有主線程執行完成后,最后執行,且為了方便查詢操作能和登錄共用一個有效回話,登錄和查詢業務可以放一個線程組,錄制完腳本后登錄操作添加一個Once Only Controller,來實現登錄一次,查詢業務多次操作。
另外還需要根據實際情況,添加公共的默認cookie,http默認值等。
明確了以上問題,就可以在測試計劃中依次添加,如下圖:
2. 配置http代理服務器
測試計劃準備好,就可以對http代理服務器進行設置,包括代理端口、過濾不需要錄制的頁面元素,如.png、css等頁面元素,還需要對瀏覽器設置代理服務器,端口號要和http代理服務器中設置的一致
3. 錄制腳本
http代理服務器和ie代理服務器都設置完成后,點擊【start】按鈕就可以進行腳本錄制了。jmeter5.0后,在錄制腳本過程中有recording框,和loadrunner類似,可以實時添加事務。腳本錄制完成后,可以在響應的事務控制器下看到錄制的腳本。
刪掉不相干的請求,在錄制過程中可能有非業務相關的請求,也一塊記錄,刪除這些請求。
參數化,線程組添加CSV Data Set Config ,將登陸用戶、查詢條件等進行參數化,多并發時就會模擬不同用戶、不同查詢條件。
關聯,如果有需要關聯的參數,在相應的http請求下添加提取器,提取關聯參數進行關聯,關聯參數的確定可以通過fiddler抓包確認,或直接詢問相關的開發人員。
斷言,根據實際需求在相關的請求下添加斷言,來判斷請求是否達到預期值。
登錄事務添加一次性控制器
Cookie共享,注銷和登錄在不同線程組,需要將登錄cookie參數全局化,在注銷線程組中引用。Cookie參數化還需要修改配置文件jmeter.properties中CookieManager.allow_variable_cookies=true,默認是false
測試計劃中勾選Run Thread Group consecutively,這樣多線程組就能順序執行
所有事務控制器都要勾選Generate parent sampler,這樣結果統計按事務統計,否則結果按每個http請求來統計。
以上完成后,就可以添加監控器、View Results Tree、Aggregate Report等,運行腳本,在View Results Tree查看,若有失敗的請求,再根據實際報錯情況進行調試。
參數化、一次性邏輯控制器:
關聯:
全局化cookie參數,在注銷中引用:
腳本調試完成后運行,在View Results Tree中查看,沒有報錯,調試成功
本例設計的場景為5并發,每隔3s起1個并發,壓測5min,完成后查看結果。
在jmeter默認的線程組中設置,不好實現以上場景,可以下載線程組插件,豐富不同場景需求。
本例用Stepping Thread Group (deprecated)來實現以上場景,如下:
jmeter -n -t D:jmeter查詢.jmx -l D:jmeterQry.jtl -e -o D:jmeter
-n: 非GUI模式執行腳本
-t: 腳本文件(含路徑)
-l: 測試結果保存文件(含路徑)
-e: 測試結束后生成測試報告(html報告)
-o: 存放測試報告路徑
如果壓測結束,退出壓測時報The JVM should have exited but did not.修改jmeter.properties中jmeterengine.force.system.exit=true,默認為false
記錄性能指標結果(事務平均響應時間、TPS等)。
本例查詢業務,我們只關注打開菜單和查詢操作的性能狀況,其他操作不關注,所以記錄結果只記錄【打開菜單】和【查詢】事務。
從本例結果分析,1/5/10并發TPS按倍數遞增,平均響應時間相差不大,性能平穩,從20并發開始,TPS增加明顯變緩,平均響應時間增大,性能有下降趨勢,60并發TPS開始下降,平均響應時間持續增大,錯誤率也明顯增大,60并發達到性能瓶頸。
1并發響應時間趨勢圖:
60并發響應時間趨勢圖:
相關閱讀:
jmeter響應斷言闡述
jmeter web性能測試之關聯及參數化
更多精彩干貨分享
點擊下方名片關注
IT那活兒
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129834.html
摘要:有了測試腳本,通過線程組來模擬真實用戶對服務器的訪問壓力。不同的是,這些類型的線程執行測試結束后執行定期的線程組。線程組中包含的線程數量在測試執行過程中是不會發生改變的。邏輯控制器元件只對其子節點中的取樣器和邏輯控制器作用。 工欲善其事必先利其器,要保證移動應用產品在上線之后能穩定運行于各種復雜環境,僅僅進行功能測試是遠遠不夠的,壓力測試越來越被應用開發商所重視。而壓力測試從傳統的內部...
摘要:為了最大限度的靈活性,允許使用正則表達式創建斷言。線程組理解一個虛擬用戶組,線程組內線程數量在運行過程中不會發生改變。測試執行后操作,即線程組執行完成后執行的內容。 Jmeter是Apache組織開發的基于Java的壓力測試工具,它最初被設計用于Web應用測試,但后來擴展到其他測試領域。 它可以用于測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數...
摘要:點擊確定建議練習的時候,把這個提示框信息仔細看看奧閱讀題目要求認真閱讀性能測試文檔。 目錄 一.環境的準備 1.從比賽官網下載jmeter 2.解壓后,啟動 二.答題 1.下載題目 2.閱讀題目要求 3.錄制腳本 ?4.完善和回放腳本 ?4.提交大賽官網運行,查看成績 ?5)點擊?mooc...
jmeter web性能測試之用beanshell轉換全局變量 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75...
摘要:認為就等于性能測試,其實這是不對的。性能測試定義指通過自動化的測試工具模擬多種正常峰值以及異常負載條件來對系統的各項性能指標進行測試。另外,從業務角度來說也可以使用訪問人數天或頁面訪問量天做為單位。 隨著軟件行業的快速發展,現代的軟件系統越來越復雜,功能越來越多,測試人員除了需要保證基本的...
閱讀 1345·2023-01-11 13:20
閱讀 1683·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4099·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3594·2023-01-11 13:20