我有一个带有多个场景的loadTest,运行了12个小时。 我想添加另一个场景,该场景每小时由10个虚拟用户运行一次。
我正在使用的丑陋解决方案是有12个其他方案,每个方案都有自己的“延迟开始”,间隔为1个小时。 这是一个丑陋的解决方案。
如何告诉特定情况每小时运行一次。 注意:在这种情况下,我不需要每小时运行一次。主要思想是让任务每小时运行+/-。
答案 0 :(得分: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自定义加载模式”之类的术语。有关示例,请参见this page。