jmeter快速入门
jmeter快速入门
一.Jmeter能做哪些测试:
免费的性能测试工具,较loadrunner简单好用。
1.性能测试及压力测试;
2.数据库测试;
3.java程序的测试;
4.http及ftp的测试;
5.webservices的测试;
6.接口测试;
等等
二.jmeter的安装及使用:
- jmeter是一款java的应用,只需要去官网下载就可以。下载地址:https://jmeter.apache.org/download_jmeter.cgi(建议下载jmeter4版本,因为chrome的安全证书协议支持证书)
- jdk环境: 进入计算机-系统属性-高级系统设置,
--新建系统变量JAVA_HOME;
变量名:JAVA_HOME;
变量值:D:\Program Files (x86)\Java\jdk1.8.0(计算机本地jdk的安装目录)
--新建系统变量CLASSPATH;
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(前面的点一定不能忘记)
--修改系统变量path的值(建议将此环境变量放在最前面)
变量名:path
在path的变量值前添加下面内容: %JAVA_HOME%\bin;
%JAVA_HOME%\jre\Bin;%JAVA_HOME%\Bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64
- jmeter的目录结构
- bin目录:jmeter的主目录,存放jmeter的主jar包,启动脚本,启动配置,运行日志等;
- jmeter.sh/jmeter.bat,通过编辑可修改jmeter启动时的参数等;
- jmeter.properties:jmeter的主配置文件,jmeter的超过80%需要配置的内容都在这个文件;
- docs:存放官方的api文档,主要用于二次开发;
- extras目录:存放ant和jmeter集成所需要的文件;
- lib目录:jmeter启动时的classpath,所有需要import的类,只存放jar包;
- lib/ext目录:存放jmeter的第三方组件和插件,主要集成jmeter和使用jmeterGUI框架的,可以在图形化界面看到的部分;
- printable_docs:开发者存放的jmeter的官方文档。
- jmeter脚本开发
- 第三方软件录制脚本
badboy:只支持bs架构,下载地址:http://www.badboy.com.au/download;
--file--export to jmeter的菜单导出jmeter的脚本;
--使用jmeter打开脚本即可。
--缺点:只支持BS架构,由于内置浏览器的内核问题(支持IE),会产生兼容性的问题。
blazeMeter:需要使用163邮箱注册,基于chrome浏览器的录制插件。
--缺点:需要访问国外的网站,存在风险。目前没啥问题
2.jmeter的http代理服务来录制:
通信协议是标准的,是由测试工具自己完成的。
新增测试计划--新增线程组--添加http cookies管理器--添加http代理服务,设置端口xxxx的时候先要检测本电脑端口是否被占用(netstat),设置internet 选项的局域网设置端口号为xxxx--录制的过程中最好逐步将名称修改为中文--录制完成停止服务即可。
--优点:灵活,支持cs及bs也可以app。
3.抓包手写(fiddler)
通过人用工具去抓包,使用与任何接口,性能的脚本生成。
--掌握通信协议,主要一http为主; (chrome自带的开发工具,切换至network,需要勾选preserver log--不要清理页面的重定向)
--bean shell就是java的脚本语言,不支持泛型;
三.Jmeter的常用组件:
- 测试计划:整个测试计划;
- 线程组:所有的任务都是基于线程组,开通过少个线程就代表了有多少个并发用户;
- 线程数:比如线程数10,时间是5秒,循环2次,也就是说,一秒会执行两个线程*2次循环,一秒并发4次请求,这个大白话说的够白了。。。。
- Ramp-Up Perriod:代表在多长时间内完成线程数的全部启动,比如说开了2个线程,Ramp-Up Perriod设置为3,代表了每个线程间的时间间隔为1.5s。
- 循环次数:每秒要执行的线程数
- Delay Thread creation until needed: 默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。
5.调度器设置:用于设置该线程组下脚本执行的开始时间、结束时间、持续时间及启动延迟时间。当需要半夜执行性能测试时会用到这个功能。
设置调度器配置,需要将前面的循环次数设置为永远(自己感觉,因为这样才不会因循环次数不够而终止压测)
6.取样器错误: 当线程执行取样器失败的时候,要执行的策略的选项:
- 继续:忽略错误,是继续执行
- Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。
- 停止线程:当前线程停止执行,不影响其他线程正常执行。
- 停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止
- 立即停止测试:整个测试会立即停止执行,当前正在执行的取样器如果可能会被中断。
那么这几个配置控制了,当遇到错误的时候,测试的执行策略,是否会继续执行。
- Sampler:所有的测试任务都是Sampler,其下的测试类型包括很多:http请求,jdbc请求,ftp请求,udp请求,如下图:
- 监控组件:
- 查看结果树:对于每个请求,都可以查看http请求和http相应;
- 聚合报告:总体的吞吐量,响应时间,线程总数等;
- 图形结果:可以图形显示吞吐量,响应时间等;
Samples:样本数,线程总数,比如,10个线程数设置为10,迭代10次,那么每运行一次测试,该值就增加10*10=100
Average:平均响应时间,单位ms
Median:中位数,50%响应时间小于此值,单位ms
90%line:90%响应时间小于此值,单位ms
Min:最短响应时间,单位ms
Max:最大响应时间,单位ms
Error:未命中数/比率
Throughput:吞吐量——每秒完成请求事务数【可以理解成tps或者qps,一般100用户压15min左右,其值会在800左右——很多地方并没有严格去计较,就像tps和qps概念是不一样的,可是很多时候可以混为一谈】,线程数/时间=ThoughtOut
Kb/sec:每秒接收数据量