赞
踩
JMeter是由著名开源软件巨头Apache组织开发的纯Java的压力测试工具,它即能测试动态服务(WebService),也能测试静态资源,包括Servlet服务、CGI脚本等,还能测试动态语言服务(PHP、Java、ASP.NET等)和数据库和FTP服务,测试结束之后能够根据测试的脚本配置和服务器配置情况,生成可视化的测试报告图表。本文以测试基于HTTP请求的WebService服务为例进行讲解。
JMeter的使用十分简单,下载之后,如果是Windows系统,运行bin目录中的jmeter.bat即可,如果是UNIX-like系统,运行jmeter.sh即可。
另外,JMeter还支持以命令行方式运行。一般的命令方法是这样的:
jmeter.sh -n -t test_plan.jmx -l output_log.jtl
如果以命令行方式运行,需要修改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的支持。
测试计划,也就是Test Plan,是整个测试任务管理的顶级单位,所有的对于测试任务的配置,都是放在测试计划中的。这就好像一个根目录一样,所有的文件和数据,都是保存到这个根目录之下的。
线程组,也就是Thread Group,是可以被独立调试、执行和调度的独立单元,一个测试计划中可以有多个线程组,每个线程组可以配置并发用户数、运行次数、并发加压强度、定时任务等参数。
取样器,也就是Sampler,是一个HTTP请求的所有逻辑关系承载,在这一个取样器中,可以配置请求目标服务器的主域名、请求路径、参数、请求头信息、客户端Cookie策略等。
监听器,也就是Listener,是对测试过程和测试数据的收集机制,最常用的是聚合报告(Aggregate Report)和逻辑控制器,也就是Logic Controller,在这里可以配置多个取样器的控制逻辑,比如我们通常都会有登录服务只访问一次,而数据服务或者查询服务要访问多次,此时可以
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。