一個(gè)簡(jiǎn)單的測(cè)試包的例子如下:
MyCase1.h
#include "stdafx.h"
#include "StressCase.h"
class MyCase1 : public StressCase
{
public:
DECLARE_DYNCREATE(MyCase1)
bool OneStep(CString& strErrorMessage);
};
MyCase1.cpp
#include "stdafx.h"
#include "StressCase.h"
#include "MyCase1.h"
IMPLEMENT_DYNCREATE(MyCase1, StressCase)
bool MyCase1::OneStep(CString& strErrorMessage)
{
// do something...
return true;
}
注意:定義測(cè)試用例類必須分成頭文件(*.h)和實(shí)現(xiàn)文件(*.cpp),在頭文件中的類定義體內(nèi)必須包含語(yǔ)句
DECLARE_DYNCREATE(ClassName)
在實(shí)現(xiàn)文件中必須包含語(yǔ)句
IMPLEMENT_DYNCREATE(ClassName, StressCase)
上面的例子僅實(shí)現(xiàn)了OneStep()方法。需要時(shí),也可以實(shí)現(xiàn)OnInitialize() 和 OnUninitialize()方法。測(cè)試者在測(cè)試用例代碼內(nèi)可以通過(guò) StressCase類的成員變量獲得與自身相關(guān)的各種信息,包括案例名稱、線程號(hào)、測(cè)試次數(shù)等,也可以在測(cè)試失敗時(shí)通過(guò)參數(shù)strErrorMessage返回錯(cuò)誤信息(該錯(cuò)誤信息將顯示在測(cè)試界面中),或者調(diào)用StressCase 類的 LogEvent() 方法記錄系統(tǒng)日志(僅在 Windows NT/2000下有效,日志信息記錄在操作系統(tǒng)的應(yīng)用程序日志中,可以使用事件查看器閱讀)。
有關(guān) StressCase類的各成員變量及方法的使用的詳細(xì)信息,請(qǐng)參見(jiàn)頭文件StressCase.h 中的代碼和注釋。
3. 將上面實(shí)現(xiàn)的頭文件和實(shí)現(xiàn)文件(如MyCase1.h和MyCase1.cpp)加入VisualC++工程中。
4. 必要的話,重復(fù)2-3,實(shí)現(xiàn)其他測(cè)試用例類。
5. 修改 TestSuite.cpp 的內(nèi)容,定義測(cè)試包。TestSuite.cpp文件的格式及配置方法如下:
///////////////////////////////////////////////////////////////////////////
//
// TestSuite.cpp - 測(cè)試包定義
//
///////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "StressCase.h"
//
// 在此處包含所有具體的測(cè)試用例類的頭文件,例如
// #include "MyCase1.h"
// #include "MyCase2.h"
// ...
//
#include "MyCase1.h"
#include "MyCase2.h"
//
// 此處定義所有具體的測(cè)試用例
// 每個(gè)具體測(cè)試用例的定義語(yǔ)法為
//
// BEGIN_TEST_SUITE
// DECLARE_TEST_CASE(ClassName, Name, Clients, Times, Interval)
// ...
// END_TEST_SUITE
//
// 其中,ClassName 是測(cè)試用例的類名,
// Name 是顯示用的測(cè)試用例名稱,
// Clients 是指定為該測(cè)試用例起多少個(gè)客戶(線程)
// Times 是每個(gè)客戶(線程)中重復(fù)測(cè)試多少次
// Interval 是線程中每?jī)纱螠y(cè)試間的時(shí)間間隔(毫秒數(shù),
// Interval 為 0 表示不間斷地連續(xù)測(cè)試)
//
//
BEGIN_TEST_SUITE
DECLARE_TEST_CASE(MyCase1, "測(cè)試用例一", 5, 5, 1000)
DECLARE_TEST_CASE(MyCase2, "測(cè)試用例二", 8, 10, 0)
END_TEST_SUITE
6. 編譯 StressMark 工程。注意要使用 Release方式編譯,以保證測(cè)試所得的時(shí)間數(shù)據(jù)的精確。
7. 在測(cè)試環(huán)境中運(yùn)行程序StressMark.exe。測(cè)試者可以在程序界面中使用"開(kāi)始測(cè)試"、"終止測(cè)試"按鈕來(lái)啟動(dòng)或停止測(cè)試過(guò)程,測(cè)試結(jié)束后,可以用"報(bào)表"按鈕輸出測(cè)試報(bào)告到文本文件中。如果因線程調(diào)度或測(cè)試代碼的原因,測(cè)試過(guò)程無(wú)法停止的話,測(cè)試者可以直接使用"殺所有線程"按鈕終止測(cè)試。
8. 其他更詳細(xì)的信息,如測(cè)試用例的執(zhí)行方式,線程調(diào)度規(guī)則等,可以參見(jiàn)StressMan.h 和 StressMan.cpp 中的代碼和注釋。