概念
(百度百科 JMeter ) Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
环境搭建
- 基于java开发, 所以必须的JDK环境是要的, 在此基础上下载JMeter
-
下载完成后解压, 打开bin目录, 双击执行 jmeter.bat
界面大致介绍
这里是英文版的, 大家也可以对应找汉化的
- Test Plan (测试计划)
- Threads (Users)线程 用户
- 测试片段(Test Fragment)
- 取样器(Sampler)
- 逻辑控制器(Logic Controller)
- 配置元件(Config Element)
- ...
这里就略过简介了, 可以自行搜索相关介绍.
脚本录制
JMeter的脚本录制, 大致是两类: 一个是JMeter自身设置代理录制, 另一个是借助其他工具录.
web测试的脚本工具有 Badboy
这里要介绍的是通过Fiddler抓包录制, 适合App脚本录制.
关于Fiddler抓包的操作技巧, 这里就不介绍了. 主要讲怎么结合JMeter操作, Fiddler本身是不能导出JMeter格式的脚本, 所以要先对Fiddler动个手脚:
- 下载扩展插件 提取密码 wby5
-
打开本地Fiddler安装目录, windows10 默认是C:\Users\Administrator\AppData\Local\Programs\Fiddler, 打开里面的ImportExport, 粘贴进去
- 重启Fiddler
-
之后可以设置手机代理, Fiddler抓取App操作的网络请求后, 过滤出需要的请求, 点击 "File -> Export Sessions" 导出JMeter脚本
- 用JMeter打开刚才导出的文件即可操作.
操作技巧
-
js处理器
处理器分Pre/Post, 前置/后置处理器, 看意思能猜到是对请求的前/后做处理.
经常使用的场景就是处理请求里面的参数加工, 比如参数加密, 生成校验码...JMeter可以支持Java的jar和JavaScript的执行.
这里说下JS的执行, 我们可以添加前置处理器 JSR223 PreProcessor.
添加后选择脚本语言js, 然后在Script面板写上我们要执行的js方法(其他js的复杂操作大家可以去找下相关资料). 配合 Log Viewer 可以查看调试执行结果.
顺便提下js里面的JMeter变量"vars", vars的本质是Map, 可以使用put("xxx", abc), get("xxx"), 用来设置值和取值. 这在我们下面将要用到的管理器里面很有用.
-
请求头管理器
右击线程组添加请求头管理器 Header Manager.
这里的设置会对我们发起的请求自动加上这个值, 达到自定义请求头header设置的效果.
在管理器面板添加参数, value对应的是我们需要从js处理后的值, 用${xxx}取vars里面put进去的值.
-
请求默认设置
右击线程组添加请求默认设置 RequestDefaults.
这个面板管理的是所有http请求发起的默认设置. 这里要提下的是高级设置Advanced里面(Proxy Server)可以设置代理IP和端口, 可以代理到Fiddler去验证我们的脚本测试结果.
PS
JMeter安装目录bin文件夹下有JMeter的属性设置jmeter.properties
JMeter默认是ISO-8859-1, 如果使用过程中请求产生乱码, 可以在这里设置编码格式: 去掉注释#, 把值改为UTF-8.
类似的, 去掉language的注释, 改成zh_CN可以改默认语言为简体中文