簡介
StressMark測試軟件是一個使用Visual C++編寫的,開放源代碼的測試工具,可以完成服務程序及重要算法的功能和性能測試,其主要的功能是模擬多線程或多客戶端的自動化壓力測試。
我們可以利用StressMark軟件完成的典型測試任務包括:
1. 在多線程環境下測試一個軟件模塊、一段關鍵算法是否可以正確運行,即代碼是否是多線程安全的。
2. 測試一個軟件模塊、一段關鍵算法在并發執行時的效率,如每個線程的平均執行時間等。
3. 模擬一個服務程序的多個客戶端,測試該服務程序對并發請求的響應是否正確。
4. 模擬一個服務程序的多個客戶端,測試該服務程序在并發請求的情況下,對每個客戶請求的響應效率。
5. 使用一臺或多臺高配置的測試計算機(多CPU,大內存),每臺計算機上運行一套StressMark,每套StressMark模擬多個客戶線程,以此測試服務程序在大壓力情況下的響應能力,這一方法甚至可以測出服務程序支持的并發數上限。
因為StressMark軟件的源代碼是完全開放的,基于這套源代碼,你完全可以改造出符合你的特定需求的自動測試程序,使StressMark可以完成更多的測試任務。
基本概念
測試包:用戶根據特定測試需求制訂的,包含一個或多個不同測試用例及其配置方式的描述性大綱。
測試用例:指對一項特定的測試任務的描述,包括測試目標,輸入數據,測試方法,實現代碼等。在 StressMark 中,測試用例對應于一段具體的待測試代碼,該測試代碼由測試者提供,并被嵌入到 StressMark 工程中。測試時,可以對一個測試用例起多個測試客戶(線程)同時運行,也是說,一個測試用例同時可以有多個運行實例。還可以對特定的測試用例指定測試次數,即指定在該測試用例的每個實例中,重復執行多少次測試代碼。根據需要,用戶也可以指定每兩次重復之間的時間間隔。
測試客戶:或稱測試線程。指測試時某特定測試用例的一個具體的實例。該實例以線程方式運行,并與該測試用例的其他實例同時啟動。用戶可以在測試包中為每個測試用例配置測試客戶(線程)的數目。
測試次數:某特定測試用例的每一個測試客戶(線程)中,待測試代碼的重復執行次數。用戶可以在測試包中為每個測試用例配置測試次數。
間隔時間:某特定測試用例的每一個測試客戶(線程)中,待測試代碼兩次重復執行之間的間隔時間。單位是毫秒。間隔時間可以在測試包中指定。
用戶界面
使用指南
1. 使用 Visual C++ 6.0 打開項目 StressMarkStressMark.dsw;或使用 Visual Studio .NET 2003 打開解決方案 StressMarkStressMark.sln
2. 用Visual C++語言實現一個具體的測試用例類。
所有的測試用例類均應派生于基類 StressCase,必須實現 StressCase 類的 OneStep() 方法,并在 OneStep() 方法中填寫測試代碼。測試用例類可以選擇實現 StressCase 類的 OnInitialize() 和 OnUninitialize() 方法,以完成測試前的初始化和測試后的清理工作。在一個測試客戶(線程)中,OnInitialize() 和 OnUninitialize() 方法僅被調用一次;OneStep() 方法被調用的次數取決于測試者在測試包中配置的測試次數。
測試者可以在測試用例類中包含測試所需的中間變量、方法等,但不要使用全局變量或全局資源(因為測試案例是運行在線程環境中)。對于無法使用 Visual C++ 實現的待測試代碼(如 Visual Basic代碼),測試者可以先將待測試代碼包裝成 Visual C++可以調用的 ActiveX Automation 組件或動態連接庫,再于 OneStep()方法中編碼調用。