這是之前做負載測試時的隨手筆記... (2010-10-1 更新:補一些操作步驟和貼圖)
0. 準備環境
需要安裝的軟體:
loadtestresultsrepository.sql,並執行其中的 SQL 命令。這些 SQL 命令會建立一些用來儲存負載測試結果的資料表。參考HOW TO:使用 SQL 建立結果儲存機制。
有些用到 AJAX 技術或動態 inject JavaScript 指令檔的情形,可能會導致負載測試失敗(因為伺服器上面並沒有實體的 javascript 檔案),因此最好先開啟 webtest,試跑一次,以便從執行結果找出那些失敗的 requests,並將之剔除。參考下圖:
發現錯誤時,到 webtest 檔案裡面找到對應的 request,然後到屬性視窗裡把「Parse Dependent Requests」屬性由 True 改為 False,參考下圖:
儲存 webtest 檔案,然後重跑一遍,直到所有錯誤的 requests 都已修正或剔除,然後才做負載測試。
Note: 依錄製時的機器組態而定,你可能會發現有些額外的 request 要剔除,例如:google、dropbox...等等。
4. 加入負載測試
點 Project > Add Load Test...,接著會開啟一個逐步設定的對話窗:
在每個步驟中,依你的需求來設定負載測試的相關參數。進行到「Test Mix」步驟時,便可加入你剛才錄製的 webtest,如下圖:
接著繼續按下一步,直到全部參數設定完成。
5. 執行測試
一些注意事項
0. 準備環境
需要安裝的軟體:
- Fiddler
- Visual Studio 2008 Team Test Edition 或 Visual Studio 2010 Ultimate
- SQL Server 2005/2008 (Express 版也行)
1. 使用 Fiddler 錄製 Web Test 檔案
開啟 Fiddler,然後用 IE 瀏覽欲測試的網站,把測試的操作流程跑過一遍,再回到 Fiddler 視窗,把所有攔截到的 HTTP sessions 選取起來,從主選單點 File > Export Sessions > Selected Sessions,然後在開啟的對話窗中挑選匯出格式為 Visual Studio Web Test。參考下圖:
當然不見得要用 Fiddler,也可以用 Visual Studio 內建的錄製功能,參考這篇:
How to: Create a New Web Performance Test Using the Web Performance Test Recorder (for Visual Studio 2010)
2. 建立測試專案
接著要建立測試專案、加入負載測試。
建立測試專案:File > New > Project > Test Projects > Test Documents > Test Project,如下圖:
建立好測試專案後,在 Solution Explorer 中把預設建立的 UnitTest1.* 刪除。接著點 Project > Add Existing Item,把上一個步驟的 .webtest 檔案加入。參考下圖:
3. 跑一遍錄製好的 webtest
開啟 Fiddler,然後用 IE 瀏覽欲測試的網站,把測試的操作流程跑過一遍,再回到 Fiddler 視窗,把所有攔截到的 HTTP sessions 選取起來,從主選單點 File > Export Sessions > Selected Sessions,然後在開啟的對話窗中挑選匯出格式為 Visual Studio Web Test。參考下圖:
How to: Create a New Web Performance Test Using the Web Performance Test Recorder (for Visual Studio 2010)
2. 建立測試專案
接著要建立測試專案、加入負載測試。
建立測試專案:File > New > Project > Test Projects > Test Documents > Test Project,如下圖:
建立好測試專案後,在 Solution Explorer 中把預設建立的 UnitTest1.* 刪除。接著點 Project > Add Existing Item,把上一個步驟的 .webtest 檔案加入。參考下圖:
3. 跑一遍錄製好的 webtest
有些用到 AJAX 技術或動態 inject JavaScript 指令檔的情形,可能會導致負載測試失敗(因為伺服器上面並沒有實體的 javascript 檔案),因此最好先開啟 webtest,試跑一次,以便從執行結果找出那些失敗的 requests,並將之剔除。參考下圖:
發現錯誤時,到 webtest 檔案裡面找到對應的 request,然後到屬性視窗裡把「Parse Dependent Requests」屬性由 True 改為 False,參考下圖:
儲存 webtest 檔案,然後重跑一遍,直到所有錯誤的 requests 都已修正或剔除,然後才做負載測試。
Note: 依錄製時的機器組態而定,你可能會發現有些額外的 request 要剔除,例如:google、dropbox...等等。
4. 加入負載測試
點 Project > Add Load Test...,接著會開啟一個逐步設定的對話窗:
在每個步驟中,依你的需求來設定負載測試的相關參數。進行到「Test Mix」步驟時,便可加入你剛才錄製的 webtest,如下圖:
接著繼續按下一步,直到全部參數設定完成。
5. 執行測試
一些注意事項
- Initial User Count 不要設太大。就算你想知道網站能不能讓 500 人同時上線使用,也不要一下子就用 500 人去ㄍ一ㄥ。一來不符合實際運作情形,二來,你的負載測試報告可能會很難看(失敗率很高),同時又無法確定瓶頸在哪個部份。
- 執行負載測試時,注意實施測試的那台機器的 CPU 和 Memory 使用率。若 CPU 負載經常超過 90%(你可能會聽到主機板風扇突然變得很大聲),或可用的實體記憶體剩不到 10%,那麼負載測試的結果很可能失準,因為瓶頸出在執行測試的機器上(而非受測的伺服器)。
參考資料
- MSDN: 使用負載測試(for Visual Studio 2008)
- VSTS 負載測試簡單介紹
- 利用VS 2008 Team Test做負載測試(上)
- 利用VS 2008 Team Test做負載測試(下)
- Microsoft Visual Studio Team System 2008 中的本地負載測試
- Advanced Load Testing Features of Visual Studio Team System
- Creating Load Tests Using the New Load Test Wizard
- Walkthrough: Creating and Running a Load Test Containing Web Performance Tests
我的Fiddler居然沒有Save > Selected Sessions > as Visual Studio Web Test的屬性...@@"
回覆刪除我裝的是Visual Studio 2010 Ultimate,
是不是Fiddler少裝了什麼呢??
哎呀!我的錯....我這筆記的截圖,當時是用舊版的 Fiddler,而新版的操作方式已經改了。
回覆刪除我已經修正內文,請參考 :)
推一個,感謝站長的分享...
回覆刪除2010-10-1 更新:補一些操作步驟和貼圖
回覆刪除