我被要求对我们客户托管的外部网络服务进行负载测试。
基本上是向服务发送多个 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/