一. 安装Jmeter
工欲善其事必先利其器,上来先安装Jmeter是必须的.
1. 安装Jmeter需要的环境
需先安装 JDK8以上版本,虽然JRE也可以,但是仍然建议安装JDK环境,因为压测https协议的时候需要用到JDK里的keytool工具。
2. 下载Jmeter安装软件
本系列文章是基于Jmeter4.0版本的,官方网站现在地址:http://jmeter.apache.org/download_jmeter.cgi
官网里同样也有参考文档地址:http://jmeter.apache.org/usermanual/get-started.html
Jmeter下载后解压就能用,其实它本身并不需要进行安装,打开文件方法见下面目录讲解。
二. Jmeter能干什么事?
1. 压测不同的协议
Jmeter可以用来对不同的协议进行测试,比如如下常见协议:
1) Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
2) SOAP / REST Webservices
3) FTP
4) Database via JDBC(数据库)
5) LDAP 轻量目录访问协议
6) Message-oriented middleware (MOM) via JMS(消息队列)
7) Mail - SMTP(S), POP3(S) and IMAP(S)
8) TCP等等
本系列文章主要基于web协议(HTTP,HTTPS)而写的,Http协议是应用最多最广泛的协议。
2. Jmeter的主要应用场景
1)功能测试(必备测试工具,可以设置断言等)
2)压力测试(单点压测,分布式压测),这也是Jmeter的强项,也是目前最主流的压测工具,在百度,阿里,腾讯都在广泛应用。
3. Jmeter的优点
1)纯java开发
2)上手容易,高性能且轻量级
3)提供测试数据分析
4)各种数据图形样式的报告展示
三. Jmeter的目录介绍
四. Jmeter中英文切换
貌似英语永远是大家心中的痛,总想要切换到中文环境下使用,本着快速学习的目的, 这里也写给出中英文切换的方法。但是仍然等你熟练后,仍然推荐用英文。
方法1 控制台修改
menu -> options -> choose language
这种修改方法是临时切换语言
方法2 配置文件修改
前面目录也介绍过了,正好练习一把,而且是永久修改。
进入bin目录,打开 jmeter.properties 配置文件,把默认的 #language=en 改为 language=zh_CN
五. 创建Jmeter测试计划,压测一个接口
1. 创建一个线程组
2. 设置线程属性
3. 新建HTTP请求
右键,按下图走
4. 配置请求参数
下图的请求接口临时替换成了百度天气预报的api,实际以公司项目为主,这里旨在演示,请阅读同学忽略,重重点看方法
接口示例(摘自百度):
http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ
这里也要注意第一个请求参数的知识点:请求参数为键值对时,设置方法如图中 红框 “参数”所示操作。
5.添加监听器
添加监听器,查看结果树后,我们执行的压测请求就会直观的体现在结果树下面。
6. 执行
点工具栏的绿色启动按钮,请求就会开始执行,在察看结果树下面,能看到有5次请求记录。
至此,Jmeter一个简单的创建请求,添加监听器,运行请求,察看结果流程就完成了。具体的细节内容会在接下来的章节中详细讲解。
六、接口请求返回中文乱码问题解决
乱码原因:
当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding设置的格式解析
默认ISO-8859-1,解析中文肯定出错。
解决方法:
方法一:用后置处理器(动态修改,简便一些)
1.指定请求节点上,右键->Post Processors->BeanShell PostProcessor
2.其脚本框中输入:prev.setDataEncoding("UTF-8");
3.保存
用后置处理器的方法,每次都要设置,而且只对当前的http sampler有效,如果想永远修改,可以用第二种方式,修改属性文件
方法二:修改属性文件
修改jmeter.properties文件中的sampleresult.default.encoding参数,改成sampleresult.default.encoding=utf-8后,
记住去掉#,不要还是注释状态。
所有的响应数据都会按照utf-8返回显示了。
有时候可能还会遇到修改后仍然是乱码的问题,那就与编码没关系了,可能是程序自身做了特殊处理,需要与开发好好聊聊了。