c# - .NET 的通用性能测试框架

标签 c# .net performance testing

我有一个用 C#/.NET 3.5 编写的客户端/服务器应用程序,我想对其进行一些性能测试。我一直在寻找一个通用框架来帮助我,但运气不佳。我想要一些可以管理一组客户端并根据某些设置为他们执行随机操作的东西。然后我还想记录一些与此相关的数据,以帮助我为我的系统计算出一些粗略的阈值,例如我可以支持 n 个用户每秒执行 x 个操作。

我会编写特定于我的应用程序的代码来执行以下任务:

  • 登录/注销客户端。
  • 向服务器发送消息以执行各种操作。
  • 记录来自服务器的确认和其他消息。
  • 测量特定于系统的统计数据。

我希望框架随后能够采用一组参数来描述测试场景,例如:

  • 在给定时间登录的客户数量。
  • 每秒为每个客户端执行给定数量的操作。

然后它将运行场景、管理和跟踪所有用户和操作并整理所有数据。 (这是我试图避免自己编码的无聊部分......)理想情况下,它会内置一些通用测量值,例如发送消息和收到回复之间的时间,但如果没有,我可以自己编写代码。

我不想对我的代码进行任何分析;稍后在运行这些测试时,我总是可以附加一个分析器。相反,我想对我的系统做出一些粗略的结论,即在它崩溃之前我可以投入多少用户。 (如果有比“性能测试”更好的术语,请告诉我...也许是压力测试?)

我知道我没有在这里提供有关系统的很多细节。我觉得这是一个相当普遍的情况——我敢肯定有很多客户端/服务器系统,人们需要对其进行类似的测试。我发现很多基于 Web 的框架都可以做类似的事情,但它们似乎是根深蒂固的 Web 并且不容易适应非基于 HTTP 的系统。

有人知道有什么可以帮助的吗?我的搜索还没有找到任何东西。我应该指出,在可预测的 future ,我一直坚持使用 Visual Studio 2008 Professional,所以如果 2010 年可以做到这一点,那对我来说是不可能的。我想它不一定是 .NET 框架,前提是我仍然可以相当轻松地插入我的 .NET 代码。

编辑 需要说明的是,我的应用程序不是网站,它是通过自定义协议(protocol)连接到 .NET 服务的 Windows 窗体客户端应用程序。我可以编写代码来执行相关的客户端操作,我只需要一个框架来放入它。

最佳答案

您要查找的关键字是“分布式测试”。

Smart Bear 有一款名为 TestComplete 的产品支持 distributed testing .我不认为它可以在一台机器上运行你的客户端的多个实例(也许可以,但我想这不是一个好主意,因为它会影响性能结果)。

他们还有一个名为 LoadUI 的开源项目,它是为与 SoapUI 集成而构建的,但是您可以将它连接到您自己的客户端测试工具。我不知道这需要付出多少努力。

这些是我所知道的工具,但还有 many more那里的分布式测试工具。虽然大多数确实用于基于 Web 的测试,但它们通常具有足够的可扩展性,可以简单地启动一个不同的(基于 GUI 的)测试框架(我最喜欢的是 QAliber ),该框架在您的客户端应用程序上运行测试。

关于c# - .NET 的通用性能测试框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7580876/

相关文章:

c# - ASP.NET MVC 和 C# : HttpStatusCodeResult() vs HttpNotFound()

c# - ASP.Net Response.Close 问题

c# - 将 Windows 窗体移植到 .Net Standard 2.0

c# - 将两个组合框相互连接

c# - 无法理解 param 标签的作用

c# - 'Using' 必须以匹配的 'End Using' 结尾

性能测试音频 jmeter

javascript - 调试 AngularJS Internet Explorer 锁定

performance - 如何使用 Amazon Simple Notification Service (SNS) 批量发送数百万个推送通知

c# - IntelliSense 不在 DataSet.Tables[] 上显示数组索引器