使用指南
1. 使用 Visual C++ 6.0 打开项目 StressMark\StressMark.dsw;或使用 Visual Studio .NET 2003 打开解决方案 StressMark\StressMark.sln
2. 用Visual C++语言实现一个具体的测试用例类。
所有的测试用例类均应派生于基类 StressCase,必须实现 StressCase 类的 OneStep() 方法,并在 OneStep() 方法中填写测试代码。测试用例类可以选择实现 StressCase 类的 OnInitialize() 和 OnUninitialize() 方法,以完成测试前的初始化和测试后的清理工作。在一个测试客户(线程)中,OnInitialize() 和 OnUninitialize() 方法仅被调用一次;OneStep() 方法被调用的次数取决于测试者在测试包中配置的测试次数。
测试者可以在测试用例类中包含测试所需的中间变量、方法等,但不要使用全局变量或全局资源(因为测试案例是运行在线程环境中)。对于无法使用 Visual C++ 实现的待测试代码(如 Visual Basic代码),测试者可以先将待测试代码包装成 Visual C++可以调用的 ActiveX Automation 组件或动态连接库,再于 OneStep()方法中编码调用。
一个简单的测试包的例子如下:
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;
}
注意:定义测试用例类必须分成头文件(*.h)和实现文件(*.cpp),在头文件中的类定义体内必须包含语句
DECLARE_DYNCREATE(ClassName)
在实现文件中必须包含语句
IMPLEMENT_DYNCREATE(ClassName, StressCase)
上面的例子仅实现了OneStep()方法。需要时,也可以实现OnInitialize() 和 OnUninitialize()方法。测试者在测试用例代码内可以通过 StressCase类的成员变量获得与自身相关的各种信息,包括案例名称、线程号、测试次数等,也可以在测试失败时通过参数strErrorMessage返回错误信息(该错误信息将显示在测试界面中),或者调用StressCase 类的 LogEvent() 方法记录系统日志(仅在 Windows NT/2000下有效,日志信息记录在操作系统的应用程序日志中,可以使用事件查看器阅读)。
有关 StressCase类的各成员变量及方法的使用的详细信息,请参见头文件StressCase.h 中的代码和注释。
3. 将上面实现的头文件和实现文件(如MyCase1.h和MyCase1.cpp)加入VisualC++工程中。
4. 必要的话,重复2-3,实现其他测试用例类。
5. 修改 TestSuite.cpp 的内容,定义测试包。TestSuite.cpp文件的格式及配置方法如下:
///////////////////////////////////////////////////////////////////////////
//
// TestSuite.cpp - 测试包定义
//
///////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "StressCase.h"
//