⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stressmark使用指南.html

📁 StressMark测试软件是一个使用Visual C++编写的
💻 HTML
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>StressMark 使用指南</title>
<style>
<!--
h1           { font-size: 16pt; font-weight: bold; color: #000080 }
p            { font-size: 11pt }
pre          { font-family: Courier New; font-size: 10pt; color: #006600 }
-->
</style>
</head>

<body bgcolor="#C0C0FF">

<table width="800" cellspacing="0" cellpadding="0" bgcolor="#000000"><tr>
<td width="100%" bgcolor="#000000" valign="top"
style="filter:wave(freq=7,lightstrength=20,strength=3)">
<i><font face="Courier New" size="2" color="#006600">
StressMark StressMark StressMark StressMark StressMark StressMark StressMark StressMark
StressMark StressMark StressMark StressMark StressMark StressMark StressMark StressMark
StressMark StressMark StressMark StressMark StressMark StressMark StressMark StressMark
StressMark StressMark StressMark StressMark StressMark StressMark StressMark StressMark
StressMark StressMark StressMark StressMark
</font></i>
</td></tr></table>

<div style="position:absolute;top:32;left:200;
filter:alpha(opacity=50,finishopacity=100,style=1)">
<span style="font-family:黑体;font-size:28px;font-style:italic;color:#80FF40">
StressMark 使用指南
</span>
</div>


<h1>简介</h1>

<p>StressMark测试软件是一个使用Visual C++编写的,开放源代码的测试工具,可以完成服务程序及重要算法的功能和性能测试,其最主要的功能是模拟多线程或多客户端的自动化压力测试。</P>
<p>
我们可以利用StressMark软件完成的典型测试任务包括:</P>
<p>1.	在多线程环境下测试一个软件模块、一段关键算法是否可以正确运行,即代码是否是多线程安全的。</P>
<p>2.	测试一个软件模块、一段关键算法在并发执行时的效率,如每个线程的平均执行时间等。</P>
<p>3.	模拟一个服务程序的多个客户端,测试该服务程序对并发请求的响应是否正确。</P>
<p>4.	模拟一个服务程序的多个客户端,测试该服务程序在并发请求的情况下,对每个客户请求的响应效率。</P>
<p>5.	使用一台或多台高配置的测试计算机(多CPU,大内存),每台计算机上运行一套StressMark,每套StressMark模拟多个客户线程,以此测试服务程序在大压力情况下的响应能力,这一方法甚至可以测出服务程序支持的并发数上限。</P>
<p>因为StressMark软件的源代码是完全开放的,基于这套源代码,你完全可以改造出符合你的特定需求的自动测试程序,使StressMark可以完成更多的测试任务。</P>

<h1>相关概念</h1>

<p><B>测试包:</B>用户根据特定测试需求制订的,包含一个或多个不同测试用例
及其配置方式的描述性大纲。</p>

<p><B>测试用例:</B>指对一项特定的测试任务的描述,包括测试目标,输入数据,
测试方法,实现代码等。
在 StressMark 中,测试用例对应于一段具体的待测试代码,该测试代码由测试者提供,
并被嵌入到 StressMark 工程中。
测试时,可以对一个测试用例起多个测试客户(线程)同时运行,也就是说,
一个测试用例同时可以有多个运行实例。
还可以对特定的测试用例指定测试次数,即指定在该测试用例的每个实例中,
重复执行多少次测试代码。根据需要,用户也可以指定每两次重复之间的时
间间隔。</p>

<p><B>测试客户:</B>或称测试线程。指测试时某特定测试用例的一个具体的实例。
该实例以线程方式运行,并与该测试用例的其他实例同时启动。
用户可以在测试包中为每个测试用例配置测试客户(线程)的数目。</p>

<p><B>测试次数:</B>某特定测试用例的每一个测试客户(线程)中,待测试代码
的重复执行次数。用户可以在测试包中为每个测试用例配置测试次数。</p>

<p><B>间隔时间:</B>某特定测试用例的每一个测试客户(线程)中,待测试代码
两次重复执行之间的间隔时间。单位是微秒。间隔时间可以在测试包中指定。</p>

<h1>使用指南</h1>

<p>
1. 使用 Visual C++ 6.0 打开项目 StressMark\StressMark.dsw;或使用 Visual 
C++ .NET 7.0 打开解决方案 StressMark\StressMark.sln
</p>
<p>
2. 用Visual C++语言实现一个具体的测试用例类。
</p>
<p>所有的测试用例类均应派生于基类 StressCase,
必须实现 StressCase 类的 OneStep() 方法,并在 OneStep() 方法中填写测试代码。
测试用例类可以选择实现 StressCase 类的 OnInitialize() 和 OnUninitialize() 方法,
以完成测试前的初始化和测试后的清理工作。在一个测试客户(线程)中,
OnInitialize() 和 OnUninitialize() 方法仅被调用一次;
OneStep() 方法被调用的次数取决于测试者在测试包中配置的测试次数。
</p>

<p>测试者可以在测试用例类中包含测试所需的中间变量、方法等,
但<b>不要使用全局变量或全局资源</b>(因为测试案例是运行在线程环境中)。
对于无法使用 Visual C++ 实现的待测试代码(如 Visual Basic
代码),测试者可以先将待测试代码包装成 Visual C++
可以调用的 ActiveX Automation 组件或动态连接库,再于 OneStep()
方法中编码调用。
</p>

<p>一个简单的测试包的例子如下:
</p>

<p>MyCase1.h
</p>

<pre>#include &quot;stdafx.h&quot;
#include &quot;StressCase.h&quot;

class MyCase1 : public StressCase
{
public:
    DECLARE_DYNCREATE(MyCase1)
    bool OneStep(CString&amp; strErrorMessage);
};</pre>

<p>MyCase1.cpp</p>
<pre>#include &quot;stdafx.h&quot;
#include &quot;StressCase.h&quot;
#include &quot;MyCase1.h&quot;

IMPLEMENT_DYNCREATE(MyCase1, StressCase)

bool MyCase1::OneStep(CString&amp; strErrorMessage)
{
    // do something...
    return true;
}</pre>

<p>注意:定义测试用例类必须分成头文件(*.h)和实现文件(*.cpp),在头文件
中的类定义体内必须包含语句</p>
<pre>DECLARE_DYNCREATE(ClassName)</pre>
<p>在实现文件中必须包含语句</p>
<pre>IMPLEMENT_DYNCREATE(ClassName, StressCase)</pre>
<p>上面的例子仅实现了OneStep()方法。需要时,也可以实现
OnInitialize() 和 OnUninitialize()
方法。测试者在测试用例代码内可以通过 StressCase
类的成员变量获得与自身相关的各种信息,包括案例名称、线程号、测试次数等,
也可以在测试失败时通过参数
strErrorMessage
返回错误信息(该错误信息将显示在测试界面中),或者调用
StressCase 类的 LogEvent() 方法记录系统日志(仅在 Windows NT/2000
下有效,日志信息记录在操作系统的应用程序日志中,可以使用事件查看器阅读)。</p>
<p>有关 StressCase
类的各成员变量及方法的使用的详细信息,请参见头文件
StressCase.h 中的代码和注释。</p>
<p>3. 将上面实现的头文件和实现文件(如MyCase1.h和MyCase1.cpp)加入Visual
C++工程中。</p>
<p>4. 必要的话,重复2-3,实现其他测试用例类。</p>
<p>5. 修改 TestSuite.cpp 的内容,定义测试包。TestSuite.cpp
文件的格式及配置方法如下:</p>
<pre>
///////////////////////////////////////////////////////////////////////////
//
// TestSuite.cpp - 测试包定义
//
///////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "StressCase.h"

//
// 在此处包含所有具体的测试用例类的头文件,例如
// #include "MyCase1.h"
// #include "MyCase2.h"
// ...
//
#include "MyCase1.h"
#include "MyCase2.h"

//
// 此处定义所有具体的测试用例
//      每个具体测试用例的定义语法为
//
//      BEGIN_TEST_SUITE
//          DECLARE_TEST_CASE(ClassName, Name, Clients, Times, Interval)
//          ...
//      END_TEST_SUITE
//
//          其中,ClassName 是测试用例的类名,
//          Name 是显示用的测试用例名称,
//          Clients 是指定为该测试用例起多少个客户(线程)
//          Times 是每个客户(线程)中重复测试多少次
//          Interval 是线程中每两次测试间的时间间隔(微秒数,
//              Interval 为 0 表示不间断地连续测试)
//
//
BEGIN_TEST_SUITE
    DECLARE_TEST_CASE(MyCase1, "测试用例一", 5, 5, 1000)
    DECLARE_TEST_CASE(MyCase2, "测试用例二", 8, 10, 0)
END_TEST_SUITE
</pre>
<p>6. 编译 StressMark 工程。注意要使用 Release
方式编译,以保证测试所得的时间数据的精确。</p>
<p>7. 在测试环境中运行程序StressMark.exe。测试者可以在程序界面中使用"开始测试"、"终止测试"按钮来启动或停止测试过程,测试结束后,可以用"报表"按钮输出测试报告到文本文件中。如果因线程调度或测试代码的原因,测试过程无法停止的话,测试者可以直接使用"杀所有线程"按钮终止测试。</p>
<p>8. 其他更详细的信息,如测试用例的执行方式,线程调度规则等,可以参见
StressMan.h 和 StressMan.cpp 中的代码和注释。</p>
<p align="right"> </p>
<p align="right"> </p>
<p align="right"><u><i>王咏刚</i>,<i>2002年2月</i></u></p>

</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -