jmeter 概念
JMeter就是一款使用JAVA开发的,开源的测试工具。主要用于Web应用的压力测试或功能测试,可以通过编写脚本模拟web操作,进行多线程高并发的HTTP、FTP等请求,从而反映出网站的性能,服务器的可靠性。
jmeter 原理
向服务器提交请求,并从服务器获取请求返回结果。即建立一个线程池,多线程运行取样器产生大量负载,自运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果
jmeter目录结构
/ bin目录:
/ examples:存放jmeter使用实例
ApacheJMeter.jar :Jmeter源码包
jmeter.sh:启动文件
jmeter.properties:jmeter配置文件
jmerter-server:启动负载生成器文件
jmeter.log:
/ docs目录:帮助文档
/ lib 目录:jar包,插件管理
/ extras 目录:提供对Ant的支持文件,也用于持续集成
/ printable_docs 目录:用户手册
jmeter常用控件
Jmeter体制结构和控件使用
常用控件
- 测试计划
含义:一个jmx文件只能有一个测试计划,测试计划中可以定义变量(多用于不常变化的数据,例如服务器ip,数据库ip等),引入jar包,编辑测试模式。 run thread groups consecutively:独立运行每个线程组 run teardown thread groups after shutdown of main threads:主线程结束后运行tear down线程组 functional test mode:函数测试模式(只有当你需要记录每个请求从服务器取得的数据到文件时才需要选择函数测试模式。选择这个选项很影响性能。) 可以将本地jar包导入 - 线程组
一个测试计划内可以存在多个线程组。每个线程组之间的变量相互独立。 Name:线程组名称 Comments:描述/备注 Action to be taken after a sampler error:取样器错误后执行以下操作 continue/start next thread group/stop thread/stop test/stop test now:继续/启动下个线程/停止线程/停止测试/立刻停止 thread properties:线程属性 number of threads(users):线程数量 ramp-up period(in seconds):线程启动间隔时间 loop count:循环次数 scheduler configuration:调度器配置 duration:持续时间 startup delay:启动延迟
setup thread group 测试初始化操作,即线程组开始之前执行的内容,用于初始化测试环境,测试数据准备等。 tear down线程组 测试执行后操作,即线程组执行完成之后执行的内容。可用于清理测试环境,清空测试数据等。
- 测试片段
Test Fragment 测试片段 与线程组同级别,但是默认不会执行。只有被模块控制器引用的时候才会执行。 - 取样器
Sampler 取样器(在线程组下add) 模拟用户操作,向服务器发出http请求、webservice或java请求等。 http请求(Http request)较为常用 例如:Get方法 post方法: debug sampler 调试取样器: 一般只需要改动name,把需要关注的变量填写在name里,多个变量用逗号隔开即可 - 前置处理器
取样器请求前执行的操作,可以是获取测试数据,修改参数等。 - 后置处理器
请求执行后的处理,常用的是正则表达式提取器和jason提取器 - 逻辑控制器
if控制器 根据指定表达式的值决定是否执行该节点下的子节点,默认使用JavaScript的语法进行判断。如果if控制器里的语句为真,则继续执行。为假,不执行。 Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式 Throughput Controller 吞吐量控制器 控制其下的子节点的执行次数与负载比例分配 Total Executions:设置运行次数 Percent Executions:设置运行比例(1~100之间) 常量吞吐量定时器 如果需要设定固定tps则需要采用常量吞吐量定时器 target tps设定为持续时间*期望tps exp:持续时间为60s期望tps为10 则target tps为600,以次类推计算 - 配置元件
CSV数据文件设置 多用于数据读取测试数据 HTTP信息头管理器 定义信息头,在其覆盖下的所有元件都会使用该信息头 - 定时器
类似思考时间,控制取样器的间隔时间。 固定定时器 固定定时器不计入单个取样器的响应时间,只计入事务控制器的时间。 - 断言
判断请求响应值是否正确的控件,常用的是响应断言。 - 监听
查看请求执行结果的控件,常用的是察看结果树和聚合报告 察看结果树 可查看请求响应的结果、请求内容和响应数据。 可自定义把数据写入 某个文件内,请求很多的时候,可以通过查找功能进行定位查看。 聚合报告 lable: sampler的名字 样本:每个sampler发出的请求数 平均值:平均响应时间,默认情况下是单个请求的平均响应时间,如果使用事务控制器,就是指单个事务平均响应时间。 中位数:50%用户的响应时间 90%百分位:90%用户的响应时间 95%百分位:95%用户的响应时间 99%百分位:99%用户的响应时间 最小值:最小响应时间 最大值:最大响应时间 注:以上单位为ms 异常%:错误请求所占百分比 吞吐量:默认表示每秒完成的请求数(TPS)
|