由于这个问题仍然悬而未决,我不妨权衡一下。
好消息是,在过去 5 年左右的时间里,开源工具已经真正成熟并在该领域起飞,坏消息是其中有很多。
以下是我的想法:-
Jmeter vs磨床
Jmeter 由 XML 样式规范驱动,该规范是通过 GUI 构建的。
Grinder 在多线程 Java 框架中使用 Jython 脚本,因此更面向程序员。
这两种工具都将处理 HTTP 和 HTTPS,并有一个代理记录器来帮助您入门。这两种工具都使用控制器模型来驱动多个测试代理,因此可扩展性不是问题(允许访问云)。
哪个更好:-
当您遇到更复杂的 url 重写、关联、为每个虚拟用户提供唯一数据以及模拟第一次或返回用户(通过操作 HTTP 标头)的脚本要求时,这两种工具的学习曲线都非常陡峭,因此很难调用。
也就是说,我将从 Jmeter 开始,因为这个工具有大量的追随者,并且网上有很多使用这个工具的示例和教程。如果您遇到“路障”,那是您无法使用 Jmeter“轻松”完成的事情,然后看看 Grinder。好消息是这两个工具都具有相同的 Java 要求,并且“混合搭配”解决方案并非不可能。
添加一些新东西——运行多个 Selenium WebDriver 实例的无头浏览器。
这是一种相对较新的方法,因为它依赖于现在可以从云中配置的资源的可用性。使用这种方法,一个 Selenium (WebDriver) 脚本被采用并在多个线程中的无头浏览器(即 WebDriver = New HtmlUnitDriver())驱动程序中运行。
根据经验,可以从 Amazon M1 小型实例执行大约 25 个“无头浏览器”实例。
这意味着当您将功能测试脚本重新调整为性能测试脚本时,所有相关性、url 重写问题都会消失。
与 Grinder 或 Jmeter 等 HTTP 驱动程序相比,由于需要更多 VM 来驱动负载,因此可扩展性受到影响。也就是说,如果您希望以每小时 1.20 美元的成本驱动 500 个虚拟用户,那么使用 20 个 Amazon 小型实例(每个小时 6 美分)可以为您提供非常接近真实用户体验的负载。