West Wind Web Surge (以下簡稱 WebSurge) 不只是用於 ASP.NET Web API 的壓力測試功能,也可以對 ASP.NET MVC, ASP.NET WebForm 或是其他網站應用服務進行簡單的壓力測試,而 Load Testing 也僅是 WebSurge 其中的一個功能,WebSurge 也有類似 Telerik Fiddler 的功能,可以針對指定的瀏覽器所發出的 Request 和接收的 Response 進行擷取,有興趣的朋友可以去 WebSurge 的官方網站裡進行瞭解。
不過這一篇文章只針對 Load Testing 這個功能作簡單的說明。
West Wind WebSurge
http://websurge.west-wind.com/
仔細看看官網首頁的 Features 列表,WebSurge 提供了相當多的功能。
WebSurge 是由大神 Rick Strahl 所開發的,這是一套開放原始碼的軟體,雖然是開源軟體但還是有區要授權的,在個人使用的情況下是可以免費使用,基本上個人使用的免費版或 Professional, Org 版本的功能都是一樣的,唯一不同的就是 Org 版本是可以在同一個組織下提供多人使用。
http://websurge.west-wind.com/pricing.aspx
免費版與付費版比較明顯的不同就在於,免費版會不定時出現提醒註冊的聲明。
對於 WebSurge 還是不清楚這是個什麼樣的工具以及有提供哪些功能,建議先看官網的功能介紹說明,
http://websurge.west-wind.com/features.aspx
如果還是覺得相當模糊的話,那麼就是看直接作者的操作影片,長度約 15 分鐘,雖然影片標題是說 Web Load Testing,但在影片裡已經將大部分的功能都操作一遍,所以透過影片就會知道 WebSurge 是在做什麼的啦~
https://www.youtube.com/watch?v=TSfWYcr6q5o
WebSurge 的下載安裝相當簡單,你可以直接從官網下載,或是自行到 Github 下載最新版本,或者是透過 chocolaty 下指令安裝。
http://websurge.west-wind.com/download.aspx
使用
上面是簡短的介紹與說明,雖然作者有提供影片給我們看,但我相信有人還是會略過影片想直接看看這個 WebSurge 到底要怎麼用,這邊以一個簡單的 ASP.NET Web API 服務做示範。
以下有三個提供資料的 Web API 以及所提供的資料內容(以下截圖所用來操作執行 Web API 的 Client 工具是 Postman)
_http://localhost:35346/v1/Customers/{CustomerID}
_http://localhost:35346/v1/Customers/ALL
_http://localhost:35346/v1/Customers/Paging?Start={PageIndex}&Count={PageSize}
現在要使用 WebSurge 來執行這三個 Web API,
加入新的 Request
填入 Web API 的連接位址
在下面有兩個 Button,分別為 Save 和 Test,建議先執行 Test 已確認位址是有效的,確認有效之後再儲存,
測試與執行結果
依序加入要測試的 Web API 位址
剛才都是一個一個做測試,如果想要一次測試剛才所加入的全部 Web API 服務,可以直接執行上面的「ALL」選項,
執行結果,可以看到全部所有執行的結果,全部執行約執行多少時間、平均執行時間、最短執行時間、最長執行時間,個別 Request 的執行結果也會顯示。
Load Testing
上面是單次的執行,不論是針對個別的 Request 或是全部的 Request,都是只有執行一次,但如果想要做一段時間裡發出多次 Request 執行的壓力測試時,就可以使用 WebSurge 所提供的功能,
Time 單位是秒,Threads 可以決定開多少執行緒發出 Request,這邊不建議開太多,因為要考慮執行端環境的硬體(也就是你自己電腦 CPU 記憶體 硬碟 … etc 的等級),設定完之後就可以按下「Start」開始執行測試。
執行的時候會在 Output 裡顯示當下執行的項目,
執行完畢
WebSurge 針對執行結果還有提供統計圖表,有:Requests per Second 與 Time taken per URL
Request per Second
Time taken per URL
如果你不想要太規則地發出 Request,而是想要隨機發出 Request,可以先點選某一個 Request 之後,再到 Session Options 裡去對「RandomizeRequrests」由 False 改為 True,
再重新執行 Load Testing,可以看到發出的 Request 就會比較隨機而不是有序(如果你所加入的 Request 並不是很多的話,那麼就比較看不出來),
如果希望你所建立的一連串 Request 能夠保存下來,可以將 Session 給儲存下來,下次重新開啟 WebSurge 就可以再載入 Session 使用。
會找到 WebSurge 還真的是誤打誤撞,原本是剛好看到 Rick Strahl 的這一篇文章「Prettifying a JSON String in .NET」,然後在文章裡看到 WebSurge 的畫面,一開始還覺得這個跟 Fiddler 應該沒有什麼不同,但就在看完官網說明以及操作影片之後就發覺到這是個相當不錯的好工具。
我會把 WebSurge 當作開發 Web API 時的簡單壓力測試工具,因為使用與操作上相當簡單,如果再搭配 Visual Studio Ultimate 所內建提供的「效能與診斷」功能,將可以找到系統的瓶頸問題,或者有可以搭配一些不錯的付費診斷與檢測工具,例如 dotTrace, dotMemory, ANTS Performance Profiler or Memory Profiler, JustTrace .NET Memory and Performance Profiler 等。
不過如果要做更詳細的壓力測試,還是建議使用其他功能比較齊全的壓測工具,而 WebSurge 則是用來作為開發階段的壓測工具,畢竟開發人員對於效能與系統的負載還是要有基本的對應做法,在交付一個功能的成品之前,開發人員就要去做到基本的處理,例如驗證、安全性、效能、單元測試等,而不是等到最後要上線之前才去做。
Surge 的意思有大浪、波濤、巨湧的意思,這也是為什麼 WebSurge 的 Logo 上面有海浪標誌的主因,不過實際上應該是取用 SURGE ( Scalable URL Reference Generator ) 的意思。
另外有關 ASP.NET Web API 的壓力測試,可以使用 JMemter 或是 MicroSoft MVP - Bruce Chen 曾經在文章介紹過的 SuperBenchmaker。
KingKong Bruce記事: 免費網站與REST服務壓力測試工具
相關連結
http://websurge.west-wind.com/
https://www.youtube.com/watch?v=TSfWYcr6q5o
https://github.com/rickstrahl/WestwindWebSurge
http://jpkc.nwpu.edu.cn/yjsgsp/06/news/1.5.htm
West Wind WebSurge - an easy way to Load Test Web Applications - Rick Strahl's Web Log
以上
網誌管理員已經移除這則留言。
回覆刪除作者已經移除這則留言。
刪除