2.2 如何选择性能测试工具
由于对工具本身的技术评估不够,很多性能测试项目在脚本编写阶段就陷入问题的泥潭。很多测试服务供应商都支持来自各种工具供应商的解决方案,他们通常根据特定的客户性能测试需求来选择合适的性能测试工具。
Web技术如日中天,几乎每个性能测试供应商都提供HTTP/S的支持。然而,在Web技术里面还有很多特别的设计,尤其是客户端。如果你在应用中使用了大量的JavaScript、JSON或者微软的Silverlight,你就得充分考虑所选工具的功能以及技术限制。下面是一些关于如何选择工具的建议。
协议支持
选择性能测试工具最重要的一点就是确保你所选的工具能够支持你的应用协议栈,也就是说你的应用客户端如何同服务端进行通信。比如,在绝大多数情况下,一个典型的浏览器会使用HTTP或者HTTPS作为它的通信协议。
授权模式
在工具满足应用协议栈需求的前提下,还要看工具的授权模式。大多数性能测试供应商通过下列模块进行收费。
允许执行的最大规模负载测试(用虚拟用户数来衡量)
这个计价方式通常会采用区间收费,比如以100个虚拟用户作为入门价,虚拟用户数越多,收费越贵。也有一些供应商会以一个较高的固定价格来提供无上限的虚拟用户数。有一些供应商会提供一种短期授权,允许用户临时提高工具允许的最大虚拟用户数,来获得更大的负载。
工具支持的额外协议种类
当用户购买工具的时候,也许只选择了HTTP协议。但是后来由于项目需要,需要测试其他协议,比如Citrix,这样就需要支付额外的协议费用。新购买的额外协议是否适用已经购买的虚拟用户数,不同供应商会有不同的做法。
额外的集成和监控插件
工具供应商通常会有一些可选插件,用户可以在购买基础软件授权后按需购买可选插件。插件通常包括一些特定技术栈的监控工具,比如Oracle、MS SQL Server和IIS等;同时测试工具还可以和应用性能管理工具(Application Performance Monitor,APM)或者持续集成(Continuous Integration,CI)工具进行集成。这些集成通常会收取一定费用。当考虑购买这些插件时,你需要清楚这些功能通常需要在目标服务器上安装相应的代理软件,并且允许它们访问网络;你必须确保这些需求在被测环境(System Under Test,SUT)是可接受的。
在确定采购工具的候选名单时,确保你对各种工具的授权模式是非常清楚的。
脚本能力
很多性能测试工具提供商声称他们工具产生的脚本基本或者完全不需要手工编辑。对于一些简单的页面浏览,或许可以做到完全不需要手工编辑脚本。但事实是你总会遇到需要手工编辑脚本的场景(或许是插入一些JavaScript或者一些代码模块来处理复杂的客户端逻辑)。
你也许会发现你不得不对录制的测试用例进行手工编辑以让它能够正确回放。一个工具可能需要你在每个脚本上耗费几个小时的时间来让它正确运行,而另一个工具基本可以自动化你刚才的操作,因此在选择工具的时候你就必须充分考虑这部分额外工作对你的性能测试项目和测试团队带来的影响。
测试团队的技术能力也是一个需要考量的因素。如果队员有着很强的开发背景,那么让他们在测试脚本中进行一些手工编码应该不成问题。但如果你的队员不熟悉编码,尽管前期投入比较大,你还是更应该考虑一款提供具有向导功能的性能测试工具来帮助测试人员更容易地创建脚本。
解决方案还是压测工具
有些供应商只提供性能测试工具,有些供应商提供整套的性能测试解决方案。解决方案通常要比单纯的性能测试工具贵,但是它可以提供更完善的分析。除了性能测试,解决方案供应商通常提供:自动化需求管理、自动化数据构造和管理、性能测试前的应用性能调优、响应时间预测和容量评估、细到类和方法级别的APM应用性能分析、应用发布后的终端用户体验(EUE,End User Experience)监控以及测试结果/测试资产的可视化的数据看板。
自研还是外包
如果你的资源有限或者项目周期非常紧张,那还是考虑将性能测试项目外包给一个供应商会更加合适。一些工具供应商会提供一整套服务,从带有实施支持的工具采购到全方位的性能测试服务。这些公司在测试领域非常专业,能够使用合适的性能工具集来提供专业的性能测试服务。使用外包模式的优势在于用户不用为自己的应用专门购买一个性能测试工具,节省了时间和资源成本。但如果用户的场景需要进行多次性能测试,使用外包模式来完成性能测试会比自己购买或者研发性能测试工具贵得多。
其他可选项
如果你的应用是基于Web的,而且它也是面向消费者的,你也许有一个更好的选择——软件即服务(Software as a Service,SaaS)的性能测试服务。现在有很多供应商通过Web提供性能测试服务,他们帮你实现整个测试流程:编写关键测试用例,然后通过分布在各地的施压引擎来对你的应用施加压力。采用这种方式,用户不需要自己提供足够数量的施压机器,性能测试服务供应商的施压节点通常部署在主干网络,能够真实地模拟大量终端用户。对于低频的大规模性能测试,SaaS化的解决方案非常有吸引力,而且性能测试服务供应商通常还提供终端用户体验监控。
采用SaaS化性能测试服务的一个不足之处在于你需要为每次测试付钱,对被测服务器和网络的监控也需要用户自己来负责。当测试过程出现问题,用户需要通过重复测试来排查时,整体开销就相当可观了。
总而言之,SaaS化的性能测试服务还是非常值得调研的。附录C列举了一些提供这类服务的供应商。