软件性能测试是指通过模拟你测试来验证软件是否满足既定的性能指标要求,同时发现系统中存在的性能瓶颈进行优化。考虑到软件性能测试的特殊性,采用人工模拟大规模的操作不现实,也会比较困难,所以一般会借助专业工具,今天,我们就来一起看下业界常用的两款性能测试工具LoadRunner和JMeter对比。
一、脚本开发
脚本录制
LoadRunner:浏览器录制方式是其原生方式,常用的是代理录制方式,代理录制时通过启动代理服务器监听客户端于服务器间的请求信息与数据,生成脚本
Jmeter:支持使用badboy工具录制并导出.jmx文件,但是badboy工具不是买南非工具不可以作为商业使用,且对软件兼容性要求比较高,不推荐使用,一般也是经常使用代理方式录制脚本
关联
LoadRunner:关联方式是以左右边界值来获取动态数据,支持事前和事后两种方
事前关联:生成脚本后,可以在Tree模式下,对接口响应中的动态数据“创建关联”定义关联参数,并自动替换脚本中该动态数据为关联参数
Jmeter:关联方式主要是事后关联,可通过Json提取器、正则表达提取器或边界提取器等后置处理器,按照规则提取需要关联的动态值。相比于LoadRunner可以自动替换脚本中的动态值,Jmeter需要以手工编辑.jmx文件方式,来进行动态数据替换
参数化
参数化是指录制脚本中的常量进行参数化处理,包括参数名和参数取值
LoadRunner:通过参数列表创建参数,对 常量做批量的参数化设置,并在脚本中替换参数
Jmeter:通过在线程组中添加配置原件“CSV数据文件设置”,导入参数化的数据,并定义参数名,在替换脚本中的参数
检查点
通常判断脚本是否执行成功是根据服务器返回的HTTP状态为200 OK,那么LR和Jmeter就会人为脚本正在正确运行。
集合点
集合点是用于同步用户操作,实现在同一时刻执行同一事务或请求的绝对并发机制
LoadRunner:在需要并发的事务或请求前,添加Rendezvous函数,在场景执行时设置具体并发的虚拟用户数和等待时间
Jmeter:在需要并发的HTTP请求中,添加定时器-同步计时器,设置模拟用户组数量和超时时间
二、场景设计
在性能测试中,场景时用来模拟大量用户操作的技术手段,性能脚本是场景设置的数据来源,通过配置和执行场景向服务器产生高负载,场景的设计和执行是整个性能测试活动的核心,只有合理的设计测试场景才能获得有价值的测试数据,为接下来的确认性能瓶颈、系统调优打下基础。
场景设置
LoadRunner:利用专用的软件应用Controller帮助我们设计场景、运行场景和监控收集数据。支持手动场景设计和面向目标的场景设计两种方式。
手动场景设计:自定义模式的场景设计,可手动灵活设置各项指标
面向目标场景设计:预先设定一个测试目标,如虚拟用户数量、事务响应时间等,根据这个目标自动构建测试场景。相对于面向目标场景,手工场景在实际工作中应用更加广泛
Jmeter:场景设计依赖于线程组的配置,也支持手动场景设计和面向目标的场景设计两种方式
手动场景设计:可以通过预设的普通线程组以及插件扩展的线程组可基本实现手动场景设计
面向目标场景设计:通过jmeter插件管理,装载相应的插件进行扩展支持
常用插件如jpgc-Standard Set插件,可以对线程组进行扩展
阶梯式场景:步进线程组
面向目标场景:并发线程组
并发用户数:到达线程组
总的来说,loadrunner的场景设计工具更加专业,通过Controller场景设置就可以配置不同的性能测试需求场景,而Jmeter则需要通过安装插件实现
2.负载设计
LoadRunner:在控制机上Controller的负载生成器功能中添加负载机的IP,在压力机上安装并启动LoadRunner Agent,在场景设计时可以设置 场景在哪一个压力机上执行,也可以设置压力机上运行的用户数
Jmeter:通过修改控制机上的jmeter.properties配置文件实现,在remote_hosts中增加负载机的ip
相对于loadrunner可以分配负载用户量,Jmeter的分布式负载无法分配线程数,不如前者使用灵活,设置上loadrunner也更加方便
三、测试报表
LoadRunner:结果分析器十分强大,通过Analysis展示分析概要和各项指标的详细结果,如吞吐量、事务响应时间等,都可以在各页签下通过清晰的图表展示出来
Jmeter:最常用的结果分析报表是预设的聚合报告,包括事务响应时间、异常率和吞吐量等指标分析结果
如果想达到和LoadRunner一样丰富的图表效果仍然需要通过第三方插件扩展来实现。
综上从脚本开发、场景设计和测试报表三个方面,对LoadRunner和Jmeter两款性能测试工具做的对比和分析。相对来说LoadRunner更为专业,具备简洁的用户界面,操作也更容易上手。想获取更多信息可以随时与我们进行联系。
