visual-studio-2010 - Visual Studio 负载测试以数据驱动的方式模拟许多用户?

标签 visual-studio-2010 visual-studio unit-testing load-testing data-driven-tests

我正在尝试对 Web 服务进行负载测试。

我有一个简单的方法,它接受 2 个参数发送到 Web 服务并返回响应,我从这个方法创建了一个单元测试。

因为我要需要为了测试各种不同的输入以有效地测试服务,我设置了一个包含约 1000 行的 CSV 作为单元测试的数据源。

我可以运行这个单元测试,它将遍历所有行,依次调用具有不同值的 Web 服务。

然而 ,这不是我需要的。我需要每一行对应于不同线程上的不同用户,使用负载测试配置来包括思考时间、使用步进负载增加用户、测试混合配置等。

我可以通过从单元测试和硬编码值中删除我的数据源来实现这一点.. 但这是一个从根本上有缺陷的测试:为了真正测试 Web 服务,我需要每个 用户 发送不同的值并获得不同的结果。

...

那么,如何将数据源挂接到负载测试并让该负载测试以不同的值启动每个用户的单元测试实例?

最佳答案

我最终使用这个答案作为指导:https://stackoverflow.com/a/7813465/237723

我没有从控制台应用程序方法创建单元测试并对该单元测试进行负载测试,而是创建了一个简单的 ASP.NET Web 表单,该表单接受输入并调用 Web 服务。

我使用这个新表单记录了一个 Web 性能测试,并创建了一个负载测试来运行该 WPTest。

  • 记录测试后,我将 CSV 作为数据源添加到此测试中。
  • 记录了 2 个“请求”:初始 GET 和后续 POST。确保你离开他们两个!我删除了 favicon.ico 请求,因为它不存在。 (这些预防措施可能是可以避免的)
  • 通过扩展 POST 请求,我修改了与我的 2 个 Web 服务输入相对应的 TextBox 参数的属性,以从 CSV 中的相应列中获取它们的值。
  • 我将数据源访问方法更改为“不自动移动光标”(您必须将数据源扩展到表并通过右键单击/F4 编辑其属性。)
  • 然后我创建了 WebTestPlugin(来自链接的答案),它根据正在运行的 UserID(一个 int)手动移动光标。这将对应于负载测试根据步骤计划启动的用户实例。创建此类后,构建项目,然后将其添加到 Web 性能测试中。

  • public class webtestplugin : WebTestPlugin
    {
        public override void PreWebTest(object sender, PreWebTestEventArgs e)
        {
            base.PreWebTest(sender, e);
            e.WebTest.MoveDataTableCursor("DataSource1", "addresses#csv", e.WebTest.Context.WebTestUserId);                        
        }
    }
    

    关于visual-studio-2010 - Visual Studio 负载测试以数据驱动的方式模拟许多用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12710732/

    相关文章:

    iOS:在 Swift 中使用 void func 进行单元测试

    javascript - 在 RxJs 中使用 TestScheduler 测试 Subject

    wpf - 为什么我在尝试添加引用时会看到 "Unable to emit assembly: Referenced assembly ... does not have a strong name"?

    c# - Visual Studio 中的“调试”和“发布”有什么区别?

    Java 8 流 IO - 测试

    sql - 在 MSSQL (Visual Studio) 中使用特定的数据库和表

    visual-studio - 取消固定/固定时,如何停止 Visual Studio 调整侧面板的大小?

    visual-studio-2010 - MFC 中模态对话框和非模态对话框的区别

    vb.net - VB.net 2010 中文件事件监控目录出现问题

    .net - 简单的 T4 模板在 Visual Studio 2010 中不起作用,但在 MonoDevelop 中起作用吗?