如何 运行 每小时加载一次测试场景?

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 一例。