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