JMeter性能测试实现与分析分享

在这里插入图片描述
JMeter是由著名开源软件巨头Apache组织开发的纯Java的压力测试工具,它即能测试动态服务(WebService),也能测试静态资源,包括Servlet服务、CGI脚本等,还能测试动态语言服务(PHP、Java、ASP.NET等)和数据库和FTP服务,测试结束之后能够根据测试的脚本配置和服务器配置情况,生成可视化的测试报告图表。本文以测试基于HTTP请求的WebService服务为例进行讲解。

1. 环境与配置

下载安装

JMeter的使用十分简单,下载之后,如果是Windows系统,运行bin目录中的jmeter.bat即可,如果是UNIX-like系统,运行jmeter.sh即可。

另外,JMeter还支持以命令行方式运行。一般的命令方法是这样的:

jmeter.sh -n -t test_plan.jmx -l output_log.jtl

  • -n 通知JMeter以非GUI方式运行
  • -t 指定将要运行的测试计划,测试计划本质上一个XML文件
  • -l 指定测试结果集输出文件,这个文件本质上是一个CSV文件

如果以命令行方式运行,需要修改bin目录中的jmeter.properties文件中的

jmeterengine.force.system.exit这个选项,原因是以命令行方式运行时是无法对GUI窗口执行关闭操作的,这会导致UI线程永远都不会退出,这种线程死锁的情况会被JMeter认为是异常而报错。

JMeter运行时会创建日志,对于未开启UAC的Windows用户,操作没有任何影响,日志文件是保存在bin目录中的,也就是说是和jmeter.bat文件保存在一起的,可是对已经开启了UAC的用户来说,如果选择以管理员权限运行jmeter.bat,并且启动了凭证验证机制,那么日志文件将不会与jmeter.bat保存在一起,因为Windows下的bat文件是被cmd.exe(命令提示符,Windows的命令行Shell程序)所解析和执行的,而cmd.exe这个程序是在C:\Windows\System32这个目录下的(我们假定你的系统安装在C盘),所以启动程序的进程上下文环境发生了变化,所以日志文件也会保存在C:\Windows\System32这个目录中,更严重的,在某些情况下会因为CLASSPATH配置与JMeter运行环境出现不一致而导致找不到相应的Jar包,出现java.lang.ClassNotFoundException。事实上这个问题是可以被处理的,所以,可以认为这是jmeter.bat程序的一个BUG。

关于什么是UAC,官方有详细介绍,请点击这里查看,点击这里还可以看到一个更简单的介绍和说明。

环境要求

JMeter 3.0于今年5月中旬发布,与之前的版本不同,这个版本明确要求JDK 1.7以上版本的支持,推荐使用JDK1.8版本,并且这个版本的JMeter中使用的Apache HttpClient库的版本也已经更新到了4.5.2。

如果用户使用JMeter 2.10或者更早的版本,那么JMeter中集成的是HttpClient库的3.1甚至更低的版本,此时如果被测试的Java请求是使用HttpClient库的4.5及以上版本编译的,那么运行时会出现莫名其妙的网络错误,这是因为HttpClient库的版本不兼容造成的,解决方法是在自己引用的Java请求中使用HttpClient3.1版本,和JMeter保持一致。然而推荐的方式是改用JMeter3.0以上版本,因为官方已经明确声明自JMeter3.0起,HttpClient3.1的版本兼容性支持将被废弃。

JMeter3.0以上版本提供了许多新功能,修复了性能上的几个问题,而且HttpClient4.5以上版本也改进了一些功能,修复了退出时持久连接未关闭的BUG,改进了对HTTPS的支持。

2. 执行测试

几个概念

测试计划,也就是Test Plan,是整个测试任务管理的顶级单位,所有的对于测试任务的配置,都是放在测试计划中的。这就好像一个根目录一样,所有的文件和数据,都是保存到这个根目录之下的。

线程组,也就是Thread Group,是可以被独立调试、执行和调度的独立单元,一个测试计划中可以有多个线程组,每个线程组可以配置并发用户数、运行次数、并发加压强度、定时任务等参数。

取样器,也就是Sampler,是一个HTTP请求的所有逻辑关系承载,在这一个取样器中,可以配置请求目标服务器的主域名、请求路径、参数、请求头信息、客户端Cookie策略等。

监听器,也就是Listener,是对测试过程和测试数据的收集机制,最常用的是聚合报告(Aggregate Report)和逻辑控制器,也就是Logic Controller,在这里可以配置多个取样器的控制逻辑,比如我们通常都会有登录服务只访问一次,而数据服务或者查询服务要访问多次,此时可以

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值