作者: JB
一、 準備:
a. 至少建立一個以上的【Web效能測試】→ 必要
b. 建立【資料產生計畫】
c. 修改【Web效能測試】計畫
d. 由【管理測試控制器】將測試結果與資料庫作連結 → 建議,否則無法輸出結果到Excel
e. 開始進行【負載測試】→ 必要
a. 至少建立一個以上的【Web效能測試】→ 必要
b. 建立【資料產生計畫】
c. 修改【Web效能測試】計畫
d. 由【管理測試控制器】將測試結果與資料庫作連結 → 建議,否則無法輸出結果到Excel
e. 開始進行【負載測試】→ 必要
二、 【Web效能測試】
Step1. 由【測試】→【新增測試】→選擇『Web效能測試』
Step2. 開始錄製使用者行為,完成後按下『停止』或直接關閉網頁。

Step3.. 成功錄製一個『Web效能測試』的結果。

Step1. 由【測試】→【新增測試】→選擇『Web效能測試』

Step2. 開始錄製使用者行為,完成後按下『停止』或直接關閉網頁。

Step3.. 成功錄製一個『Web效能測試』的結果。

三、 【資料產生計畫】
在上面的Web效能測試,第一個步驟是使用者登入帳號&密碼,此時資料庫只有一個使用者。 實務上應該資料庫會存在多筆使用者,所以我們使用【資料產生計畫】自動產生多筆使用者帳號及密碼。
Step1. 在原本的方案加入一個資料庫專案:『SQL Server 2008 精靈』
Step2.
『SQL Server 2008 精靈』可直接切換到『匯入資料庫結構描述』,選擇資料庫或新增連結,然後按下【完成】。
此時Visual Studio會自動匯入該資料庫所有Table Schema到這個專案。

Step3. 完成後,在方案總管中,你建立的『SQL Server 2008 精靈』右鍵選擇新增一個『資料產生計畫』

Step4.
在『資料產生計畫』中,記得是選『資料轉換計畫』,
上面那一個完全不會幫我們匯入Table Schema!

Step5.. 選一下來源連接字串,按下【確定】後,就可以把Table Schema全部抓出來。
Step6. 如下圖步驟開始設定『資料產生計畫』,按下【產生資料】圖示後,便會把產生的資料寫入資料表。

在上面的Web效能測試,第一個步驟是使用者登入帳號&密碼,此時資料庫只有一個使用者。 實務上應該資料庫會存在多筆使用者,所以我們使用【資料產生計畫】自動產生多筆使用者帳號及密碼。
Step1. 在原本的方案加入一個資料庫專案:『SQL Server 2008 精靈』

Step2.
『SQL Server 2008 精靈』可直接切換到『匯入資料庫結構描述』,選擇資料庫或新增連結,然後按下【完成】。
此時Visual Studio會自動匯入該資料庫所有Table Schema到這個專案。

Step3. 完成後,在方案總管中,你建立的『SQL Server 2008 精靈』右鍵選擇新增一個『資料產生計畫』

Step4.
在『資料產生計畫』中,記得是選『資料轉換計畫』,
上面那一個完全不會幫我們匯入Table Schema!

Step5.. 選一下來源連接字串,按下【確定】後,就可以把Table Schema全部抓出來。

Step6. 如下圖步驟開始設定『資料產生計畫』,按下【產生資料】圖示後,便會把產生的資料寫入資料表。

四、 修改【Web效能測試】計畫
Step1. 打開剛才建立的『Web效能測試』,點選功能列上的【加入資料來源】。
選擇我們的來源資料表… 按下【完成】。
加入後的資料來源如下圖
Step2.
選擇你要修改內容的參數,在屬性頁面的【值】選擇剛剛建立的資料來源裡面對應的欄位。
同理,Password欄位也可選擇從資料表抓取。

Step3. 其它設定: 可在『Web效能測試』加入其他迴圈或條件…
Step1. 打開剛才建立的『Web效能測試』,點選功能列上的【加入資料來源】。



選擇我們的來源資料表… 按下【完成】。

加入後的資料來源如下圖

Step2.
選擇你要修改內容的參數,在屬性頁面的【值】選擇剛剛建立的資料來源裡面對應的欄位。
同理,Password欄位也可選擇從資料表抓取。

Step3. 其它設定: 可在『Web效能測試』加入其他迴圈或條件…
五、 建立【管理測試控制器】
注意:若在資料庫已建立過 LoadTest 資料庫,則忽略步驟1.
Step1.
開啟命令提示字元,輸入下列文字:
在 32 位元版本的 Visual Studio 2010 Ultimate 上,輸入:cd C:\Program Files\Microsoft Visual Studio 10\Common7\IDE
或
在 64 位元版本的 Visual Studio 2010 Ultimate 上,輸入:cd C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
在該資料夾中,輸入下列文字:
SQL Express:SQLCMD /S localhost\sqlexpress /i loadtestresultsrepository.sql
SQL:您可以將資料庫安裝到任何現有 SQL Server。 例如,如果您的 SQL Server 名稱為 ContosoServer1,可以使用下列命令:
SQLCMD /S ContosoServer1 -i loadtestresultsrepository.sql
若需要登入資料庫的帳號&密碼,請輸入:
SQLCMD /S ContosoServer1 -U <user name> -P <password> -i loadtestresultsrepository.sql
完成後,會在Sql Server(或Sql Express)上建立一個LoadTest的資料庫。
Step2.
回到Visual Studio 2010,打開【測試】→【管理測試控制器】
Step3. 選取剛才建立的LoadTest資料庫,完成【管理測試控制器】設定。 未來負載測試結果會直接寫到此資料庫。

注意:若在資料庫已建立過 LoadTest 資料庫,則忽略步驟1.
Step1.
開啟命令提示字元,輸入下列文字:
在 32 位元版本的 Visual Studio 2010 Ultimate 上,輸入:cd C:\Program Files\Microsoft Visual Studio 10\Common7\IDE
或
在 64 位元版本的 Visual Studio 2010 Ultimate 上,輸入:cd C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
在該資料夾中,輸入下列文字:
SQL Express:SQLCMD /S localhost\sqlexpress /i loadtestresultsrepository.sql
SQL:您可以將資料庫安裝到任何現有 SQL Server。 例如,如果您的 SQL Server 名稱為 ContosoServer1,可以使用下列命令:
SQLCMD /S ContosoServer1 -i loadtestresultsrepository.sql
若需要登入資料庫的帳號&密碼,請輸入:
SQLCMD /S ContosoServer1 -U <user name> -P <password> -i loadtestresultsrepository.sql
完成後,會在Sql Server(或Sql Express)上建立一個LoadTest的資料庫。
Step2.
回到Visual Studio 2010,打開【測試】→【管理測試控制器】

Step3. 選取剛才建立的LoadTest資料庫,完成【管理測試控制器】設定。 未來負載測試結果會直接寫到此資料庫。

六、 開始進行負載測試:
Step1. 加入一個『負載測試』

Step2. 【情節】:第一個畫面,輸入測試情節名稱,和設定考慮時間 ( 請參考MSDN )。

Step3. 【負載模式】:設定虛擬使用者人數

Step4.
選取【測試混合模型】,這個一開始看匯有點霧煞煞。
如果跟【測試混合】一起看,就比較好理解。

舉例說明,如果我們建立兩個Web效能測試(WebTest1, WebTest2 … 兩種不同的使用者模式)…
a. 按總測試數:
測試結束時,WebTest1和WebTest2的總執行次數比例會剛好各自是70%及30%。(如下圖)
但是每個使用者執行A或B的順序和次數會讓VS自己去排定。
如~~ 甲 : WebTest1→WebTest2→WebTest1→WebTest1
乙:WebTest2→WebTest1→WebTest2→WebTest2

b. 按虛擬使用者人數:
如 70%的使用者完全重複跑WebTest1到測試結束,其它30%的使用者是完全跑WebTest2。
c. 按使用者步調:
直接指定每小時測試的次數,另測試順序也是VS自己排。

d. 依據循序測試順序:
所有使用者依據每個加入的『Web效能測試』順序,執行所有測試直到時間結束。
如 甲:WebTest1→WebTest2→ WebTest1→WebTest2→ …
乙:WebTest1→WebTest2→ WebTest1→WebTest2→ …

Step5. 【測試混合】: 請參考Step4.
Step6. 【網路混合】: 加入我們要測試的網路,並設定分佈。

Step7. 【瀏覽器混合】:加入我們要測試的瀏覽器

Step8. 【計數器集合】:加入你要測試的主機名稱,並選擇你要監測的部分,如:IIS狀態…等。
詳細資料可參考 MSDN

Step9. 【回合設定】:
可選擇「負載測試持續期間」或「測試反覆項目」,詳細資料可參考MSDN
『負載測試持續時間』 (預設選項 ):
※ 準備持續期間:
執行測試後、到開始記錄取樣資料之間的時間區段,可能在錄製樣本值之前,讓虛擬使用者逐步達到特定的負載量,但在此之前則不記錄。而準備期結束前所擷取的樣本值,依然會顯示在「負載測試監視器」中。
※ 執行持續期間(預設值「 0時10分0秒」):執行測試的時間。
『測試反覆項目』:
指定在負載測試完成之前反覆執行個別測試的總數。
取樣率(預設值「 5」):擷取效能計數器值的間隔時間。
驗證層級(預設值「低」):定義在負載測試中,其驗證規則的層級。驗證規則與 Web測試要求有關,每條驗證規則都會定義驗證層級──高、中、低。此處指定當 Web測試在負載測試中執行時,會執行何種驗證規則。例如,如果設定為「中」,便執行所有標記為中或低的驗證規則。

Step10. 以上設定完成後,按下【完成】。 便會開始執行負載測試。

Step11. 結束後,會列出摘要。

六、 補充:
負載測試也可以搭配已寫好的單元測試,來測試多工的系統(如WCF … etc)
Step1. 先寫好一個單元測試
Step2. 在測試專案加入一個負載測試
Step3. 在測試混合中,選擇步驟一的單元測試
PS. 如果單元測試裡面的內容,有包含initial(或結束)資料或設定的部分,建議把她們拿到其他函式。 然後在『測試混合』中的【初始化和結束測試】加上這部分,避免影響負載測試的結果。
七、 參考資料:負載測試也可以搭配已寫好的單元測試,來測試多工的系統(如WCF … etc)
Step1. 先寫好一個單元測試
Step2. 在測試專案加入一個負載測試
Step3. 在測試混合中,選擇步驟一的單元測試

PS. 如果單元測試裡面的內容,有包含initial(或結束)資料或設定的部分,建議把她們拿到其他函式。 然後在『測試混合』中的【初始化和結束測試】加上這部分,避免影響負載測試的結果。

1. 程式碼效能剖析(電腦科技電子報)…Link
2. NET 記憶體配置檢視(MSDN)…Link
3. 在 Web 效能測試中使用驗證規則和擷取規則(MSDN)…Link 4. 軟體測試實戰系列─VSTS負載測試…Link 5. 在負載測試中指定電腦的計數器集合…Link
6. VS 2010負載測試結果結果由SQL Server管理…Link 7. HOW TO:使用 SQL 建立結果存放區(MSDN)… Link
沒有留言:
張貼留言