Jmeter之Assertion使用


Jmeter測試結果分析這一篇,我打算分成上下兩部分。上篇,主要講述如何使用jmeter中Assertion對結果進行簡單的分類;下篇,主要講述的是當我們拿到測試結果后,我們應該如何去看待這些測試結果。

用過LoadRunner的人都知道,LoadRunner本身提供了很多函數可以對收集回來的結果進行一些初步的分析。例如可以做到判斷返回的結果是否正確;判斷request的response time是否大於x秒之類的。相比起LoadRunner,Jmeter在這方面沒有那么強大,但是個人認為,對於一些編程基礎不是太好的測試人員來說,Jmeter比LoadRunner易用性上面做得更出色。

Assertion--斷言,通常是用於對每一個request sampler進行額外驗證的工具。下面通過一個例子來介紹一下常用的幾個Assertions。

假設現在要進行一個登陸的壓力測試,下面是對pass的幾個定義:

1.正確login后,必須收到返回的身份驗證和用戶個人信息下載的完成信息;

2.響應時間不能超過150毫秒

3.返回的結果大小不能小於750bytes

根據以上的要求,我們在對應的request sampler下面添加了以下的Assertions。

 

A.Response Assertion

 

 Response Field to Test -- 標示被檢查對象是什么?

 Pattern Matching Rules -- 標明被檢查對象與驗證內容之間的關系,Contains(包含關系);Matches(匹配關系);Equals(相等關系);Not(非關系)

 Pattern to Test -- 需要驗證的內容列表

B.Duration Assertion

 

 Duration to Assert -- 允許的響應時間的最大值

C.Size Assertion

 

 Size to Assert -- 對於返回結果文件大小的標准定義

 

二、結果分析

添加了以上的Assertions后,我運行了一次腳本。以下是存放結果的.jtl文件的內容:

timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,Latency
11/04/08 13:22:03,172,Do Login,200,OK,Thread Group 1-1,text,false,The operation lasted too long: It took 172 milliseconds, but should not have lasted longer than 150 milliseconds.,835,172
11/04/08 13:22:03,156,Do Login,200,OK,Thread Group 1-2,text,false,Test failed: text expected to contain /loginMsg="OK"/,633,156
11/04/08 13:22:03,156,Do Login,200,OK,Thread Group 1-3,text,false,The operation lasted too long: It took 156 milliseconds, but should not have lasted longer than 150 milliseconds.,839,156
11/04/08 13:22:03,156,Do Login,200,OK,Thread Group 1-4,text,false,The operation lasted too long: It took 156 milliseconds, but should not have lasted longer than 150 milliseconds.,836,156
11/04/08 13:22:03,78,Do Login,200,OK,Thread Group 1-5,text,true,,779,78
11/04/08 13:22:03,63,Do Login,200,OK,Thread Group 1-7,text,false,Test failed: text expected to contain /loginMsg="OK"/,570,63
11/04/08 13:22:03,141,Do Login,200,OK,Thread Group 1-6,text,false,The result was the wrong size: It was 721 bytes, but should have been greater than 750 bytes.,721,141
11/04/08 13:22:03,78,Do Login,200,OK,Thread Group 1-9,text,false,The result was the wrong size: It was 724 bytes, but should have been greater than 750 bytes.,724,78
11/04/08 13:22:03,204,Do Login,200,OK,Thread Group 1-10,text,false,The operation lasted too long: It took 204 milliseconds, but should not have lasted longer than 150 milliseconds.,1137,204
11/04/08 13:22:03,2985,Do Login,200,OK,Thread Group 1-8,text,false,Test failed: text expected to contain /loginMsg="OK"/,570,2985

我們可以看到,每一個Sampler都會經過Assertions的判斷,只要有一個不符合條件的都會標示為False。

其實除了以上講到Assertion,jmeter還提供了其他一些比較實用的Assertion,而我在這也不一一介紹了。

有興趣的可以看一下jmeter的user manual,然后再自己動手試驗一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM