前言
JMeter当初是为性能测试而生,与loadrunner形成竞争之势,相对于loadrunner,JMeter在性能测试方面有自己的优点:
- JMeter开源,而loadrunner收费。
- JMeter轻量级,安装包只有几十兆,安装简便。loadrunner安装包则有数个G,安装繁琐。
- JMeter有丰富的插件支持,扩展性非常强。
- 个人感觉JMeter相对于loadrunner操作简易许多。
后来,因为其便捷的关联功能、丰富的断言以及Beanshell的存在,使JMeter成为接口测试的利器。
1 JMeter安装
下载地址
各版本JMeter下载地址,本文及后续都使用的5.1.1版本,即下图中红圈中。
JDK安装与配置
JMeter的运行依赖于Java环境,因此在使用JMeter之前要先保证已正确安装JDK。下面以Windows系统为例,演示JDK1.8的安装过程。
- jdk安装:在官网下载jdk1.8版本压缩包,解压到指定文件夹即可。
- 环境变量配置
- 右键点击计算机图标–属性—高级系统配置—环境变量—系统变量
- 在系统变量栏单击“新建”,变量名:
JAVA_HOME
,变量值:C:Program FilesJavajdk1.8.0_80
(jdk解压目录),确定保存;
- 再次单击“新建”,变量名:
CLASSPATH
,变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar
- 选择“path”,点击“编辑”,在原来值的最前面添加下面的信息:
%JAVA_HOME%bin;%JAVA_HOME%jrebin
- 验证jdk安装是否成功,打开DOS窗口,输入java -version,出现以下字样:
java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
输入javac,出现列表,通过以上两个即可验证jdk已经正确安装。
JMeter安装
JMeter其实是免安装的,将下载的压缩包解压,即可使用。将jmeter.bat创建快捷方式到桌面,就可以双击图标运行JMeter了。
JMeter安装后,可能会会遇到一些异常,例如:
代码语言:javascript复制'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件。
Not able to find Java executable or version. Please check your Java installation
errorlevel=2
请按任意键继续…
或者是:
jmeter安装启动报错:Not able to find Java executable or version,Please check your Java installation
解决方案就是:环境变量PATH添加:%SystemRoot%/system32;%SystemRoot%;
2 JMeter接口测试
说起接口测试,首先要读懂接口文档,以最常见的http协议接口为例,接口文档大多是这样的:
HOST
(地址):http://api.test.com
path
(路径):/user/login
请求方式:POST
参数:
参数名称 | 参数类型 | 是否必填 | 字段说明 |
---|---|---|---|
username | String | 是 | 用户名 |
password | String | 是 | 密码 |
device | String | 否 | 登录设备:web、Android、IOS |
上面是一个登录接口文档,提供了请求地址、路径、请求方法和参数信息,那么怎么用JMeter按照这个接口文档调用该接口呢?请往下看。
TestPlan
(测试计划)是JMeter
所有组件的根节点,打开JMeter
即默认有一个TestPlan
,也只能有一个TestPlan
。在TestPlan
下添加线程组,线程组可以添加多个,线程组是相对独立的。
首先在线程组上右键–取样器-HTTP请求,添加了一个HTTP请求取样器,按照接口文档填入信息:
- 协议:分为http和https(加密的http),测试环境一般采用http,生产环境使用https。
- 服务器名称或IP:填入host对应的内容(api.test.com是域名,因为测试环境做了相关配置,否则使用IP)。
- 端口号:如果服务器地址填IP,这项就要填写相应的IP,具体也看测试环境配置。
- 路径:填入接口文档的path即可
下面用WeatherWS Web
接口实际测试一下:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getSupportCityString
接口描述是这样的:
代码语言:javascript复制POST /WebServices/WeatherWS.asmx/getSupportCityString HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: application/x-www-form-urlencoded
Content-Length: length
theRegionCode=string
添加【察看结果树】:
运行,察看结果:
一个简单的http接口调用就这样完成了,但接口测试还远不止这些,比如断言(响应断言和Beanshell断言)、关联等,这些内容可见后续文章。
3 问题解决
响应乱码问题
在JMeter bin目录下的jmeter.properties文件中,插入下图中语句并重启JMeter即可: