【JMeter】JMeter简介
文章目录
- 1. 目录介绍
- 1.1 backups(备份)
- 1.2 bin
- 1.3 docs
- 1.4 extras
- 1.5 lib
- 1.6 licenses
- 1.7 printable_docs
- 2. 主要概念
- 2.1 测试计划
- 2.2 Threads
- 2.3 测试片段
- 2.4 控制器
- 2.4.1 取样器(Sampler)
- 2.4.2 逻辑控制器(Logic Controller)
- 3. 先举个栗子
- 3.1 添加线程组
- 3.2 添加HTTP请求
- 3.3 添加查看结果树
- 3.4 参数化
- 3.5 添加断言
- 3.6 添加断言结果
- 3.7 添加聚合报告
1. 目录介绍
1.1 backups(备份)
顾名思义,该目录是个备份目录,是将自己的各个Jmx脚本进行备份,所谓备份便是每次保存都会将该脚本进行保存到该目录下,如果保存多次便会保存多个同样的文件,文件名进行默认递增更改。
1.2 bin
- examples(例子):该目录下存放Jmeter官方给的请求模板
- report-template(报告模板):该目录下存放Jmeter的报告模板(Jmeter是有自己的报告的)t
- templates(模板):该目录下存放Jmeter的各类配置模板,例如:JDBC、Beanshell、ThinkTime等
- Beanshell----:Beanshell请求、监听、断言、函数等
- Jmeter.bat:启动文件
- jmeter.properties:配置文件(属性在官方文档中有解释)
- jmeter-server.bat:用于分布式
- shutdown.cmd:硬停止
- stoptest.cmd:软停止
- xxx.sh:Linux下运行
- user.properties:用户配置i文件(同上)
1.3 docs
- api:前面谈到Jmeter是开源的,此处便是它的API文档。
- css:xxxx
- Image:部分图片资源
1.4 extras
存放Build等配置,用于第三方集成构建
1.5 lib
存放各类jar包,组件类函数类等
1.6 licenses
许可证等
1.7 printable_docs
用户手册
2. 主要概念
2.1 测试计划
描述一个性能测试,包含本次测试所有相关功能
其中各个配置的信息详见另一篇博文:https://blog.csdn.net/qq_34659777/article/details/99960544
2.2 Threads
- Setup thread group:
一种特殊类型的线程,可用于执行预测试操作。即执行测试前进行定期线程组的执行
- Teardown thread group:
一种特殊类型的线程,可用于执行测试后动作。即执行测试结束后执行定期的线程组
以上两个线程组,举个例子:loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块,与其对应
- Thread group:
通常添加使用的线程,一般一个线程组可看做一个虚拟用户组,其中每个线程为一个虚拟用户
2.3 测试片段
2.5版本之后新增的一个选项,是一种特殊的线程组,在测试树上与线程组一个层级,但是它不被执行,除非它是一个模块控制器或者被控制器所引用时才会被执行
2.4 控制器
Jmeter有2种控制器:取样器(sampler)和逻辑控制器(Logic Controller)
作用:用这些原件驱动处理一个测试
2.4.1 取样器(Sampler)
是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler
如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、JDBC Request Sampler 等
每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。
Java Request Sampler 和 Beanshell Request Sampler 是两种特殊的可定制的 Sampler (暂不讨论)
2.4.2 逻辑控制器(Logic Controller)
包含两类原件:
一类是控制Test Plan中Sampler节点发送请求的逻辑顺序控制器,常用的有:If Controller、Swith Controller、Loop Controller、Random Controller等
另一类是用来组织和控制Sampler节点的,如Transaction Controller、Throughput Controller等
3. 先举个栗子
3.1 添加线程组
线程组参数详解:
- 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
- Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
- 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
- Delay Thread creation until needed:直到需要时延迟线程的创建。
- 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。
现在先试一个简单的例子,后面再进行详细的配置。
3.2 添加HTTP请求
这里我用了聚合数据的新闻API:
接口文档如上,在JMeter中填写就是这个样子:
Http请求主要参数详解:
- Web服务器
协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP :HTTP请求发送的目标服务器名称或IP
端口号:目标服务器的端口号,默认值为80,非必填项
- Http请求
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
Content encoding :编码方式,默认为ISO-8859-1编码,也可配置为utf-8
- 下面的几个多选框
自动重定向:如果选中该项,发出的http请求得到响应是301/302,jmeter会重定向到新的界面
Use keep Alive:jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信(默认选中)
Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用
- Parameters
parameter是指函数定义中参数
- Body Data
实体数据,就是请求报文里面主体实体的内容,一般我们向服务器发送请求,携带的实体主体参数,可以写入这里
- Files Upload
指的是:从HTML文件获取所有有内含的资源:被选中时,发出HTTP请求并获得响应的HTML文件内容后还对该HTML 进行Parse 并获取HTML中包含的所有资源(图片、flash等):(默认不选中)
如果用户只希望获取特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,只有能匹配指定正则表达式的URL指向资源会被下载
3.3 添加查看结果树
3.4 参数化
在这里我们添加一个新的变量:
然后在之前的HTTP请求中调用,调用格式为${keji_type}:
启动就会在结果树中查看到相应的结果。
3.5 添加断言
因为我们刚刚查找的是科技类的文章,所以我们来断言,响应结果中是否有“科技”字段。
3.6 添加断言结果
3.7 添加聚合报告
存放性能测试报告,在每次测试之前需要点击小扫把按钮清除之前的调试结果。
聚合报告参数详解:
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
- #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
- Median:中位数,也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:错误率——错误请求数/请求总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。
这样,我们就完成了一个完整HTTP接口的JMeter性能测试脚本编写。
其他JMeter的使用教程在我的另一篇博客中做了整合,传送门:
https://blog.csdn.net/qq_34659777/article/details/85765309
最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。
【JMeter】JMeter简介相关推荐
- apache jmeter 使用简介
2019独角兽企业重金招聘Python工程师标准>>> 1.下载软件 http://jmeter.apache.org/download_jmeter.cgi 2.在测试计划上添加一 ...
- Jmeter - JMeter监听器 -上篇(详解教程)
目录 1.简介 2.预览监听器 3.常用监听器详解 3.1 察看结果树 3.2 汇总报告 3.3聚合报告 3.4后端监听器 3.5汇总图 3.6 断言结果 3.7比较断言可视化器 3.8 生成概要结果 ...
- Jmeter===Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍(转)
Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍 要求: 今天要测试上千条数据,且每条数据要求执行多次,(模拟多用户多次抽奖) 1.用户id有175个,且没有任何排序规 ...
- [Jmeter]Jmeter环境搭建
Jmeter环境搭建 1. 拷贝 \\szpc1450\apache-jmeter-2.7 整个目录到本机(我是放在D盘,以下路径说明以D盘为例) 2. 拷贝\\szpc1450\Tools\au ...
- Jmeter——Jmeter之命令行测试
一. 命令行参数 1.每次启动Jmeter都会出现下面的提示 不要使用GUI模式去负载测试,GUI模式仅仅使用为编写脚本并调试 使用非GUI模式可以节省负载机资源,测试结果更加准切 配置环境变量 ex ...
- jmeter——jmeter+ant生成优化的HTML接口自动化测试报告
jmeter+ant生成优化的HTML测试报告 一.最终实现效果展示 二.实现方式 1.环境搭建 2.实现原理 3.报告生成方式 三.实现步骤 1.jar包转移:实现ant调用jmeter脚本 2.j ...
- Jmeter——Jmeter限制网速进行测试
一.业务需要,有时限制网速会更加符合实际,测试出真实的响应时间情况 找到apache-jmeter-3.2/bin/jmeter.properties文件 找到参数,分别为限制http即https # ...
- JMeter简介及其安装
最近需要进行一组性能测试,用到了 JMeter 这个测试工具,简单记录下对它的了解以及安装过程. JMeter 简介 全名为 Apache JMeter JMeter 是一个软件,使负载测试或业绩为导 ...
- Jmeter工具的使用——功能测试
Jmeter工具的使用--功能测试 一.Jmeter的简介 二.用jmeter实现抓包 三.jmeter的功能测试 (1)以学员登录接口为例: (2)以新增用户为例: 一.Jmeter的简介 Jmet ...
- JMeter性能测试的基础知识和个人理解
JMeter性能测试的基础知识和个人理解 1. JMeter的简介 JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...
最新文章
- hihocoder 1127 : 二分图三·二分图最小点覆盖和最大独立集
- 解决报错:java.util.UnknownFormatConversionException: Conversion = ‘p‘
- Jenkins进阶系列之——07更改Jenkins的主目录
- 三星Galaxy S21 FE官网“偷跑”:延续高性价比策略
- php 中英文截取 php,PHP 中英文截取无乱码
- CentOS7安装Gnome GUI图形界面
- oops程序是什么意思_OOPS中的抽象是什么?
- Python 函数(类)的装饰器与闭包
- Javascript特效:左侧二维码的显示和隐藏
- 【代码笔记】iOS-账号,密码记住
- Asp.net MVC3 WebGrid查询绑定
- 【二分法】凸多边形外接圆的半径
- 工业相机的50个知识点
- cs与msf联动概述
- 四、HTML标签:图片标签
- 变形金刚11280超清迅雷下载
- 大宗商品交易平台:解决期货的最后“一公里”
- 数学家教你烤肉饼:按最佳时机翻面可节省近1/3烹饪时间,网友:想去汉堡王应聘厨子了...
- Centos7下安装FastDFS服务
- 武汉市申请国家现代农业产业科技创新中心发展奖励标准及申请要求
热门文章
- Indesign多媒体富交互插件【MagBuilder】与iOS app 【MagViewer】介绍
- docker安装nextcloud+onlyoffice+https
- 系统清道夫 android2.1,安卓系统清道夫国际版
- getTime()得到时间戳不一样
- 家用双wan口路由器推荐_路由器串口和以太口 家用双wan口路由器推荐
- 记录一次 在linux 搭建的mysql迁移到docker容器中
- leetcode-441 排列硬币
- 启用计算机的无线同屏,完美:将计算机转换为无线显示器,Windows 10的此功能确实强大...
- 跨站点请求伪造(CSRF)
- 某位算法工程师对自己工作的反思