一、工具介紹
Jmeter是一款使用Java開發的,開源免費的,測試工具,主要用來做功能測試和性能測試。JMeter 用於模擬在服務器、網絡或者其他對象上附加高負載以測試他們提供服務的受壓能力,或者分析他們提供的服務在不同負載條件下的性能情況。
二、常用組件介紹
2.1 測試計划(Test Plan)
是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。
默認打開時候就存在了,可以自定義容器的名稱。
2.2 線程組(Thread Group)
代表一定數量的並發用戶,它可以用來模擬並發用戶發送請求。
相關參數說明:
名稱:為線程組起名字。
線程屬性-線程數:設置發送請求的用戶數目 ,即並發數,上圖為100個。
線程屬性-Ramp-Up Period(in second):線程間的時間間隔,單位是秒。即所有線程在多少時間內啟動。
線程屬性-循環次數:請求的重復次數,如果選擇后面的forever(默認),那么 請求將一直繼續,如果不選擇forever,而在輸入框中輸入數字,那么請求將重復指定的次數。
2.3 取樣器(sampler)
定義實際的請求內容,被線程組包含,主要用HTTP請求。
相關參數說明:
名稱:HTTP請求的名字。
Web服務器-服務器名稱或IP、端口號、HTTP請求,腳本錄制時自動添加。
也可以手動輸入。
2.4 監聽器(Listener)
常用的包括:聚合報告、查看結果樹、用表格查看結果,都支持將結果數據寫入文件。
結果樹可以用於查看請求的狀態,返回值等內容
聚合報告可以用於查看請求相應時間,發送、接受字節大小等數據
2.5 邏輯控制器(Logic Controller)
邏輯控制器可以自定義JMeter發送請求的行為邏輯,它與Sampler結合使用可以模擬復雜的請求序列。常用的場景就是一個用戶登陸之后,保持登陸狀態,循環的做同樣的報錯(保存數據,查看數據,指定條件查詢等)
上圖的例子就是表示用10個並發用戶,登錄后通過循環控制器,分別執行100次保存交易及提交審批的操作。
2.6 斷言(Assertions)
可以用來判斷請求響應的結果是否如用戶預期。這個可以判斷請求是否成功,隔離失敗請求。
目前用過的有響應斷言。
2.7 前置處理器(Pre Processors)和后置處理器(Post Processors)
前置處理器(Pre Processors)和后置處理器(Post Processors)負責在生成請求之前和之后完成工作。
前置處理器常常用來修改請求的設置,后置處理器則常常用來處理響應的數據。
我們主要在動態關聯中用到后置處理器的正則表達式提取器,后面的例子會列舉。
2.8 定時器(Timer)
定時器(Timer)負責定義請求之間的延遲間隔(相當於loadrunner的思考時間)。
三、腳本錄制
3.1 添加代理
添加組件>>代理服務器
3.2 本地設置代理
以Google Chrome為例
設置完成后,使用Google Chrome 訪問指定地址,相關請求就會全部錄制下來
注意,這里錄制的腳本是每一次請求的,包括獲取所有的圖片,js,html網頁資源,都會包括在里面,可以在代理界面對錄制的請求做一次過濾
排除模式里面添加 .*\.(js|css|PNG|jpg|ico|png|gif).*
四、腳本優化
以登錄保存一筆交易為例,現在來調整腳本。
4.1 刪除多余腳本腳本
以下為刪除后的腳本記錄
4.2 調整名字
4.3 獲取Session ID並使用
獲取登錄的Session ID,並添加cookies管理器,統一使用
查看結果樹,需要提取對應的session
登錄的請求下添加正則表達式提取
添加 cookie 管理器,並獲取session變量
如果成功了,可以用結果樹查看
4.4 獲取業務ID並使用
以這次的用戶為例,保存生成的交易ID需要在提交審批時候使用,這里還需要將保存請求里面的返回ID,作為提交審批里面的參數使用
首先,查看結果樹里面的保存響應數據,以及提交審批的請求數據。
所以需要提取保存請求響應數據的approve id,作為提交審批中的serial_no
綜上所述,了解這些內容之后,就可以做一些接口級的並發測試了。
五、基於jmeter數據驗證
這是基於外匯交易系統經常需要測試相同數據出的會計分錄,頭寸,台賬內容是否符合預期的場景,想到一個測試思路。每一次更新代碼,都需要檢查,審核產生的數據,需求滅有變化的情況下,這個回歸的流程都是一致的。
首先得指定一個測試庫,不斷的清庫,修改系統日期(后者更為方便),以即期為例,維護一遍即期交易,保存提交審批並審批完成后,繼續清算初審、復審,流程完成之后,會生成對應的台賬、頭寸、分錄數據,將這個主要流程錄制為jmeter腳本。
后續分別去訪問這些節點(分別對應不同的請求),根據返回值的斷言,來判斷結果是否符合我們的預期,來判斷新一輪的程序調整是否有問題。