性能测试之JMeter断言
導讀
介紹響應斷言的用法
請求重定向的問題
1、從瀏覽器登錄Redmine
(1)從瀏覽器登錄Redmine,使用正確的用戶名、密碼登錄,登錄完成后,右上角顯示登錄賬號的名稱,如下圖所示:?
(2)使用錯誤的用戶名、密碼登錄,會提示登錄失敗,然后右上角還是登錄按鈕,如下圖所示:?
上面這個現(xiàn)象很正常,符合我們的預期。
2、使用JMeter發(fā)送請求
(1)正確的用戶名、密碼?
之前發(fā)送的請求都是使用正確的用戶名、密碼,能夠請求成功。
(2)錯誤的用戶名、密碼?
發(fā)送請求,仍然會提示成功,額,什么原因呢??
?
默認情況下,JMeter會將響應碼是200的默認為請求發(fā)送成功,沒錯,這個請求確實送達了服務器,服務器也給了響應,只不過告訴你“用戶名或密碼錯誤”。由于我們是要對登錄功能進行壓測,假如1000個人并發(fā)登錄,只有100個人能正常登錄,其余900個人登錄失敗,這肯定不是我們要的結果。所以在這個場景下,只有登錄成功,才能算壓測成功。這時候就需要給響應結果加個斷言(檢查點)了。
3、JMeter斷言
(1)給JMeter登錄請求添加一個斷言(Response Assertion)?
(2)Response Assertion頁面?
Name名稱:隨意設置,就是這個斷言的名字;
comments注釋:描述性文字,可以為空;
Apply to:應用范圍,有4個選項?
Main sample and sub-samples:匹配當前父取樣器及其子取樣器
Main sample only:匹配當前父取樣器;
Sub-sample only:僅匹配子取樣器;
JMeter Variable Name to use:支持對JMeter變量值進行匹配
Field to Test:要測試的區(qū)域,9個選項?
Text Response:服務器返回響應的文本內(nèi)容,HTTP協(xié)議排除Header部分;
Response Code:響應的狀態(tài)碼,200,404等
Response Message:響應的message,“OK”等
Response Headers:響應的Headers;
Request Headers:請求的Headers;
URL Sample:匹配URL鏈接
Document(text):對文檔內(nèi)容進行匹配,查看結果樹,響應數(shù)據(jù)標簽內(nèi)容
Ignore Status:一個請求有多個響應斷言,假如第一個斷言選中此項,當?shù)谝粋€斷言失敗時,忽略,繼續(xù)下一個斷言(有什么用???)
Request Data:請求數(shù)據(jù)
Pattern Maching Rules:模式匹配規(guī)則,4個選項?
Contains:上面要測試的區(qū)域包含要匹配的內(nèi)容,則成功,支持正則
Maches:被測區(qū)域要完全匹配需要匹配的內(nèi)容,則成功,大小寫不敏感,支持正則
Equals:被測區(qū)域要完全等于需要匹配的內(nèi)容,則成功,大寫小敏感,需要匹配的是字符串,不是正則
Substring:被測區(qū)域要包含需要匹配的內(nèi)容,則成功,大小寫敏感,需要匹配的字符串而不是正則
Not:配合前面的選項使用,比如配合Contains使用,就是不包含
Or:或
Pattern to Test:要匹配的字符串或者正則,可以填多個,如果不選Or,就是都要匹配,如果選Or,就是匹配其中一個就算成功
Custom failure message:自定義匹配失敗時候的信息。
(3)添加登錄請求的斷言?
這里我們使用斷言“如果沒有匹配到無效的用戶名字樣”就說明登錄成功了。
(4)使用錯誤的用戶名、密碼登錄,看看結果?
可以看到,確實登錄請求失敗了,提示信息,就是我們前面自定義的信息。
(5)使用正確的用戶名、密碼登錄試試?
請求沒有報錯
4、換個斷言
(1)換個斷言?
前面我們斷言登錄成功,是通過,其檢查沒有登錄失敗的提示信息來做檢查點,這個有點怪怪的。一般來說,我們斷言登錄成功,會使用檢查頁面是否顯示登錄名來做斷言。好,我們替換一下斷言試試。?
我們斷言響應中應該包含user1(登錄用戶名),發(fā)送請求試試?
?
很不幸,失敗了,趕緊來看看登錄請求的響應中是否包含user1?
我擦,一搜索,果然不包括user1,這和我們從頁面上看到的不一樣啊,什么鬼?
(2)抓包看看
打開Chrome瀏覽器;右鍵,檢查,(或者按Ctrl + Shift + I)打開開發(fā)者工具
切換到Network標簽
打開Redmine登錄頁,http://192.168.132.134:8080/redmine/login
點擊clear,先清除一下多于的信息
輸入用戶名密碼,點擊登錄按鈕,登錄Redmine
查看截獲到的請求如下圖所示:?
可以看到login本身這個請求,返回碼是302,302是什么?重定向,重定向到了哪里?下面一個請求,重定向到了http://192.168.132.134:8080/redmine/?
在來分別看看兩個請求,發(fā)現(xiàn)第一個請求的響應確實沒有user1的信息,而哪個重定向的請求響應才有user1的信息,如下圖所示:?
問題應該是找到了,Badbody只錄制到了登錄請求本身,但是重定向的請求并沒有錄制到,所以回放的時候自然沒有回放這個重定向的請求,那么頁面響應自然也拿不到。
(3)修改JMeter腳本?
將登錄請求,修改為“跟隨重定向”,如下圖所示:?
(4)回放腳本試試?
成功了!完美,看看登錄請求有兩個子請求,一個是登錄本身,一個是重定向請求,在重定向請求的響應中,能看到usr1的信息。
小結
JMeter提供的斷言種類很多,本節(jié)我們只介紹了響應斷言的用法,其它的我們后續(xù)介紹。只靠JMeter來檢查響應碼是不能完全判定請求成功的,還需要我們給請求加上適當?shù)臄嘌浴?br /> ?
總結
以上是生活随笔為你收集整理的性能测试之JMeter断言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中山培训学校python
- 下一篇: 纵向联邦学习