Blazemeter + Jmeter 壓力測試初體驗

--

最近我的正職工作有一個新系統要上線了,我剛好就被賦予研究壓力測試的任務。在這之前我完全沒有做過類似的事情XD,壓力測試其實有很多事前的規劃要做,例如測試行為、測試目的與標準,但畢竟初學就著重在工具的使用。這一篇文章會從比較簡單的「登入」行為來做測試。

Blazemeter — 錄製測試計畫

Blazemeter 有提供 Chrome 的擴充套件,可以直接透過瀏覽器行為來錄製 Jmeter 的測試計畫,直接到 chrome 線上應用程式商店搜尋就能找到了。

Blazemeter 如果要導出 Jmeter 測試計畫的話,會需要登入,所以可以去註冊會員,並且也可以在線上進行測試,這邊就不介紹了

打開可以看到一個紅色圓點,點下之後就會開始錄製上瀏覽器的操作步驟(像是打出的 Request 之類),這時候就可以開此操作(模擬測試內容)

結束之後,可以按 Save 來儲存,如果沒登入的話不能導出 JMeter 腳本

登入之後就可以導出 Jmx 腳本了

Jmeter

Jmeter 是很老牌的壓測工具,偏愛 GUI 介面的話可以使用,也有 CLI 模式。

就直接打開剛剛的產生的腳本,可以看到已經建立好的測試計畫,一開始應該沒有結果樹之類的,可以自己新增,比較好看測試結果

如果你的網站沒有 CSRF 之類的東西要認證的話,其實可以直接跑,不過大部分都有,所以這邊分享一下我拿到 CSRF 的作法。

思路大概就是先發出一個 Get請求 -> 以 CSS 選擇器拿到 CSRF Token -> 再送 Post 請求,所以先新增一個 HTTP 要求,然後再新增一個後置處理器

HTTP 要求的部分就依照你網站的設定填入就好,這邊比較需要說一下 CSS 選擇器的部分

參照名稱是之後我們要帶入 POST 請求的變數名稱,而 CSS 選擇器我是透過 name 屬性,而 asp.net core 預設的 csrf 欄位叫做 __RequestVerificationToken ,透過這樣拿到隱藏的 input 元素。

最後在 Attribute 部分,我們要拿這個 input 元素的 value 裡面的數值,所以輸入 value。

最後是使用的部分,找到送出 POST 請求的 HTTP 測試項目,將 CSRF 帶入對應的欄位(找不到的話可以自己新增),可以看到變數會透過 ${ } 的方式帶入。

這樣可以增加一些結果檢視器(中文好像叫做監聽吧),可以視覺化看到一些結果,但是如果真的要做測試還是建議透過 CLI 進行,因為 GUI 是真的跑得有點慢。到這邊算是完成第一次壓測了,其他部分我也還在摸索當中XD。

關於 Google ReCaptcha

如果你的網站使用這個做為防機器人驗證,很可能沒有辦法正確登入,建議暫時先將其關閉,會比較快也比較省事。

希望有稍微給一點壓測工具的方向,幫助第一次要做壓測的你

Originally published at https://studio-44s.tw.

--

--

碼農思考中 / Ted

全端工程師,Asp.Net MVC、PHP Laravel、ReactJS,隨手記錄各種技術、心得與設計靈感。未來規劃除程式技能外,也想往 UI/UX 設計領域發展。目前文章從舊有網站「筆記長也」搬移過來。業餘接案中:https://studio-44s.tw/