分布式压测系列之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

4)jmeter4.0解压目录文件讲解

bin:核心可执行文件,包含配置
      jmeter.bat: windows启动文件:
      jmeter: mac或者linux启动文件:
      jmeter-server:mac或者Liunx分布式压测使用的启动文件
      jmeter-server.bat:mac或者Liunx分布式压测使用的启动文件
      jmeter.properties: 核心配置文件
      examples:压测脚本文件JMX和动态读取csv参数文件案例	result—template:可视化HTML
      template: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
			端口号:压测目标机器的端口号,比如 8080
	HTTP请求配置
			方法:http的请求方法,常用的有GET,POST,PUT,DELETE,PATCH等
			路径:压测的接口的URL,比如 /api/v1/users
			Content 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界面压测,分布式压测等等

视频教程参考http://edu.51cto.com/course/13251.html

原文地址:http://blog.51cto.com/13672582/2113225

时间: 2024-10-11 07:17:00

分布式压测系列之Jmeter4.0第一季的相关文章

第一周:jmeter分布式压测简介

在我们日常的测试工作中经常会需要对系统进行压测,一般来说,使用jmeter一台电脑支持的最大并发数 为200,那么当我们压测时需要更大的并发数时,我们就需要使用多台电脑来进行分布式压测. 第一步:首先要准备多台电脑,全部安装了jmeter,并且这些电脑都能互相ping通. 第二步:修改主机中jmeter的配置文件,在jmeter的bin目录下找到jmeter.properties文件,编辑该文件,找到 remote_hosts字段,在该字段后面添加其他电脑的IP地址,其中端口号默认为1099.

JMeter在linux上分布式压测步骤(二)

哈喽,我又来了~ 前提:三台linux虚拟机,一台作为master,另外两台作为slave. 一.server端 1.修改1099端口,client和server通信的端口,可以不修改,默认就是1099 2.启动jmeter-server (这里启动的时候可以看到ip后面的端口不是1099,这里不用管,1099是client和server的通信端口,和这个没有关系) 二.client端:配置master和slave 1.进入到jmeter的bin目录下,打开jmeter.properties c

Linux环境下进行分布式压测踩过的坑

背景:公司为了满足大并发的情况,需要测试组配合,就需要分布式压测,这里我把我踩过坑都记录下来: 环境:Linux + jmeter-v.5.1.1;使用3台2核4G的压力机: Q1: Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is: java.io.FileNotFoundException: rmi_keystore.jks A1:解决思

分布式压测实战步骤(不包含脚本的编写)

1.关注压测内存和CPU的使用 使用分布式压测 命令 举例:jmeter -n -t /Users/jack/Desktop/remote.jmx -r -l /Users/jack/Desktop/jtl/result.jtl -e -o /Users/jack/Desktop/result 2.压测前修改master节点 jmeter remote_hosts = XXX.XX.XX.XX:XXXX, XXX.XX.XX.XX:XXXX XX就是slave的IP地址和端口号 修改server

DAY2-jmeter分布式压测,charls操作基础,python基础

jmeter 分布式压测 jmeter可以用来做分布式压测,需要做的是: 1. 在目标压力机上安装jmeter,并且在jmeter根目录下的bin目录下启动Jmeter-server 2. 在本地的jmeter的bin目录下找到jmeter properties文件,修改 remote hosts为目标压力机的host 3. 启动->远程启动 jmeter在linux上运行 由于现在大部分的server都为linux系统,在这种情况下,如果想要做jmeter压测: 1. 将准备好的脚本放到目标机

接口测试学习——jmeter分布式压测

分布式压测我理解的就是有一台主控机和几台压力机.主控机通过远程控制压力机启动测试,来实现系统不同级别访问量情况下的性能验证.操作步骤如下: 1.启动jmeter自动化工具,界面显示如下图所示. 2.在"测试计划"单击鼠标右键,选择[添加]->[Threads(Users)]->[线程组],添加一个线程组. 3.添加线程以后,设置线程组. "线程组"可以类似于虚拟用户组,设置"线程数"为100,即我们要测试的是100个用户并发的情况:&

jmeter分布式压测(简单版)

需要使用jmeter模拟大并发的情况时,单台压测机不能满足需求,可进行分布式压测. 简单来说就是,多台机器同时安装jmeter,选择一台机器作为调度机,其他作为压力机.进行相应的配置后,就可以用调度机操控压力机发起请求. 如何配置(以Windows为例): 1.压力机: 1)执行当前压力机下jmeter安装包bin目录下的jmeter-server的批处理文件,此时该机器上启动一个java进程,并随机分配端口,监听来自调度机的请求. 但是这里我们需要配置成固定端口方式,否则调度机远程启动压力机时

分布式压测

普通压测:单台机可以对目标机器进行压力测试,产生的压力比较小,受限因素包括CPU,网络,IO等分布式压测:利用多台机器向目标机器产生压力,模拟几万用户并发访问(用下图简单示例什么是分布式压测) 如果用普通压测,单机配置如果不高,则可能最多发起10000个并发,达不到40000并发的目标,所以才会引入分布式压测技术. 一.什么是分布式测试 分布式测试是指通过局域网和Internet,把分布于不同地点.独立完成特定功能的测试计算机连接起来,以达到测试资源共享.分散操作.集中管理.协同工作.负载均衡.

WebSocket-bench分布式压测部署

1.首先要把用户自己编写业务压测逻辑generator.js脚本分别放到各压测机上 2.打通各压测机的ssh登录秘钥 这里我请教同事得到一个比较快捷方便的配置方法---- 采用centos系统自带的秘钥-------->敲出ssh字符,然后双按tab键, 就会出现我们想要的一些数据.... 如图: 然后执行ssh-copy-id   [email protected]地址 会出现一些选项,我们选择yes,及root账号输入密码就可以, 成功后,我们验证一下,我们是否配合秘钥成功  -------