我有一个负载测试,有几个场景,运行12个小时,我想增加一个场景,每小时运行一次,由10个虚拟用户。
我正在使用的丑陋的解决方案是有12个额外的场景,每个场景都有自己的 "延迟启动",间隔1小时。
我怎么能告诉一个特定的场景每小时运行一次.注:对于这种情况,我不需要它每小时都尖锐地运行。主要的想法是有一个任务,每小时运行+-。
我建议有两个场景的负载测试,一个是主用户负载,另一个是每小时10个用户的情况。然后安排在每小时开始时,将10用户的虚拟用户数(VU)设置为10,并适当减少。本题没有说明10用户测试每小时运行多长时间。
实现的基本方法是修改 m_loadTest.Scenarios[N].CurrentLoad
适当的 N
,在一个负载测试的心跳插件。心跳顾名思义,在测试过程中会频繁调用。所以,安排它检查测试的运行时间,并在每个小时开始时,为测试分配 m_loadTest.Scenarios[N].CurrentLoad = 10
并在不久之后将其恢复到 0
(即零)。我相信,将该值设置为比之前的值更小的值,可以让一个VU的各个测试执行运行到自然结束,但VU不会开始新的测试,因为这会超过该值。
然后,插件代码可能看起来类似于下面(未测试)。
public class TenUserLoadtPlugin : ILoadTestPlugin
{
const int durationOf10UserTestInSeconds = ...; // Not specified in question.
const int scenarioNumber = ...; // Experiment to determine this.
public void Initialize(LoadTest loadTest)
{
m_loadTest = loadTest;
// Register to listen for the heartbeat event
loadTest.Heartbeat += new EventHandler<HeartbeatEventArgs>(loadTest_Heartbeat);
}
void loadTest_Heartbeat(object sender, HeartbeatEventArgs e)
{
int secondsWithinCurrentHour = e.ElapsedSeconds % (60*60);
int loadWanted = secondsWithinCurrentHour > durationOf10UserTestInSeconds ? 0 : 10;
m_loadTest.Scenarios[scenarioNumber].CurrentLoad = loadWanted;
}
LoadTest m_loadTest;
}
有几个网页关于这个主题的变化。搜索诸如 "Visual Studio自定义加载模式 "这样的术语。请看 本页 举个例子。