分布式压测系列之Jmeter4.0第一季

1)Jmeter4.0介绍

jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http、https、soap、ftp、database数据库、LDAP  轻量目录访问协议、TCP、SOMP(简单邮件协议)等,由于是纯java编写,可以在苹果、window或者Linux下运行,全功能的测试IDE,允许快速的建立测试计划(从浏览器或本地应用程序,官网地址:http://jmeter.apache.org),Jmeter是一个中高级开发或者测试人员都必须掌握的一个工具。

目前用的常用测试工具对比:

1、loadrunner:性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多
2、apache ab(单接口压测最方便):模拟多线程并发请求,ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载, 简单DDOS攻击等
3、webbench:webbench首先fork出多个子进程,每个子进程都循环做web访问测试。子进程把访问的结果通过pipe告诉父进程,父进程做最终的统计结果

 

2)特点

  • 提供GUI图形界面和非GUI界面进行压测,在windows下面进行开发测试压测脚本,然后直接在linux上执行
  • 可以提供完整的动态HTML压测报告
  • 纯java编写,一次编写,四处压测
  • 多线程框架允许通过多个线程同时进行采样压测,并通过单独的线程组同时采样不同的功能
  • 提供高度可扩展的功能,自定义插件:
  • 提供函数可用于为测试提供动态输入或提供数据操作。
  • 通过Maven,Graddle和Jenkins的第三方开源库轻松持续集成

3)准备工作

需要安装java运行环境,建议安装JDK环境,虽然JRE也可以,但是压测https需要JDK里面的 keytool工具;
新版本Jmeter4.0,需要JDK8以上版本,JDK9或者JDK10都可以;并配置好JDK环境(这里就不讲配置JDK环境了)
下载对应的Jmeter4.0版本并解压(官网地址:http://jmeter.apache.org/)
windows系统: http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip
Mac或者Linux:http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.tgz

 
bin:核心可执行文件,包含配置jmeter.bat: windows启动文件:jmeter: mac或者linux启动文件:jmeter-server:mac或者Liunx分布式压测使用的启动文件jmeter-server.bat:mac或者Liunx分布式压测使用的启动文件jmeter.properties: 核心配置文件examples:压测脚本文件JMX和动态读取csv参数文件案例result—template:可视化HTMLtemplate:JMX的模板文件docs:Jmeter的API文档
extras:插件拓展的包
lib:核心的依赖包
ext:核心包
junit:单元测试包

5)Jmeter核心组件介绍

 

什么是测试计划(Test plan)?

    就是压测的一个流程,比如压测什么接口,并发多少用户,协议等等,在测试计划下面配置线程组,采样器,监听器等组件

什么是线程组(Thread Group)?

线程组就是模拟多少用户并发访问你的应用,这个组里面共有多少用户,创建方法如上图现在“添加->threads->线程组“参数说明:线程数:虚拟用户数。一个虚拟用户占用一个进程或线程			准备时长(Ramp-Up Period(in seconds)):全部线程启动的时长,比如100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程			循环次数:每个线程发送的次数,假如值为5,100个线程,则会发送500次请求,可以勾选永远循环

 

什么是采样器(Sampler)?

真正干活的组件,采样器里面配置你要压测的接口,协议,参数等
可以创建各种采样器,如Http请求,FTP请求,JDBC压测数据库请求,JMS等,对应的采样器有不同的配置
以http请求采样器为例名称:采样器名称,一般是接口名称,方便后续进行区分,比如“login接口”注释:采样器的描述,方便别人理解,类似压测接口描述web服务器配置协议:压测的协议,比如“http”或者"https"服务器名称或IP:压测目标机器的端口或者服务器IP地址,比如 www.xdclass.net端口号:压测目标机器的端口号,比如 8080HTTP请求配置方法:http的请求方法,常用的有GET,POST,PUT,DELETE,PATCH等路径:压测的接口的URL,比如 /api/v1/usersContent encoding:是否进行内容编码自动重定向:http有302状态码返回的时候,重定向,但不会产生记录,不可以做关联请求,比如比如第二个请求要用到第一个请求的数据,则选择自动重定向无法做关联跟随重定向:会产生记录,可以做关联,默认勾选这个Use multipart/from-data for HTTP POST :当发送POST请求时,使用Use multipart/from-data方法发送,默认不选中。parameters:参数配置Files Upload:文件上传配置



什么是结果树?

压测的结果查看,可以看到压测发送的url,http参数,返回结果,返回的整个响应,然后如果有断言或者调试,可以看到断言是否通过等等
添加路径: 线程组->添加->监听器->察看结果树
如果不添加结果数,则点击压测开始按钮,压测具体响应我们无法知道,所以需要添加结果数,
一来是方便调试压测脚本,看请求参数,路径是否正常
切换到结果数查看页面,点击压测按钮就可以进压测,边压测可以边看到请求的结果。

 

补充个小技巧,就是GUI图形界面语言版本中英文切换:

1、控制台修改menu -> options -> choose language 选择对应的语言版本就可以
2、配置文件修改	bin目录 -> jmeter.properties默认 #language=en改为 language=zh_CN 
OK,Jmeter4.0压力测试第一季入门先到这里,
下一站章 会再分享Jmeter高级知识,比如断言使用,动态读取CSV参数,压测Mysql,阿里云Linux环境非GUI界面压测,分布式压测等等

视频教程参考:

   https://www.xdclass.net/#/coursecatalogue?video_id=3

 

关注我们,分享前沿动态



转载于:https://www.cnblogs.com/xdclass/p/8709932.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

powershell 查看系统设备\device status

查看设备 $allDevice"C:\Data\soundDevAll.txt" (Get-WmiObject -Class Win32_SoundDevice).Name|Out-File $allDevice device status $deviceInfoGet-WmiObject Win32_PnPEntity| select Name, Status | where {$_.Name -like "$deviceName"} $set…

Fish Shell 使用笔记

安装Fish Shell brew install fish 安装Oh My Fish curl -L https://get.oh-my.fish | fish 安装Fisher curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish 配置 autojump clone autojump git clone https://github.com/wting/autojum…

Entity Framework Core 7中高效地进行批量数据插入

因为之前的版本中,EF Core无法实现高效地批量插入、修改、删除数据,所以我开发了Zack.EFCore.Batch这个开源项目,比较受大家的欢迎,获得了400多个star。从.NET 7开始,微软在Entity Framework Core 7内置了对高效地批量…

Hive学习之路 (一)Hive初识

Hive 简介 什么是Hive 1、Hive 由 Facebook 实现并开源 2、是基于 Hadoop 的一个数据仓库工具 3、可以将结构化的数据映射为一张数据库表 4、并提供 HQL(Hive SQL)查询功能 5、底层数据是存储在 HDFS 上 6、Hive的本质是将 SQL 语句转换为 MapReduce 任务运行 7、使不熟悉 MapR…

angularJs select绑定的model 取不到值

内容结构 一.原因分析 二. 解决办法 一.原因分析 1.由于原型继承的关系,修改父级对象中的someBareValue会同时修改子对象中的值,但反之则不行。2.ng-if 以及 ng-repeat 会创建一个子级作用域,如果在这俩个指令中添加了元素&a…

PS2019摄影后期处理(三)通透....

一、PS可选颜色 在对应颜色进行cmyk加减

(原創) 今天拿到學生證了 (日記)

<原文我在2006/09/07發表在藍色小舖>今天拿到學生證了&#xff0c;終於正式成為台大的學生。第一件事情就是去台大圖書館借了四本書回家看&#xff0c;一次可以借兩個月耶&#xff0c;真不錯。 感覺很複雜&#xff0c;下星期要離開華碩&#xff0c;得繳回識別證&#xff…

os 键盘快捷键截图_如何通过键盘快捷键更有效地使用OS X虚拟桌面

os 键盘快捷键截图() We like having multiple virtual desktops on OS X, especially when we can supercharge them by combining them with a few simple keyboard shortcuts. So, on that note, here are some practical ways to use OS X’s virtual desktops like you me…

旗正规则引擎内存表出错的原因及解决方法

经常我们有一些使用者问到这个问题&#xff0c;关于内存表出错的情况&#xff0c;其实问题不复杂&#xff0c;我这给大家简单的讲一下就明白了&#xff0c;如果还有什么不明白的&#xff0c;其实也都可以问厂家杭州旗正&#xff0c;随时都有人回应的。 1 内存表 1.1 汇总 1.1.1…

Shell脚本之sed的使用

1.sed命令&#xff1b;主要作用是查找&#xff1b;新增 删除 和修改替换。 user.txt daokr#cat user.txt ID Name Sex Age 1 zhang M 19 2 wang G 20 3 cheng M 10 4 huahua M 100 查找命令&#xff1a;-n 和 p&#xff08;prin…

.NET周报【11月第4期 2022-11-30】

国内文章.NET 7 的 AOT 到底能不能扛反编译&#xff1f;https://www.cnblogs.com/huangxincheng/p/16917197.html在 B 站&#xff0c;公众号上发了一篇 AOT 的文章后&#xff0c;没想到反响还是挺大的&#xff0c;都称赞这个东西能抗反编译&#xff0c;可以让破解难度极大提高&…

结合hello world探讨gcc编译程序的过程

本博客&#xff08;http://blog.csdn.net/livelylittlefish&#xff09;贴出作者&#xff08;三二一小鱼&#xff09;相关研究、学习内容所做的笔记&#xff0c;欢迎广大朋友指正&#xff01; 结合"hello world"探讨gcc编译程序的过程 1. gcc简介 gcc/g是GNU工程的C和…

Powershell 时间相关

1.时间相差秒数计算 $start Get-Date Get-HotFix $end Get-Date Write-Host -ForegroundColor Red (Total Runtime: ($end - $start).TotalSeconds)//若开始时间保存为字符串$startTime Get-Date -Format yyyyMMddTHH:mm:ss $startTime[datetime]::ParseExact("$sta…

java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数

如题是结论&#xff0c;如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他。下面是代码&#xff1a; package com.test;public class TestClass{// 成员变量赋值第一个执行private static int m11;private int m21;// 静态构造函数第二个执行static{System.out.pr…

Unity的未来,是固守Mono,还是拥抱CoreCLR?

TLDR;Unity坚定的拥抱.NET标准生态&#xff0c;正全速向CoreCLR迁移。Mono vs CoreCLR对于一个C#的初学者&#xff0c;首先要了解的便是.NET和C#的关系。所以这里不再赘述。对于一个Unity的初学者&#xff0c;在使用C#编码的过程中&#xff0c;一定会遇到一些C#新特性不能在项目…

hinton教授的本科生课程CSC321-机器学习中的神经网的笔记

最近一直在看仙守博友所记录的笔记 Hinton的CSC321课程&#xff08;完结&#xff0c;待文字润色&#xff09;&#xff1a; 1、lecture1-NN的简介 2、lecture2-NN结构的主要类型的概述和感知机 3、lecture3-线性神经元和算法 4、lecture4-神经网络在语言上的应用 5、lecture5-对…

ASP存储过程参数数据类型

ASP调用存储过程一般的方法&#xff1a; p.Append cmd.CreateParameter("参数名称",类型,方向,大小) 参许参数值的类型的意义如下&#xff1a; 名称值 整数值 功能 adDBTimeStamp 135 日期时间数据类型 adDecimal 14 十进制整数值 adDouble …

powershell 启动线程与关闭线程

启动线程 $ScreenCapture"C:\ResolutionTool\ScreenCapture.exe" Start-Process $ScreenCapture 关闭线程 Get-Process ScreenCapture| Stop-Process

HDU 5673 Robot 卡特兰数

题目链接&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid5673 题目描述&#xff1a; 一个人从原点开始向右走&#xff0c; 要求N秒后回到原点&#xff0c; 且过程中不能到负半轴&#xff0c; 人有两种操作&#xff0c; 走动或者停止&#xff0c; 问总共有多少种方案&…

删除本地账户无法登录电脑_如何从Windows的登录屏幕中删除本地用户帐户

删除本地账户无法登录电脑If you have multiple user accounts on your computer, you might find it annoying to have to click on the icon for your username each time you start up the computer. To remedy this problem, you can hide a user account with a registry …