1.什么是Jmeter?

Jmeter是Apache组织使用JAVA语言开发的一款开源的性能测试工具。进入Jmeter官网下载即可。




jemter脚本解读_性能测试


2.为什么要学习Jmeter?

成本:jmeter是开源的,Loadrunner是商用的.

易用性:Jmeter是不如Loadrunner.

性能:Jmeter也是不如Loadrunner.

扩展性:Jmeter是开源,可以根据自身需要去做二次开发.

目前市面上,在性能测试领域,Jmeter所占的比重越来越大.

在接口自动化领域,很多大公司也选择Jmeter来完成相关的测试工作

优点:

简单快速、生成的脚本简洁(类似于LR中的HTML模式)。

缺点:

只能用于B/S架构的产品因为内置浏览的内核问题,可能会因为内核的兼容性问题导致无法录制。


jemter脚本解读_jemter脚本解读_02


  1. Jmeter一般应用于那些场景?

Jmeter一般用来做接口测试与性能测试,可以基于B/S架构软件开展接口测试与性能测试,当然Jmeter也可以用户APP端的接口测试,前提条件是手机端网络与PC端要一致,也可以使用Jmeter抓取移动端数据包,当然抓包工具有很多,一般常用的是Fiddler是一款专业的抓包工具。

  1. Jmeter的安装和使用

进入Jmeter官网下载解压即可。配置好Java环境变量:


jemter脚本解读_性能测试_03


5. Jmeter的目录结构详解:


jemter脚本解读_右键_04


bin目录:存放的是Jmeter的主jar包,启动脚本、配置文件等。

ApacheJmeter.jar:Jmeter这个java工程的主类,包含整个工程的main方法。

meter.batJmeter.sh:Jmeter的启动脚本,可以右键--编辑,通过记事本打开之后,修改相关的启动参数,最主要的是JVM参数--JVM内存大小:set HEAP=-Xms1024m -Xmx1024m

jmeter-server.bat:是用来实现联机负载(分布式负载)的组件,是需要在负载机上启动的,作用类似于LR中的Load generator。

jmeter.properties:是Jmeter的主配置文件,Jmeter中绝大多数需要配置的选项都是在该文件中完成。

注意:修改配置文件之后,一般都是需要重启应用才会有效的。

docs目录:存放的是Jmeter的官方的API文档。

extras目录:附加目录,存放的主要是Jmeter和ant集成所需要的文件。

·ant-jmeter-1.1.1.jar:ant和jmeter集成所需要的类

·build.xml:构建文件的模板。

jmeter-results-detail-report_21.xsl:报告模板


jemter脚本解读_jemter脚本解读_05


  1. lib目录:

该目录是Jmeter启动时的默认的classpath,这就意味着在测试过程中,所有需要import的类都需要放在lib目录下,否则就会找不到对应的类。

以后二次开发过程中,所有需要import的类,都需要打成jar包放在该目录下。

libext目录:该目录是用来存放Jmeter的组件和插件的。通常自己开发或者外部下载的插件都需要放在该目录下。

printable_docs目录:该目录存放的是jmeter的官方帮助文档。

  1. Jmeter的脚本开发:

通常来说,使用Jmeter来完成接口或者性能测试时,脚本的生成方式有三种:

通过第三方工具录制生成,例如:比较常用的录制工具包括:badboy、Blazemeter。

Badboy:本身是一款用于web应用的自动化测试工具,我们只是使用它的录制和导出功能。

注意事项:

录制完毕之后,不要直接保存,而是通过File--Export to Jmeter选项将脚本导出为Jmeter格式的脚本。

使用Jmeter打开脚本之后,所有的Step相关的组件都至少要执行一次下列操作:

右键组件--Change Controller--逻辑控制器,选择某一种逻辑控制器。建议在不确定的情况下,选择简单控制器。

Blazemeter:是一款可以和Chrome浏览器集成的插件,是可以用来录制和运行脚本的。下载和安装插件,需要注册帐号的。

  1. 通过Jmeter自带的http代理服务器录制生成

第一步:右键 测试计划--添加 Threads--线程组 组件。

第二步:右键 测试计划--添加 配置元件--http cookie管理器 组件。

第三步:右键 工作台--添加 非测试元件--http proxy server(http代理服务器) 组件。

以上三步没有先后之分。

第四步:配置并且启动http代理。

目标控制器:是用来指定生成的脚本的存放位置,建议选择第一步所创建的线程组组件。

过滤器(包含模式或者排除模式):都是通过正则表达式来实现。


jemter脚本解读_抓包_06


jemter脚本解读_jmeter录制脚本_07


  1. 注意事项:

1:代理服务器的设置选项一定要正确。

2:客户端一旦启用代理,则所有操作都有可能被录制,因此要尽可能的保证在录制过程中,没有其他的互联网操作。

3:过滤选项一定要慎重使用,可以不用,但是一旦使用,则必须保证正则表达式的正确性、准确性。

4:不要通过localhost和127.0.0.1这样的地址去访问被测服务器。

一般来说,实际工作环境不会遇到这样的问题,主要多见于自己搭建的练习环境。

5:录制完成之后,一定要记得还原相关选项(不然手机会没有网络)。

优点:

录制过程可控适用于任何类型的产品,只需要支持代理访问即可。

缺点:

1. 操作和设置比较繁琐

2. 对于https的支持不是很好,主要是因为生成的根证书是临时证书,像chrome浏览器都不支持。

3. 抓包手写:一般来说,该方式是适合于所有的接口和性能测试工具

4. 但是要使用这种方式,要求有三点:

5. 掌握协议:这是抓包手写的最主要的要求。

  1. 掌握一个对应的抓包工具:通过工具才能抓到想要模拟的数据请求包。
  2. 掌握接口和性能测试工具:要结合协议和所抓取的数据包,将之封装为对应可以运行的脚本或者代码。
  3. 录制和抓包手写本身不存在鄙视链,一切以效率优先。
  4. 录制脚本的本质:录制本身还是抓包和解包、生成脚本的过程。(类同于自动化测试过程)。