如何每小时运行一次负载测试方案?

时间:2020-06-08 14:43:20

标签: visual-studio mstest load-testing

我有一个带有多个场景的loadTest,运行了12个小时。 我想添加另一个场景,该场景每小时由10个虚拟用户运行一次。

我正在使用的丑陋解决方案是有12个其他方案,每个方案都有自己的“延迟开始”,间隔为1个小时。 这是一个丑陋的解决方案。

如何告诉特定情况每小时运行一次。 注意:在这种情况下,我不需要每小时运行一次。主要思想是让任务每小时运行+/-。

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