c# - 负载测试 Web 服务

标签 c# web-services load-testing

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

基本上是向服务发送多个 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);           
    }

我假设有更好的方法来做到这一点?有什么改进建议吗?或者这是完全错误的吗?

最佳答案

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

有很好的工具可以完成这些任务,但它们的成本可能很高。如果你有 Visual Studio Ultimate在您的支配下,load testing tools包括的都不错。你也可以看看WAPT ,这是一个可以做类似事情的工具。

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

关于c# - 负载测试 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14623173/

相关文章:

java - JMeter java API - 负载测试运行但服务器上未收到请求

c# - 在 C# 中序列化和反序列化自引用对象

c# - 安全解析字符串的最佳做法是什么?

c# - 当 xamarin 表单中的条目为空时,有没有办法在按下删除时触发事件

sql - 用于将 REST 查询转换为数据库查询的库(或多个库)?

java - 具有 Web 服务的客户端/服务器。项目设置中如何处理生成的源?

html - 如何将 Visual Studio 负载测试结果文件 (.trx) 显示为可读格式?

c# - 将 Azure 数据库与 Windows 窗体应用程序结合使用的最佳方式

Android 向服务器发送 HTTP POST 请求

visual-studio - Visual Studio 2010 测试 Controller 负载测试数据库配置失败?