如何每小时运行一次负载测试场景?
Posted
技术标签:
【中文标题】如何每小时运行一次负载测试场景?【英文标题】:How to run load test Scenario once every hour? 【发布时间】:2020-06-08 14:43:20 【问题描述】:我有几个场景的 loadTest,运行了 12 个小时。 我想添加另一个场景,每小时运行一次,由 10 个虚拟用户运行。
我正在使用的丑陋解决方案是增加 12 个场景,每个场景都有自己的“延迟启动”,间隔为 1 小时。 这是一个丑陋的解决方案。
如何告诉特定场景每小时运行一次。 注意:对于这种情况,我不需要它每小时运行一次。主要思想是让任务运行 +/- 每小时一次。
【问题讨论】:
【参考方案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。
【讨论】:
谢谢。这就是我一直在寻找的。span>以上是关于如何每小时运行一次负载测试场景?的主要内容,如果未能解决你的问题,请参考以下文章
使用 powershell 安排 Visual Studio 负载测试给我 BSOD