注:
本文参考:http://www.cnblogs.com/TankXiao/p/4045439.html
http://blog.csdn.net/lan_shu/article/details/55190127
http://blog.csdn.net/chwshuang/article/details/48830273
Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。
熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。
Jmeter 介绍
Jmeter 是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试).
而且用Jmeter 来测试 Restful API, 非常好用。
如何学好Jmeter
如果你用Jmeter去对Web进行功能测试,或者性能测试。 你必须熟练HTTP协议,才能学好Jmeter。 否则你很难理解Jmeter中得概念。
不熟悉HTTP协议的话, 可以参考我的 【HTTP 协议教程】
Jmeter 下载和运行
官方网站:http://jmeter.apache.org/
下载地址http://jmeter.apache.org/ 点击下载,Windows环境下,下载后解压,在bin目录中,双击 jmeter.bat运行。
运行方式一:
解压后, 运行 “bin/jmeter.bat”
运行方式二:
然后配置环境变量:
变量名JMETER_HOME,变量值D:javaapache-jmeter-3.1 在变量名CLASSPATH新增
%JMETER_HOME%libextApacheJMeter_core.jar;
%JMETER_HOME%libjorphan.jar;
%JMETER_HOME%liblogkit-2.0.jar;
在Path新增%JMETER_HOME%/bin
配置好后,在cmd输入jmeter.bat或者在安装目录bin里面直接点击也是可以的;
实际测试的例子
启动成功后的界面
如果是英文版请点击Options>Choose Language>Chinese(Simplified),切换成简体中文
接下来,我们首先模拟100用户访问某个网站或者功能
1、新建线程组,右键点击测试计划,添加>Threads(Users)>线程组
设置线程数100,Ramp-Up period(in seconds):10,循环次数:1
Ramp-Up period指的是每个线程间隔多长时间,如果设置为0,就是并发;
2、新建HTTP请求,右键点击线程组>添加>Sampler>HTTP请求
设置访问的地址,参数等
3、新建概要报告(请求数,响应时间等),右键点击HTTP请求>添加>监听器>Summary Report
4、新建察看结果数,右键点击HTTP请求>添加>监听器>察看结果数
5、点击开始进行压力测试
期间会提示你保存结果文件,找个地方存起来就ok。
测试结果
6、有时候我们需要进行登录后的操作,那么我们需要对Cookie进行传递设置
新建HTTP信息头管理器,右键点击HTTP请求>添加>配置原件>HTTP信息头管理器
以上基本能满足日常开发测试的需求了,如果测试并发,请把线程组的Ramp-Up period设置为0即可
测试脚本编写
测试web项目需要编写测试脚本,就是告诉jmeter你的网站地址,登录参数,浏览网页地址,请求按钮的内容、请求次数、循环次数等等。目前的脚本编写有两种方式,一种是手动编写,一个字母一个字母的敲,另外一种是利用工具录制生成,用工具打开网站,然后在网站上操作,工具会记录所有与服务器的交互,自动生成脚本。
手动编写:
第一步是创建【线程组】, 然后在线程组基础上创建【循环控制器】、【聚合报告】,然后在【循环控制器】中创建【HTTP请求】,在【HTTP请求】中输入要测试的网站地址,点击工具栏的开始测试按钮,测试完成后到【聚合报告】中查看结果。
自动录制:
测试计划
测试计划是将测试目标进行细化的方案,是明确测试过程和测试用例的内容。例如我们要测试网站数据的访问速度,那么首先要模拟一个用户登录,然后循环测试数据访问,然后通过报表来查看统计结果。那么第一步就是通过打开录制的测试脚本,然后在【线程组】中添加监听器,这里的监听器就是统计报表。
我这里使用的测试计划是提前用bodboy这个工具录制好的。
测试报告
Web项目测试报告中主要三种比较常见的报表,【聚合报告】【查看结果树】【用表格查看结果】
聚合报告:
能显示测试次数、平均请求耗时、请求耗时百分百、最小、最大请求耗时、错误率、吞吐量、数据量等参数。
查看结果树:
能查看每个请求的取样器结果、请求、详细返回结果
用表格查看结果
通过请求顺序查看请求地址,耗时、状态、数据量、延迟、连接耗时等信息。