如何对WinForms应用程序进行负载测试?

3
我正在尝试找出最佳方法来对一个与服务器交互并得到响应的Windows窗体应用程序进行负载测试。我需要为多个用户进行负载测试,不确定Visual Studio 2010内置的负载测试工具是否可行。欢迎提供任何建议。

5
听起来你实际需要进行的是服务器负载测试。大致计算出单个应用程序实例可以实际访问服务器的速度,然后乘以预期用户数量,以获得测试的范围。具体而言,WinForms 应用程序本身很少会承受重负荷;它只是一个坐落在某人电脑上的桌面应用程序。但如果多个副本同时访问同一服务器,则服务器的负载可能会开始影响某些(或全部)用户的性能。这就是为什么我说在这里更重要的是对服务器进行负载测试。 - dlev
我同意@dlev的观点,但如果我们的假设不正确,请澄清问题。 - Amr
我正在进行一个Web请求,向推送通知服务器注册GUID并获取响应,但我需要测试多个客户端执行相同的操作。 - Carl Weis
Guid是唯一的并且已注册到应用程序实例,因此我需要模拟多个实例,以便为每个实例生成Guid。 - Carl Weis
@Carl,我坚持我的早期评论; 服务器将承受负载。你说你想测试多个客户端同时发出请求。在这种情况下,你首先必须弄清楚a)在适当的时间跨度内可能的最大请求数是多少,以及b)在该时间变得不可接受给定用户之前,请求可以有多快(或慢)。 - dlev
显示剩余3条评论
3个回答

4

这里有一个你可以尝试的方法...

  • 在测试应用程序中,编写一个方法 A,封装调用服务器的代码并接收响应。
  • 在同一应用程序中,编写一个方法 B,创建多个线程。每个线程都会执行方法 A。
  • 确保计算出每个线程完成工作所需的时间。
  • 增加线程数以模拟更多负载。

将调用服务器的代码移动到仅包含方法 A 的代码中,应该使重复测试变得更容易,并减轻执行测试的客户端机器的负载。

以下是类似想法的示例代码,用于模拟访问数据库的负载测试C# 压力测试-模拟对给定共享资源的多个访问


0

听起来很有前途...我会去查看一下。 - Carl Weis

0

嗯,我的第一反应是创建一堆虚拟机并同时运行很多您的程序。可能会稍微改变一下IP地址(不知道这需要多大规模)。

这可能有点粗糙,但只要您每次添加几个连接,它就可以工作。显然,如果您需要同时打开成千上万个连接,这种方法就行不通了。但我希望这对您有所帮助。

- Kenetik


这种方法不太具有可扩展性。负载测试需要非常容易地进行扩展。 - Amr
我了解,我提到它只适用于小规模测试,我不知道需要测试多少,对于糟糕的帖子我感到很抱歉 =( 我是这个网站的新手,最多只能被视为一名普通程序员。将来我会更好地考虑我的答案 - kenetik
没关系,我们都是新手。只是这个答案没有满足“负载测试”的基本需求,这意味着需要进行大规模测试。 - Amr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接