軟體工程師的小事:到底要不要 Close

使用 Visual Studio 進行 Web 效能和負載測試

注意!

「Web 效能和負載測試」專案是 Visual Studio 2017 Enterprise 才有的功能 2017 以前的 Visual Studio 請參考網路上的相關資訊

文章環境
Visual Studio 2017 Enterprise
ASP.Net Core WebAPI 專案
被測試的 WebAPI 應用程式

這邊使用 ASP.Net Core WebAPI 才進行「Web 效能和負載測試」的受測網際網路服務,使用預設的方法 "/api/values" 測試 IIS 回應時間。

專案原始碼(API 與 測試專案)可在 Github 中取得
https://github.com/txstudio/LoadTestUseVisualStudio

新增測試專案

新增「Web 效能和負載測試專案」。

create webandloadtestproject

在方案總管中選擇「新增項目」。

add new item

選擇項目「Web 效能測試」。

add new webtest

新增後會自動開啟 Internet Explorer,並開始進行錄製。

open ieexplorer automatic

因為要測試的目標是 WebAPI,點選「停止錄製」,自訂 Web 請求設定。

stop action record

在 WebTest 項目點選滑鼠右鍵選擇「加入 Web 服務要求」。

若要測試 HttpGet 方法的話,選擇「加入要求」。
add new webrequest

開啟新增的「Web 服務要求」項目,設定屬性視窗中「字串內容」欄位,指定內容類型為「application/json」

內容類型就是 header 的 content-type 內容,此案例使用 WebAPI 並設定資料傳遞格式為 json,故要設定為 application/json。

點選「字串內容」輸入要傳遞的 json 文字。

輸入請求的 json 格式內容,測試時會使用此內容作為固定參數呼叫。

點選網址項目,設定屬性視窗中「Url」欄位。

變更「Url」欄位為呼叫的 WebAPI 完整網址。

屬性視窗中有「逾時(秒)」欄位可以進行設定,若呼叫超過此時間將會回傳逾時的錯誤訊息。

變更「逾時(秒)」欄位為 60。

進行負載測試時,當呼叫超過逾時時間秒數會顯示「錯誤」。
執行 WebTest 測試

在設定好的 WebTest 項目中點選右鍵開啟選單「執行測試」。

執行測試時會開啟測試視窗,並顯示測試中的相關訊息:狀態、時間、資料大小 ... 等。

「要求」頁簽可檢視呼叫的請求資訊。

「回應」頁簽可檢視回復的資訊。

新增負載測試

在「方案總管」中選擇「新增項目」。

加入新項目中選擇「負載測試」。

會開啟負載測試精靈,選擇「內部部屬負載測試」。

這裡指定取樣率為 5 秒(取樣率為執行測試時圖表呈現資料的時間間隔)。

接下來進入情節項目群組,選擇「不使用考慮時間」。

「負載模式」選擇「常數負載」,人數指定為 25 使用者。

「測試混合模型」選擇「按虛擬使用者人數」。

「測試混合」選擇點選加入設定要使用的測試項目。

指定要使用的測試專案。

選擇要使用的測試,這裡使用先前建立的 WebTest。

加入的 WebTest 會呈現在「選取的測試」方塊中,可指定多個測試。

加入完成後,會呈現選擇的測試項目在清單中。

「網路混合」在這裡選擇 LAN,可依照需要進行調整。

「瀏覽器混合」在此案例使用預設,請依情境進行必要的調整。

「計數器集合」可選擇要監看的電腦,此情境測試 API 網站與負載測試專案都在本機執行。

完成負載測試精靈後就會建立一個負載測試專案。

負載測試專案部分調整項目

日後要調整使用者設定在「情節」→「使用者登入」→「網路混和」項目。

在回合設定中可以變更 WebTest 連結 此項目在指定模式中會忽略設定,請參考提示文字訊息

執行負載測試

開啟負載測試檔案後點選左上角按鈕「執行負載測試」

畫面就會進入負載測試的執行畫面

依設定的條件,執行完畢後就會切換至「摘要」頁簽

摘要資訊呈現負載測試執行相關數據內容,最慢的頁面,最慢的測試項目 ... 等。

點選上方的「圖形」頁簽可以檢視圖表結果。

結語

透過負載測試可以發現在多人存取的情境下那些程式需要進行調整。要讓測試的結果更趨近於真實的話就可考慮 Azure 在負載測試提供的解決方案。

參考資料

留言