2

我被要求对我们客户托管的外部 Web 服务进行负载测试。

基本上是向服务发送多个 Web 请求,以及服务处理所有请求所需的时间。尝试并模拟多个不同的用户从不同的机器访问 Web 服务。测试将检查 Web 服务是否可以处理此问题,并基本上为客户端提供一些指标和示例……例如,它需要多长时间才能响应 50 个请求。

我知道这可以通过使用像 SoapUI/LoadUI 这样的工具来实现。

我想知道的是无论如何我可以使用 C# 编写负载测试吗?

目前,我有以下几点:

    [Test]
    public void TestService50Requests()
    {
        List<WebRequest> requests = CreateMultipleRequests(50); //Creates web request objects

        string timeSpan = TimeMultipleRequests(requests);

        Console.WriteLine("50 Requests runtime: " + timeSpan);
    }

    private void TimeMultipleRequests(List<WebRequest> requests)
    {
       var stopWatch = new Stopwatch();
       stopWatch.Start();

       foreach (var request in requests)
       {
            request.GetResponse();
       } 

       stopWatch.Stop();
       var timeSpan = stopWatch.Elapsed;
       return String.Format("{0:00} hours, {1:00} minutes, {2:00} seconds, {3:00} milliseconds", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds / 10);           
    }

我认为有更好的方法来做到这一点?有什么改进建议还是完全错误?

4

3 回答 3

3

这实际上取决于您要测试的内容。负载测试可用于对系统施加压力(破坏系统需要多少并发用户)或浸泡(长时间中等负载)系统。您的代码不会向系统发送任何并发请求,因此不能将其视为模拟用户真实行为的良好测试。

有很好的工具来完成这些,但它们可能很昂贵。如果您可以使用Visual Studio Ultimate,那么其中包含的负载测试工具非常好。您还可以查看WAPT,这是一个可以做类似事情的工具。

所以,我会回到给你要求的人那里,询问具体需要测试什么。是系统可以处理的并发用户数、没有内存泄漏、系统可用性还是性能?

于 2013-01-31T10:20:06.530 回答
1

提出 SoapUI 的另一种替代方案 - 我会使用JMeter而不是尝试在 C# 中进行。

从首页:

Apache JMeter 功能包括:

  • 可以负载和性能测试许多不同的服务器类型:

    • 肥皂
于 2013-01-31T10:14:05.220 回答
0

我将解释如何在 Visual Studio 中为 Web 服务创建负载测试 创建负载测试项目 创建负载测试项目的第一步。为此,请执行以下步骤 步骤:

打开 Visual Studio 实例

通过单击新建 > 项目…创建一个新项目。

单击“测试”,然后使用 C# 选择“Web 性能和负载测试项目”,提供任何合适的名称,然后单击“确定”。

创建项目后使用记录器创建性能测试第二步是创建性能测试,它可以使用记录器创建或直接调用 HTTP 请求在这里我们将使用记录器记录 HTTP 请求。步骤:添加性能测试 左键单击您的项目并打开添加 > Web 性能测试。

注意:将自动添加一个 Web 测试,如果需要,您也可以重命名它 如果记录器打开关闭它,否则只需左键单击您的测试并单击“添加 Web 服务请求”。

从左窗格的属性中将本地主机发布方法更改为用户 Web 服务地址

在 Body Properties 中选择 Content Type 作为 Text /XML 并在 String Body 中提供您的 XML 。例如,请注意使用 SOAP 1.2 请求,因为我们正在使用 .net 框架 4.0 或 4.5 单击确定

参数化脚本我们知道在负载测试中会模拟多个用户,因此在某些情况下,所有用户都需要一个唯一的数据集,因此参数化请求非常重要。为此,需要完成以下步骤
我们需要一个数据源来将我们的参数与 Excel 或 SQL Server 表中的数据绑定。为此,单击突出显示的图标创建数据源。

如果要从 CSV 文件中获取参数数据,请选择 CS,否则选择数据库。

在 SQL Server 的情况下,通过执行所需的步骤并最后选择表来创建与 DB 的连接。现在打开 Web 服务正文 XML 并在其标记中参数化参数类型 .Name of CSV file .Field Name}} 例如

{{DataSource1.test#csv.ID}}

这种方式参数化Web服务的所有必需参数。

添加负载测试 现在,在创建性能测试后,您需要针对它创建负载测试。为此,请执行以下步骤。步骤:左键单击项目并打开

将打开一个窗口单击下一步

命名您的方案,选择思考时间,然后单击下一步

根据您的要求和测试机器规格选择用户计数。

选择测试模型

添加您的性能测试通过单击将包含在负载测试中的添加

选择您的测试

以这种方式配置您的负载测试并继续

执行负载测试。完成所有配置后,只需启动负载测试

当负载测试开始时,将显示以下图表

生成报告 生成负载测试报告的方法有很多种,一种是使用 excel 自动创建报告,第二种是准备报告,你自己只需要数据我通常需要的是响应时间和它的图表,我只是像上面那样制作报告下面在电子邮件形式中提到,但这取决于需要。

您可以在此链接上找到基本教程

于 2015-07-01T08:01:56.977 回答