前言
通過前面對Jmeter元件的講解,大家應該都知道常用元件的作用和使用了。編寫Jmeter腳本前我們需要知道Jmeter元件的執行順序,可以看看我這篇性能測試學習之路(三)—初識Jmeter來了解下。下面我將以工作中的一個簡單的實例帶大家手把手寫一個Jmeter腳本。
場景及分析
場景:用戶登錄系統,選擇相應的模塊,然后去相應的菜單下新增一個單據。
預壓測接口:用戶登錄接口和單據保存接口,假設業務場景為一天2小時中,請求登錄接口為1000次,請求單據保存接口為3000次。
腳本分析:用戶登錄系統,我們需要根據登錄接口來獲取到token供后面接口使用,這時我們需要用到后置處理器;選擇相應的模塊和進入到相應的菜單下我們要看這兩個接口是不是有關于Pageid的關聯,這需要我們通過抓包工具抓到的接口來分析;保存單據就是一個單純的保存接口。按理說我們只需要寫四個接口,這四個接口的服務器地址是一樣的,所以我們可以添加一個HTTP請求默認值。又需要添加一個HTTP信息頭管理器來設置請求頭的一些信息。然后線程組設置成1循環1次添加查看結果數調試腳本是否能跑通。
性能場景分析:
登錄接口:2小時請求2000次
保存接口:2小時請求5000次
沒有明確的指標的話我們就是可以通過二八原則來計算出大概得TPS。那么什么是二八原則呢?
二八原則是指80%的請求在20%的時間內(時間按秒來計算)完成,計算公式: TPS=總請求數80%/(總時間20%)
那么通過計算可得出登錄接口的TPS=2000x0.8÷(2x60x60x0.2)=1.1,保存接口的TPS=5000x0.8÷(2x60x60x0.2)=2.8,TPS只要能達到我們計算的值就能滿足線上需要。
腳本編寫
經過抓包工具分析接口發現只需要寫登錄和保存接口即可,下面是這個腳本的調試時的樣子:
重點來了!!!調試接口時設置線程數為1循環次數為1就行,編寫腳本時遇到的坑有登錄接口和保存接口的請求頭中的Content-Type不一樣所以我們在保存下又增加了一個HTTP信息頭管理器;保存接口傳參中有中文我們需要在內容編碼寫入UTF-8(不寫入的話會產生亂碼)。
腳本調通了我們就完善一下腳本并設置好并發數來運行腳本,如下:
1、設置線程組中的線程數并勾選循環次數為永遠,勾選調度器設置好持續時間來讓線程持續運行。
2.添加斷言并去掉查看結果數和調試取樣器(運行時會耗費機器資源)。添加聚合報告、TPS和響應時間監聽器來檢測結果。
3.然后開始執行,等待運行完畢后查看監聽器中的結果。
聚合報告:主要關注95% 響應時間、異常和吞吐量指標
Transactions per Second:主要關注TPS隨時間的變化趨勢
Response Times Over Time:主要關注響應時間隨時間的變化趨勢
這就是一次簡單的壓測,根據需求分析并寫出腳本,寫腳本時先用一個線程來調試成功,成功之后再設置相應的并發數來進行壓測。
在壓測中不僅需要看聚合報告、TPS和響應時間折線圖,也需要配合運維查看服務器CPU、內存、磁盤等利用率。一般來說服務器的這三個指標利用率在壓測過程中不能超過80% 。當壓測完成后,根據結果配合開發、運維進行性能調優,性能調優后續會籠統的講一下。