如何 运行 每小时加载一次测试场景?
How to run load test Scenario once every hour?
我有一个包含多个场景的负载测试,运行宁 12 小时。
我想添加另一个方案,即 运行 每小时一次,由 10 个虚拟用户进行。
我使用的丑陋解决方案是增加 12 个场景,每个场景都有自己的 "delayed start",间隔为 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 custom load patterns" 等字词。参见 this page 一例。
我有一个包含多个场景的负载测试,运行宁 12 小时。 我想添加另一个方案,即 运行 每小时一次,由 10 个虚拟用户进行。
我使用的丑陋解决方案是增加 12 个场景,每个场景都有自己的 "delayed start",间隔为 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 custom load patterns" 等字词。参见 this page 一例。