当我们说起性能测试时,当前主流的测试软件无论如何都离不开LoadRunner与JMeter这两个。本周我就简单的对这两个做下对比与说明。
当然,如我在前面所述,对于程序员来说,JMeter是最合适的选择,而对于专业的测试人员,则需要更多的考虑与决策。
本周,继续聊写给程序员的JMeter教程,这是第三篇。本系列其它文章为:
- 写给程序员的JMeter教程(序):程序员需要掌握的能力
- 写给程序员的JMeter教程(一):理解性能测试的常用指标
简要对比
接下来简要说明下它们的一些差异。
商业 VS 开源
LoadRunner是一款强大的商业性质的性能测试软件,它费用高昴,使用LoadRunner需要付出较大的成本。当然,国内许多测试人员使用的是非正版的LoadRunner,可能并不觉得这是个大问题。
而与之相对应的就是,JMeter是完全开源免费的。使用JMeter几乎完全不用付出这方面的成本。
有限的平台支持 VS 支持绝大多数操作系统
LoadRunner Professional完全支持Windows,而在Linux操作系统上仅支持安装Load Generator。Load Generator是负载生成器,用来分担并发负载的。
而JMeter则是基于Java语言开发,用的是Swing来写的界面。由于Java对绝大多数操作系统的支持,这意味着JMeter几乎支持大部分操作系统。
重量级 VS 轻量级
如果用轻重来比较两位选手。那显然LoadRunner是个重量级选手。它不仅体积大,而且对系统资源的占用也非常高。LoadRunner的安装包是G为单位。
而JMeter则完全是个轻量级选手,它的体积相比而言小很多,也灵活很多。
复杂的学习曲线 VS 易于学习
LoadRunner非常专业,用一个词来形容,那就是Professional。学习与掌握LoadRunner并不是件容易的事,其概念复杂,功能操作并不易于学习,更不说其脚本编写对编程语言能力的要求,这些都使得它的学习曲线相对较高,特别是对于没有技术或编程背景的一些测试人员。
而JMeter仅少数情况下需要编写BeanShell脚本。大多数场景甚至不需要编写脚本就能完成一个完整的性能测试。基于GUI就能轻易的定义一个性能测试过程使得它的学习成本非常低,没有技术或编程背景的人员也能很快的学习与上手。
不支持二次开发 VS 灵活的扩展性
由于是商业软件,LoadRunner没有办法支持二次开发。
而做为开源的JMeter则完全不同,国内一些大型互联网公司有自己的JMeter版本或基于它开发了插件,它们都基于自身的技术特性做了一些二次开发的工作。
更专业 VS 更大众
如果我们只看上面这些要素,会有一种免费开源的JMeter还好于商业收费的LoadRunner的感觉,事实上显然不是。
LoadRunner是个专业的软件,它足够稳定,功能强大。而JMeter则更大众。
就好像Oralce和MySQL一样,MySQL开源免费且使用面广,但其在专业性上可能还是无法与Oralce相比,Oralce有它的用户与市场,是MySQL取代不了的。
这样的情况同样适合LoadRunner与JMeter。
JMeter的一些不足
JMeter UI不够专业
基于Java Swing做出来的Java版的桌面应用程序,与原生样式总有一种隔阂的感觉,不像是一个专业的软件。现在使用Swing来开发桌面程序的已经比较少见了。
当然 ,这只是个样式问题。
GUI模式对内存使用偏高
JMeter在GUI模式下,其对内存的使用较高,且并不稳定。
所幸,JMeter的GUI模式更多的只是编写测试脚本与过程,并不是实际用来进行性能测试的。
记住
JMeter GUI仅是用来做脚本编辑的,实际测试是使用的JMeter Cli
我见过很多人,包括测试团队的人,直接使用GUI模式做性能测试,这是非常不专业的做法。
不支持JavaScript与Ajax,难以测试一些复杂场景
JMeter更适合测试一些并不是非常复杂的场景,由于它不支持JavaScript与Ajax,因此对大量使用Ajax的UI层面的一些性能测试难以进行。
事实上,使用JMeter更多的是测试接口,数据连接等方面的性能。而不是针对UI。在许多公司,使用JMeter都主要是用来做接口性能测试。
虽然有类似BadBoy这样的插件支持UI录屏测试,但JMeter显然不善长UI方面的性能测试工作。
JMeter适合哪些用户?
以下这些公司,团队或人,比较适合考虑使用JMeter。
程序员
如我前面所述,程序员主要是用它来验证代码的正确性及对自己的架构或代码在性能上的表现。
中小公司及互联网企业
不愿意承担LoadRunner所带来的昂贵的成本,包括软件成本及人工成本。招聘懂LoadRunner的成本远高于招聘懂JMeter的人的成本。
而且JMeter更易于培训,有利于团队或公司低成本的建立性能测试团队。
事实上,国内中小公司及一些互联网大公司,也基本是使用JMeter为主。
比如阿里的性能测试 PTS就支持JMeter,这本身也是基于它们自己的使用后再纳入这个云测试平台中的。
没有技术背景的测试人员
一个测试人员,如果是技术出身,懂一些编程语言那当然是求之不得,但实际上这样的终究是少数。
对于大多数测试人员来说,学习JMeter是更合适的选择,它对技术与编程的要求非常低。
这非常适合当前大多数测试人员没有技术背景的现状,能极大的普及基本的性能测试工作。
我们的第一个JMeter性能测试
前面这几篇做了一些概念上的铺垫,下一周,我们就将正式进行JMeter的实操了。
下一篇,写给程序员的JMeter教程(三):第一个JMeter性能测试