C# 负载测试Web服务
我被要求对客户托管的外部Web服务进行负载测试 基本上是向服务发送多个web请求,以及服务处理这些请求所需的时间。尝试并模拟多个不同的用户从不同的机器访问web服务。测试将检查Web服务是否能够处理此问题,并基本上为客户端提供一些度量和示例……例如,响应50个请求需要多长时间 我知道这可以通过使用SoapUI/LoadUI这样的工具来实现 我想知道的是,我是否可以使用C编写负载测试 目前我有以下几点:C# 负载测试Web服务,c#,web-services,load-testing,C#,Web Services,Load Testing,我被要求对客户托管的外部Web服务进行负载测试 基本上是向服务发送多个web请求,以及服务处理这些请求所需的时间。尝试并模拟多个不同的用户从不同的机器访问web服务。测试将检查Web服务是否能够处理此问题,并基本上为客户端提供一些度量和示例……例如,响应50个请求需要多长时间 我知道这可以通过使用SoapUI/LoadUI这样的工具来实现 我想知道的是,我是否可以使用C编写负载测试 目前我有以下几点: [Test] public void TestService50Request
[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);
}
我想有更好的方法吗?有什么改进的建议吗?或者这是完全错误的吗?来介绍SoapUI的另一种替代方案-我宁愿使用而不是尝试使用C 首页: Apache JMeter的功能包括: 可以加载和性能测试多种不同的服务器类型: 肥皂
为了展示SoapUI的另一种替代方案,我宁愿使用而不是尝试用C来实现它 首页: Apache JMeter的功能包括: 可以加载和性能测试多种不同的服务器类型: 肥皂
这真的取决于你要测试什么。负载测试可以用来强调需要多少并发用户才能中断系统或在系统的较长时间内保持中等负载。您的代码不会向系统发送任何并发请求,因此不能将其视为模拟用户真实行为的良好测试 有很好的工具来完成这些,但它们可能代价高昂。如果你有你的支配,包括是相当好的。你也可以看看,这是一个可以做类似事情的工具
所以,我会回到给你需求的人那里,问你具体需要测试什么。是否是系统可以处理的并发用户数、内存泄漏、系统可用性或性能?这实际上取决于您要测试的内容。负载测试可以用来强调需要多少并发用户才能中断系统或在系统的较长时间内保持中等负载。您的代码不会向系统发送任何并发请求,因此不能将其视为模拟用户真实行为的良好测试 有很好的工具来完成这些,但它们可能代价高昂。如果你有你的支配,包括是相当好的。你也可以看看,这是一个可以做类似事情的工具
所以,我会回到给你需求的人那里,问你具体需要测试什么。是系统能够处理的并发用户数、无内存泄漏、系统可用性或性能吗?我将解释如何在visual studio中为Web服务创建负载测试 创建负载测试项目 创建负载测试项目的第一步。为此,请执行以下步骤 步骤: 打开VisualStudio实例 通过单击“新建”>“项目…”创建新项目 单击“测试”,然后用C选择“Web性能和负载测试项目”,提供任何合适的名称,然后单击“确定” 创建项目后 使用记录器创建性能测试 第二步是创建一个性能测试,它可以使用记录器创建,也可以直接调用HTTP请求。在这里,我们将使用记录器记录HTTP请求。 步骤: 要添加性能测试,请左键单击项目并打开“添加”>“Web性能测试” 注意:将自动添加一个Web测试,如果需要,您也可以重命名该测试 如果记录器打开或关闭,只需左键单击测试并单击“添加Web服务请求” 将本地主机post方法从左窗格中的属性更改为用户Web服务地址 在正文属性中选择内容类型为Text/XML,在字符串正文中提供XML。 例如,请注意使用SOAP 1.2请求,因为我们使用的是.net Framework 4.0或4.5 单击“确定” 参数化脚本 正如我们所知,负载测试将模拟多个用户,因此在某些情况下,所有用户都需要一个唯一的数据集,因此参数化请求非常重要。为此,需要执行以下步骤 我们需要数据源将参数与Excel或SQL Server表中的数据绑定。为此,请单击突出显示的图标创建数据源 如果要从CSV文件获取参数数据,请选择CS else select data base 对于SQL Server,通过执行所需步骤并最后选择表,创建与D.B的连接。 现在打开web服务主体XML,并在其tag.Name of CSV file.Field Name}中参数化参数类型,例如
{{DataSource1.test#csv.ID}}
这样就可以参数化web服务的所有必需参数
加负荷试验
现在之后
创建性能测试您需要针对它创建负载测试。为此,请执行以下步骤。
步骤:
左键单击项目并打开
单击“下一步”将打开一个窗口
命名您的场景,选择思考时间并单击下一步
根据您的要求和测试机规格选择用户计数
选择测试模型
通过单击将包含在负载测试中的添加来添加性能测试
选择您的测试
以这种方式配置负载测试并继续
执行负载测试。
完成所有配置后,只需启动负载测试
当负载测试开始时,将显示以下图表
生成报告
生成负载测试报告的方法有很多种,一种是使用excel自动创建报告,另一种是准备报告,您自己只需要所需的数据,我通常需要的是响应时间及其图表,我只是以电子邮件形式生成下面提到的报告,但这取决于需要
您可以在此找到一个基本教程,我将解释如何在VisualStudio中为Web服务创建负载测试 创建负载测试项目 创建负载测试项目的第一步。为此,请执行以下步骤 步骤: 打开VisualStudio实例 通过单击“新建”>“项目…”创建新项目 单击“测试”,然后用C选择“Web性能和负载测试项目”,提供任何合适的名称,然后单击“确定” 创建项目后 使用记录器创建性能测试 第二步是创建一个性能测试,它可以使用记录器创建,也可以直接调用HTTP请求。在这里,我们将使用记录器记录HTTP请求。 步骤: 要添加性能测试,请左键单击项目并打开“添加”>“Web性能测试” 注意:将自动添加一个Web测试,如果需要,您也可以重命名该测试 如果记录器打开或关闭,只需左键单击测试并单击“添加Web服务请求” 将本地主机post方法从左窗格中的属性更改为用户Web服务地址 在正文属性中选择内容类型为Text/XML,在字符串正文中提供XML。 例如,请注意使用SOAP 1.2请求,因为我们使用的是.net Framework 4.0或4.5 单击“确定” 参数化脚本 正如我们所知,负载测试将模拟多个用户,因此在某些情况下,所有用户都需要一个唯一的数据集,因此参数化请求非常重要。为此,需要执行以下步骤 我们需要数据源将参数与Excel或SQL Server表中的数据绑定。为此,请单击突出显示的图标创建数据源 如果要从CSV文件获取参数数据,请选择CS else select data base 对于SQL Server,通过执行所需步骤并最后选择表,创建与D.B的连接。 现在打开web服务主体XML,并在其tag.Name of CSV file.Field Name}中参数化参数类型,例如
{{DataSource1.test#csv.ID}}
这样就可以参数化web服务的所有必需参数
加负荷试验
现在,在创建性能测试之后,您需要针对它创建负载测试。为此,请执行以下步骤。
步骤:
左键单击项目并打开
单击“下一步”将打开一个窗口
命名您的场景,选择思考时间并单击下一步
根据您的要求和测试机规格选择用户计数
选择测试模型
通过单击将包含在负载测试中的添加来添加性能测试
选择您的测试
以这种方式配置负载测试并继续
执行负载测试。
完成所有配置后,只需启动负载测试
当负载测试开始时,将显示以下图表
生成报告
生成负载测试报告的方法有很多种,一种是使用excel自动创建报告,另一种是准备报告,您自己只需要所需的数据,我通常需要的是响应时间及其图表,我只是以电子邮件形式生成下面提到的报告,但这取决于需要
你可以在上面找到一个基本的测试有没有理由不同时发出多个请求?你所做的不是单元测试。我已经相应地编辑了标题和标签。@Blachshma否,除了我试图模拟多个不同的用户点击该服务之外。如果那样的话sense@amaters我可以使用SoapUI,但我只想尝试通过C实现这一点。如果你有VS 2012 Ultimate,这很容易做到。他们有一个非常灵活的负载测试功能,它基本上将您编写的单元测试作为输入。不同时发出多个请求有什么原因吗?您所做的不是单元测试。我已经相应地编辑了标题和标签。@Blachshma否,除了我试图模拟多个不同的用户点击该服务之外。如果这有道理的话
@我可以使用SoapUI,但我只想尝试通过C实现这一点。如果你有VS 2012 Ultimate,这很容易做到。他们有一个非常灵活的负载测试功能,它基本上将您编写的单元测试作为输入。谢谢-我知道有一些工具可能更适合于负载测试服务的工作,但我只想通过Cthanks尝试一下-我知道有一些工具可能更适合负载测试服务的工作服务,但我只是想通过CAs尝试一下,据我所知,只有Visual Studio Enterprise具有Web性能和负载测试项目选项。是的Enterprise,或者如果您大约在2010年到2012年,那么据我所知,只有Visual Studio Enterprise具有Web性能和负载测试项目选项。是Enterprise,或者如果您选择的是2010年至2012年的最终版本