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

问题描述 投票:0回答:1

我有一个负载测试,有几个场景,运行12个小时,我想增加一个场景,每小时运行一次,由10个虚拟用户。

我正在使用的丑陋的解决方案是有12个额外的场景,每个场景都有自己的 "延迟启动",间隔1小时。

我怎么能告诉一个特定的场景每小时运行一次.注:对于这种情况,我不需要它每小时都尖锐地运行。主要的想法是有一个任务,每小时运行+-。

visual-studio mstest load-testing
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自定义加载模式 "这样的术语。请看 本页 举个例子。

© www.soinside.com 2019 - 2024. All rights reserved.