建立和編輯負載測試
您可以建立 [Web 效能測試和負載測試專案]將負載測試加入至您的方案。 負載測試可以包含單元測試和 Web 效能測試兩者, 其主要用途是要模擬同時存取伺服器的眾多使用者。 負載測試可讓您獲得應用程式壓力和效能資料。 負載測試可設定為模擬各種負載狀況,例如使用者負載和網路類型。 新的負載測試是使用 [新增負載測試精靈] 建立的,在其中可以指定負載測試的初始設定。 初始設定包括情節、計數器集合和回合設定。
需求
- Visual Studio Ultimate
請 視訊:在 Visual Studio 的負載測試應用程式參閱。
工作
工作 |
相關主題 |
---|---|
建立新的負載測試:您可以在 Visual Studio Ultimate 中使用 [新增負載測試精靈],建立負載測試以便測試應用程式的壓力和效能。 |
|
編輯現有的負載測試:使用 [新增負載測試精靈] 建立負載測試之後,您就可以使用 [負載測試編輯器] 修改及設定各種設定與屬性。 |
|
具有自動程式碼 UI 測試的負載測試:您可以建立包含自動程式碼 UI 測試的負載測試以做為效能測試。 這麼做在非常特殊的情況下相當有用,因為自動程式碼 UI 測試可讓您在 UI 層擷取效能。 |
|
為負載測試指定 64 位元處理序:您可以設定要搭配負載測試使用的測試設定,以指定想要使用 64 位元處理序。 |
相關工作
回合設定是指會影響負載測試執行方式的一組屬性, 這些設定會在 [屬性] 視窗中,依照分類進行組織。
負載測試的考量
執行大型負載測試時,您應該考慮下列在 Visual Studio Ultimate中的提示:
選擇適當的負載模式
選擇適當的連接模型
取樣率和資料收集
考慮時間
設定 Web 效能測試要求的回應時間目標
在收集百分位數資料中包含計時詳細資料
設定新使用者的百分比屬性
啟用 ASP.NET 分析工具
啟用虛擬使用者記錄
啟用 SQL 追蹤
維持適當數目的代理程式電腦
選擇適當的負載模式
負載模式有三種類型:常數、逐步執行和以目標為依據。 若要選擇適合您的負載測試之負載模式,必須了解每一種類型的優點。 如需詳細資訊,請參閱編輯負載模式以模型化虛擬使用者活動。
常數 |
當您想要在一段很長時間,以相同的使用者負載執行您的負載測試時,常數負載模式會很有用。 如果您以常數負載模式指定高使用者負載,建議同時指定負載測試的準備時間。 當您指定了準備時間,可以避免數百名新使用者工作階段同時點擊而使網站超過負荷。 |
步驟 |
步驟負載模式是最常用也最有用的負載模式之一,因為它可讓您監視使用者負載增加時的系統效能。 監視您的系統,做為使用者負載增加時,可讓您判斷可接受回應時間的使用者數目。 相反地,它也可讓您判斷效能變得無法接受時的使用者數目。 如果每個步驟都加入大量使用者 (例如,超過 50 位使用者),請考慮使用 [逐步遞增時間] 屬性來錯開步驟中使用者的開始時間。 如需詳細資訊,請參閱HOW TO:指定步驟負載模式的逐步遞增時間屬性。 |
以目標為依據 |
[以目標為依據的負載模式]類似於[逐步執行負載模式],因為使用者的負載在一段時間後通常會增加。 不過,它可讓您指定負載應該停止增加的時間,當某些效能計數器達到特定層級時。 例如,您可以使用以目標為依據負載模式持續增加負載,直到其中一台目標伺服器變成 75% 忙碌的狀態時,接著便將負載維持固定。 |
如果預先定義的負載模式都不符合您的需求,也可以實作控制使用者負載 (與負載測試回合一樣) 的自訂負載測試外掛程式。 如需詳細資訊,請參閱建立和使用負載和 Web 效能測試的自訂外掛程式。
選擇適合的 Web 效能測試連接模型
[負載測試回合設定]會使用 [WebTest 連接模型] 屬性,針對 Web 伺服器的使用者連接模型支援不同的選項。 連接模型有三種類型:每使用者連接、連接集區,和每一測試反覆項目的連接。 若要選擇適合您的負載測試之連接模型,必須了解每一種類型的優點。
個別使用者連接 |
個別使用者連接模型可以模擬非常真實的瀏覽器行為。 每位執行 Web 效能測試的虛擬使用者最多會針對每個 Web 伺服器使用六個連接。 專屬於該虛擬使用者的 Web 伺服器連接會保持開啟狀態。 在 Web 效能測試發出第一個要求時,便會建立第一個連接。 當某個頁面含有一個以上的相依要求時,才會建立額外的連接。 藉由使用其他的連接,這些要求可能會平行發出。 舊版瀏覽器最多會針對每個 Web 伺服器使用兩個連接,不過 FireFox 3 和 Internet Explorer 8 最多會針對每個 Web 伺服器使用 6 個連接。 在整個負載測試中,虛擬使用者將重複使用這些相同的連接。 每使用者連接模型的缺點在於,代理程式電腦上維持開啟的連接數目可能高達使用者負載的六倍,甚至更高 (如果以多個 Web 伺服器為目標的話),而且支援這種高連接計數的資源,可能會限制可從單一負載測試代理程式驅動的使用者負載。 |
連接集區 |
連接集區模型會讓多個虛擬 Web 效能測試使用者共用與 Web 伺服器的連接,節省負載測試代理程式上的資源。 在連接集區模型中,連接集區大小會指定負載測試代理程式與 Web 伺服器之間的最大連接數。 如果使用者負載大於連接集區大小,由不同虛擬使用者所執行的 Web 效能測試就會共用一個連接。 這是最適合用來將大部分負載導入應用程式層的模型。 共用連接表示一個 Web 效能測試在發出要求之前,可能必須等待正在使用這個連接的另一個 Web 效能測試。 Web 效能測試在提交要求之前所等待的平均時間,都會由負載測試效能計數器的 [平均連接等候時間] 追蹤。 這個時間應該要小於頁面的平均回應時間, 否則,連接集區大小就有可能不足。 |
每一測試反覆項目的連接 |
每一測試反覆項目的連接會在每個測試反覆項目之後關閉連接,並且針對下一個反覆項目開啟新的連接。 這項設定會將大部分壓力放在網路登入上。 除非這是您的需求,否則建議使用上述其中一個選項。 |
取樣率和資料收集
請依照負載測試的時間長度選擇適當的取樣率。 對於每一個效能計數器,小的取樣率 (例如五秒) 比大的取樣率能收集更多資料。 長時間收集大量資料可能會導致磁碟空間錯誤。 若為長時間的負載測試,您可以增加取樣率,以便減少所收集的資料量。 效能計數器的數量也會影響收集的資料量。 對於測試中的電腦而言,降低計數器數量會減少所收集的資料量。
您必須以實驗決定,對您的特定負載測試而言,什麼取樣率會運作得最好。 下列表格提供建議的取樣率供您開始使用。
負載測試持續期間 |
建議取樣率 |
---|---|
< 1 小時 |
5 秒 |
1 - 8 小時 |
15 秒 |
8 - 24 小時 |
30 秒 |
> 24 小時 |
60 秒 |
考慮時間
Web 效能測試要求的考慮時間,對於合理回應時間可支援的使用者人數有很重大的影響。 將考慮時間由 2 秒變更為 10 秒,通常可讓您模擬 5 倍數量的使用者。 不過,如果您的目標是要模擬真實的使用者,應該根據您所預想的網站使用者行為方式來設定考慮時間。 增加考慮時間和使用者人數不必然會增加 Web 伺服器的額外負荷。 如果網站已經驗證過,所使用的配置類型將會影響效能。
如果您停用 Web 效能測試的考慮時間,可能會產生根據每秒要求之較高處理量的負載測試。 如果您停用考慮時間,也應該將使用者人數降到比啟用考慮時間時更少的數目。 例如,如果您停用考慮時間並嘗試執行 1000 個使用者,可能會使目標伺服器或負載測試代理程式不勝負荷。
如需詳細資訊,請參閱在負載測試情節中編輯考慮時間以模擬網站人類互動延遲。
設定 Web 效能測試要求的回應時間目標
Web 測試要求的屬性之一為回應時間目標。 如果您定義了 Web 效能測試要求的回應時間目標,當 Web 效能測試在負載測試中執行時,[負載測試分析器] 就會報告回應時間未達目標的 Web 效能測試百分比。 根據預設,Web 要求並未定義回應時間目標。
此外,如果您使用了 [回應時間目標] 驗證規則,未達回應時間目標的頁面就會在負載測試中產生錯誤。 如果您使用錯誤的記錄檔,就可以查看該位虛擬使用者在發生慢速網頁時所進行的動作。
如需詳細資訊,請參閱HOW TO:在 Web 效能測試中設定頁面回應時間目標。
在收集百分位數資料時包含計時詳細資料並啟用詳細資料檢視
回合設定包含了一個名為 [計時詳細資料儲存區] 的屬性。 如果啟用這個屬性,在負載測試期間執行每個個別測試、異動和頁面所需的時間會儲存在負載測試結果儲存機制中。 這樣就會在 [負載測試分析器] 中啟用虛擬使用者活動圖。 它也可以在 [負載測試分析器] 的 [測試]、[異動] 和 [頁面] 資料表中顯示第 90 個、第 95 個和第 99 個百分位數與標準差。
根據預設,[計時詳細資料儲存區] 屬性已啟用,以便在使用 [負載測試分析器] 之負載測試結果的 [詳細資料] 檢視中支援虛擬使用者活動圖。
您應該考慮針對大型測試停用 [計時詳細資料儲存區] 屬性。 這樣做有兩個重要原因。
負載測試結果儲存機制用來儲存計時詳細資料所需的空間可能相當大,尤其是長時間的負載測試。
在負載測試結束時,用來將此資料儲存至負載測試結果儲存機制的時間會很長,因為此資料在負載測試執行完成後是儲存在負載測試代理程式上的。
如果負載測試結果儲存機制的磁碟空間足夠,您就可以啟用 [計時詳細資料儲存區] 以取得百分位數資料。 啟用 [計時詳細資料儲存區] 有兩種選擇:[僅限統計資料] 和 [所有個別細節]。 不論選擇哪一種,所有的個別測試、頁面和異動都會計時,而且百分位數資料是從個別的計時資料計算出來的。 如果您選擇 [僅限統計資料],在百分位數資料計算出來之後,個別的計時資料會從儲存機制中刪除。 刪除該資料可以減少儲存機制所需的空間。 不過,如果您想要使用 SQL 工具來直接處理計時詳細資料,或在虛擬使用者活動圖中啟用虛擬使用者詳細資料,請選擇 [所有個別細節],以便將計時詳細資料儲存在儲存機制中。
如需詳細資訊,請參閱在負載測試分析器的詳細資料檢視中分析負載測試虛擬使用者活動與HOW TO:設定負載測試來收集完整詳細資料,以便在測試結果中啟用虛擬使用者活動。
設定新使用者的百分比屬性
負載測試中的每個情節都有個名為 [新使用者的百分比] 的屬性。 這個屬性會影響負載測試執行階段引擎模擬 Web 瀏覽器執行快取的方式。 [新使用者的百分比] 的預設值為 0。 這表示每位虛擬使用者都會在測試反覆項目之間保存相依要求的虛擬快取以及 Cookie 清單。 快取的運作方式就如同瀏覽器快取。 因此,對 URL 的後續要求不會執行。 這非常類似於實際的 Web 瀏覽器。
如果 [新使用者的百分比] 設定為 100%,每位使用者實際上都是「一次使用者」,永遠不會返回網站。 在此情況下,負載測試中所執行的每個 Web 效能測試反覆項目都會被視為第一次造訪網站的使用者,其瀏覽器快取中完全沒有之前造訪所留下的網站內容。 因此,在 Web 效能測試中的所有要求會被下載。 這包括所有相依要求,例如影像。
注意事項 |
---|
有一個例外狀況是,Web 效能測試中同樣的可快取資源被要求多次。 |
您可以使用預設值 0 (新使用者的百分比),將大部分負載導入網站的應用程式層。 這個值與實際使用者巡覽詳細載入到應用程式層之值很相近,其為大部分效能問題發生之處。 如需詳細資訊,請參閱HOW TO:指定使用 Web 快取資料之虛擬使用者的百分比。
啟用 ASP.NET 分析工具
ASP.NET 分析工具診斷資料配接器可讓您在執行負載測試時,從應用程式層中收集 ASP.NET 分析工具資料。 若為長時間的負載測試 (例如,執行時間超過一小時的負載測試),您就不應該執行分析工具,因為分析工具檔案可能會變得很龐大,高達數百 MB。 而是,請使用 ASP.NET 分析工具來執行較短的負載測試,這樣做仍然會提供您深入診斷效能問題的優勢。
如需詳細資訊,請參閱HOW TO:在 Visual Studio 中使用測試設定來設定 ASP.NET 分析工具以進行負載測試。
啟用虛擬使用者記錄
您可以收集失敗測試或指定頻率記錄測試的完整記錄。 記錄是由 [測試失敗時儲存記錄檔]、[已完成之測試的儲存記錄檔頻率] 和 [測試記錄數目上限] 屬性所控制。 收集的記錄數目是由 [測試記錄數目上限] 和 [已完成之測試的儲存記錄檔頻率] 屬性設定所控制。 預設設定會防止系統收集大量記錄。 若為長時間執行的測試 (將產生數百萬個要求),請勿使用 [已完成之測試的儲存記錄檔頻率] 設定,因為記錄數目將會變得太龐大。 此外,請將[測試記錄數目上限] 屬性設定在合理的數字。 控制項的這個屬性會記錄每種錯誤類型的數目上限。 因此,您應該保留這個設定。 它會避免收集數萬筆資料記錄。 收集過多的記錄會增加測試結束時收集記錄檔的時間,並將增加負載測試資料庫的儲存空間。
如需詳細資訊,請參閱修改負載測試記錄設定。
啟用 SQL 追蹤
回合設定包含了一個名為 [SQL 追蹤已啟用] 的屬性。 這個屬性可讓您在負載測試期間啟用 Microsoft SQL Server 的追蹤功能。 如果執行負載測試是為了診斷 SQL 效能問題,這是啟動個別 SQL Profiler 工作階段的另一種選擇。 如果啟用該屬性,SQL 追蹤資料會顯示在 [負載測試分析器] 中。 您可以在 [SQL 追蹤] 資料表的 [資料表] 頁面中檢視。
若要啟用這個功能,執行負載測試的使用者必須要有執行 SQL 追蹤所需的 SQL 權限。 如果是在遠端電腦上使用測試代理程式和測試控制器來執行負載測試,控制器使用者必須要有 SQL 權限。 您也必須指定寫入追蹤資料檔案的目錄。 這個目錄通常在網路共用。 在負載測試完成時,追蹤資料檔會隨負載測試匯入至負載測試儲存機制。 藉由使用 [負載測試分析器],追蹤資料檔案可在稍後檢視。
如需詳細資訊,請參閱設定負載測試回合設定與在負載測試中收集 SQL 追蹤資料以監視並改善效能。
維持適當數目的代理程式電腦
如果代理程式電腦的 CPU 使用率超過 75%,或只剩 10% 實體記憶體可用,就表示超載了。 請將更多代理程式加入至您的測試控制器,確保代理程式電腦不會成為負載測試的瓶頸。
如需詳細資訊,請參閱使用 Test Controller 和 Test Agent,將負載測試回合分配給多部測試電腦與HOW TO:指定要用於負載測試情節的測試代理程式。