继续这个系列的学习,这一节重点介绍目前流行的性能测试工具以及如何选择适合项目的工具。在此之前,我已经对性能测试工具的原理与架构做了分析。
http://www.cnblogs.com/fnng/archive/2012/07/31/2617546.html
性能测试工具的选择与评估
在性能工具原理与架构一章中,我们了解到性能测试工具的原理通常是:通过录制、回放脚本,模拟多用户同时访问被测试系统,模拟产生负载压力,监控并记录各种性能指标,生成性能分析结果和报告,从而完性能测试的基本任务。
对需要进行性能测试的组织来说,决定使用哪种性能测试工具也不是一个简单的问题。我们有需要对性能需求进行分析,购买成本,人员学习使用成本进行综合考虑,从而确定最适合的本次性能测试的工具。
注:这里所提到的性能测试工具为狭义上的性能测试工具,特指包含脚本生成、负载生成与测试数据搜集的性能测试工具,从广义上来讲,在性能测试过程中所用到一切工具,都可以称为性能测试工具,其中包括,软件协议分析工具,测试数据生成工具,测试监控工具等都属于性能测试工具范畴。
我简单的软件性能测试工具分为三类,商业收费工具、开源免费工具、自主开发工具。下面是这三类工具的比较:
通过上面的比较分析,很难判别对某类工具的取舍,各自有其明显的优势,当然也有明显的缺点,如何更好选择工具,这里就要结合实际性能的需求了。
需要考虑以下几个方面:
性能需求:
首先要考虑的是否满足性能需求,例如系统的协议不支持,无法创建脚本,系统的模拟用户数达不到,或都某此特殊功能无法测试,如流媒体性能测试等。一些有性能工具是无法满足这些需求的,那当然要首先排除。
购买成本:
对于商业工具的购买成本也是我们需要考虑的问题,其实,这个问题也是老板需要考虑的问题,对性能测试成本的整体预算等。当然了,在满足性能需求的前提下,当然一切从简。如果只需要某商业软件的部分功能,也可以只购买部分功能。有的是根据支持协议的多少、并发用户上限来区分,如loadrunner 。
这里要多扯一点,loadrunner应该是性能测试领域的巨无霸,它的年服务费多百万,这不是一般的小公司能承受的,可能许多网友用破解习惯了不以为然。而且loadrunner是可以定制的,一般商业软件都是可以定制的,也就是说,你有特定的需求,只要你愿意花钱,提供商都可以帮你定制开发。这样算下来成本会很高。
那么开源软件呢? 开源的性能测试工具其实非常的多,因为它们都分别适合在不同的需求场景下,所以,它们的体积相比商业软件会小很大,当然功能也相对简陋。但是他们在某些情况下可以完全满足某些性能需求,或者可以通过几款开源工具配合满足,或者通过对开源工具进行扩展进行满足。对开源工具进行扩展,对测试人员的要求较高。需要测试人员对工具的原理及源代码有相当有研究。这里对测试人员自动能力的提升非常有帮助。
或者你的性能测试项目特殊,找遍市面上的所有性能工具无一款满意,商业定制成本过高。或者你想构建自己有工具体系。处于公司需求的特殊性与长期性考虑,可以自主开发一个性能测试工具来用。一次开发,永久收益(当然也需要维护与升级、扩展等),而且更贴近自已的需求。目前很多知明的大公司都有自己的性能测试工具,用于内部使用。
人员学习成本:
最后要提到的就是人员对工具的学习成本,其实,测试人员在选择性能测试工具时最先考虑的就是从自己会使用的工具入手,这样可以最低的控制学习成生,如果整一个工具,测试人员单学测试脚本就学了半年,老板早让你走人了。这也是对性能测试人员要求较高的地方。所以,对于性能测试人员,你最好熟悉一款流程的商业性能工具,一款开源免费性能具,还需要熟悉常见的性能脚本开发语言等,这是基本要求。
性能测试工具介绍
商业工具 :
QA Load:Compuware公司的QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。QALoad是QACenter性能版的一部分,它通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能。QACenter汇集完整的跨企业的自动测试产品,专为提高软件质量而设计。QACenter可以在整个开发生命周期、跨越多种平台、自动执行测试任务。
SilkPerformer:一种在工业领域最高级的企业级负载测试工具。它可以模仿成千上万的用户在多协议和多计算的环境下工作。不管企业电子商务应用的规模大小及其复杂性,通过SilkPerformer,均可以在部署前预测它的性能。可视的用户化界面、实时的性能监控和强大的管理报告可以帮助我们迅速的解决问题,例如加快产品投入市场的时间,通过最小的测试周期保证系统的可靠性,优化性能和确保应用的可扩充性。
LoadRunner:一种较高规模适应性的,自动负载测试工具,它能预测系统行为,优化性能。LoadRunner强调的是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的确认和查找问题。此外,LoadRunner 能支持最宽范的协议和技术,为您的特殊环境,量身定做地提供解决方案。
WebRunner:是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能,用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。
IBM Rational Performance Tester(简称 RPT)也是一款性能测试工具,适用于基于 Web 的应用程序的性能和可靠性测试。Rational Performance Tester 将易用性与深入分析功能相结合,从而简化了测试创建、负载生成和数据收集,以帮助确保应用程序具有支持数以千计并发用户并稳定运行的性能。
开源或免费工具:
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。
AutoBench 是一款基于httperf的Perl脚本。它会在一次测试中调用多次httperf来对web服务器进行测试,每次会按照给定的参数增加并发连接数,将 httperf的测试结果保存为CSV格式的文件,该文件可以被Excel直接读取,方便生成测试报告。借助于autobench自带的 bench2graph工具可以生成漂亮的测试结果对比图。
ApacheBench 工具程式(ab)是 Apache 网站伺服器软体的一个附带的工具软体,专门用来执行网站伺服器的运行效能,特别是针对 Apache 网站伺服器 的效能分析。这支程式原本是用来检测 Apache 网站伺服器(Web Server) 所能够提供的效能,特别是可以看出 Apache 网站伺服器能提供每秒能送出多少网页,当然的,也可以用在任何其他的网站伺服器 Apache ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。
curl-loader(也被称为“omes-NIK”和“davilka”)是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址。相反,其他curl-loader使用真正的C编写的客户端协议栈,即libcurl和TLS/ openssl的SSL的HTTP和FTP协议栈,支持登录和验证口味和模拟用户行为的工具。
Iago 是一个网站负载测试工具,Iago 针对一个给定的网站进行访问录制并合成流量数据。它不同于其他的负载生成工具,它试图保持恒定的请求率。例如如果你想按每分钟100K来请求您的服务,Iago 会试图保持这个速度进行测试。
Pylot 是一款开源的用以测试 Web Service性能和扩展性的工具,它运行HTTP负载测试,这对于制定容量计划、确定基准点、分析系统瓶颈以及系统调优都非常有用。在使用过程 中,Pylot会发起并发请求(HTTP Requests),检验服务器响应,以及带有相关指标的报表。它通过GUI或者Shell/Console来执行和监视对被测试网站的测试过程。
-----------------------------------------------
关于性能测试工具非常的多,如果你是个开源的粉丝可以去开源中国转转,那里有许多非常优秀的开源软件。
目前市场上的性能测试的工具种类很多,可以简单的划分为以下几种:负载压力测试工具、资源监控工具、故障定位工具以及调优工具。
1. 主流负载性能测试工具
负载性能测试工具的原理通常是通过录制、回放脚本、模拟多用户同时访问被测试系统,制造负载,产生并记录各种性能指标,生成分析结果,从而完成性能测试的任务。
主流的负载性能测试工具有:
QA Load:Compuware公司的QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。QALoad是QACenter性能版的一部分,它通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能。QACenter汇集完整的跨企业的自动测试产品,专为提高软件质量而设计。QACenter可以在整个开发生命周期、跨越多种平台、自动执行测试任务。
SilkPerformer:一种在工业领域最高级的企业级负载测试工具。它可以模仿成千上万的用户在多协议和多计算的环境下工作。不管企业电子商务应用的规模大小及其复杂性,通过SilkPerformer,均可以在部署前预测它的性能。可视的用户化界面、实时的性能监控和强大的管理报告可以帮助我们迅速的解决问题,例如加快产品投入市场的时间,通过最小的测试周期保证系统的可靠性,优化性能和确保应用的可扩充性。
LoadRunner:一种较高规模适应性的,自动负载测试工具,它能预测系统行为,优化性能。LoadRunner强调的是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的确认和查找问题。此外,LoadRunner 能支持最宽范的协议和技术,为您的特殊环境,量身定做地提供解决方案。
WebRunner:是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能,用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。
免费测试工具:
OpenSTA:开源项目,功能强大,自定义功能设置完备,但设置通过Script来完成。必须学习Script编写
WAS(Web Application Stress Tool):微软的工具,输出结果是纯文本的。
主流商用负载性能工具的比较图如下:
2.资源监控工具
资源监控作为系统压力测试过程中的一个重要环节,在相关的测试工具中基本上都有很多的集成。只是不同的工具之间,监控的中间件、数据库、主机平台的能力以及方式各有差异。而这些监控工具更大程度上都依赖于被监控平台自身的数据采集能力,目前的绝大多数的监控工具基本上是直接从中间件、数据库以及主机自身提供的性能数据采集接口获取性能指标。
首先,不同的应用平台有自身的监控命令以及控制界面。比如UNIX主机用户可以直接使用topas,vmstat,iostat了解系统自身的健康工作状况。另外,weblogic以及websphere平台都有自身的监控台,在上面可以了解到目前的JVM的大小、数据库连接池的使用情况以及目前连接的客户端数量以及请求状况等等。只是这些监控方式的使用对测试人员有一定的技术储备要求,需要自己熟练掌握以上监控方式的使用。
第三方的监控工具相应的对一些系统平台的监控进行了集成。比如Loadrunner对目前常用的一些业务系统平台环境都提供了相应的监控入口,从而可以在并发测试的同时,对业务系统所处的测试环境进行监控,更好的分析测试数据。
但Loadrunner工具其提供的监控方式还不是很直观,一些更直观的测试工具能在监控的同时提供相关的报警信息,类似的监控产品如QUEST公司提供的一整套监控解决方案包括了主机的监控、中间件平台的监控以及数据库平台的监控。QUEST系列监控产品提供了直观的图形化界面,能让测试者尽快进入监控的角色。
3. 故障定位工具以及调优工具
技术的不断发展以及测试需求的不断提升,故障定位工具应运而生,它能更精细的对负载压力测试中暴露的问题进行故障根源分析。在目前的主流测试工具厂商中,都相应地提供了对应的产品支持。尤其是目前.NET以及J2EE架构的流行,测试工具厂商纷纷在这些领域提供了相关的技术产品,比如Loadrunner模块中添加的诊断以及调优模块、Quest公司的PerformaSure、Compuware的Vantage套件以及CA公司收购的Wily的Introscope工具等等,都在更深层次上对业务流的调用进行追踪。这些工具在中间件平台上引入探针技术,能捕获后台业务内部的调用关系,发现问题所在,为应用系统的调优提供直接的参考指南。
在数据库产品的故障定位分析上,Oracle自身提供了强大的诊断模块,同时,Quest公司的数据库产品也在数据库设计、开发以及上线运行维护都提供了全套的产品支持。