由于这个问题仍然未解决,我想我也可以发表一下自己的看法。好消息是,在过去的5年左右时间里,开源工具在这个领域真正成熟并开始流行起来了。坏消息是,有太多这样的工具。
以下是我的想法:
Jmeter vs Grinder
Jmeter是从XML风格的规范中推动的,这个规范是通过GUI构建的。
Grinder使用Jython脚本在多线程Java框架内,因此更适合程序员。
这两个工具都能处理HTTP和HTTPS,并且有一个代理记录器让你开始测试。这两个工具都使用控制器模型来驱动多个测试代理,因此可扩展性不是问题(只要能够访问云)。
哪个更好:
这是一个艰难的选择,因为随着你进入更复杂的脚本要求,如URL重写、相关性、为虚拟用户提供唯一数据以及模拟首次或返回用户(通过操纵HTTP头),这些工具都需要较陡峭的学习曲线。
尽管如此,我会先从Jmeter开始,因为这个工具有很多追随者,并且有很多关于使用这个工具的示例和教程。如果你遇到一个“路障”,即你无法“轻松”地使用Jmeter,那么再看看Grinder。好消息是,这两个工具具有相同的Java要求,可以进行“混搭”解决方案。
新增内容 - 运行多个Selenium WebDriver实例的无头浏览器。
这是一种相对较新的方法,因为它依赖于现在可以从云中提供的资源。采用这种方法时,将Selenium(WebDriver)脚本在无头浏览器中运行(即WebDriver = New HtmlUnitDriver())驱动程序中的多线程。
根据经验,可以从Amazon M1小型实例执行约25个“无头浏览器”的实例。
这意味着所有关联、URL重写问题都会消失,因为您可以将功能测试脚本重新定位为性能测试脚本。
与HTTP驱动程序(如Grinder或Jmeter)相比,可扩展性受到影响。尽管如此,如果您想要驱动500个虚拟用户,则需要更多的VM来驱动负载,例如20个Amazon Small实例(每小时6美分),成本仅为每小时1.20美元,这样就可以得到非常接近真实用户体验的负载。