最近學習了Jmeter的簡單操作,很想找點東西來實戰一下,因為我之前寫過一篇通過Python模擬登錄的文章,於是便想嘗試下學習通過Jmeter來模擬登錄。
本人環境:Jmeter5.1.1
關於Github登錄的過程,在這里就不詳細說了,有興趣的可以看我之前的文章: 利用Python模擬GitHub登錄 。
通過Jmeter模擬Github登錄的所有設置如下:
1. Jmeter設置請求頭和Cookies管理器
首先,我們需要創建1個測試計划(相當於測試項目),測試計划下創建1個線程組(相當於測試場景),然后在線程組下設置請求頭(線程組->添加->配置元件->HTTP信息頭管理器),設置如下:
在之前的Python文章中,我是設置Session會話對象來幫助自動保存cookies信息的,那么在Jmeter中,我們也可以設置HTTP Cookies管理器來自動保存cookies。
為了達到自動管理Cookies的需求,在設置Cookies管理器之前,我們需要在Jmeter安裝路徑下bin目錄中的 jmeter.properties 文件中定義屬性:CookieManager.save.cookies=true
。
接着,在Jmeter中設置Cookies管理器,(線程組->添加->配置元件->HTTP Cookies管理器),添加后不需要填寫內容,它會自動管理cookies。
2. 獲取authenticity_token
首先,設置1個HTTP請求(線程組->添加->取樣器->HTTP請求),在HTTP請求下依次設置 正則表達式提取器和調試后置處理程序 。其中,正則表達式提取器用於提取authenticity_token,而調試后置處理程序,用於查看提取的結果。最后,設置如下:
在上面的設置中,我們的訪問 https://github.com/login ,然后返回的HTML界面中存在2個authenticity_token,因此通過正則返回的是一個長度為2的列表,而GitHub在登錄時用到的是列表中的第二個元素,因此設置參數匹配數字(0代表隨機)的值為2。
3. 模擬登錄
類似第二步,設置1個HTTP請求,並在HTTP請求下依次設置 正則表達式提取器和調試后置處理程序 ,這里登錄的請求方式為POST,最后設置如下:
在這里,類似之前的Python文章中,添加POST登錄過程中所需的參數,而authenticity_token的值,我們可以通過 ${authenticity_token}
來引用第二步驟中通過正則提取到的authenticity_token。
注意:在這里,authenticity_token需要勾選編碼,如果不勾選的話,有時候可能會出現登錄失敗,這里我暫時還不明確具體原因,有大佬清楚的話煩請留言指導一下。
4. 斷言,判斷是否登錄成功
接下來,在HTTP請求下設置斷言來判斷是否登錄成功(HTTP請求->添加->取樣器->HTTP請求)。GitHub登錄成功后,界面的標題會顯示"GitHub",而登錄失敗時,一般顯示的標題則是"Sign in to GitHub · GitHub"。因此,我們可以設置響應斷言如下:
在這里,我們對第三步驟中正則提取的 title 進行斷言,當 title 變量的內容 和GitHub完全相等時,斷言成功,否則失敗。
5. 添加監聽器
最后,為了方便查看運行后的結果,我們可以設置監聽器,如圖形結果、察看結果樹、聚合報告等。以下是我本次設置的察看結果樹(線程組->添加->監聽器->察看結果樹),通過它,我們可以查看線程組中各請求的具體響應過程。
OK,以上就是通過Jmeter模擬GitHub登錄的過程,其實大致思路和利用Python來模擬相同,用Jmeter來模擬登錄,好處就是不需要寫代碼也可以實踐,相信大多數人閱讀后都應該可以進行實踐。
如有錯誤,歡迎指出!