Apache Jmeter是针对Java的一款性能测试工具,利用该工具可以实现自动化的批量测试和结果聚合,适合做接口压测。今天就来捋一捋软件安装的一些小细节和使用。

一、安装

Jmeter基于JDK,安装之前确保Java环境变量配置无误。在官网下载最新版本解压后,配置环境变量 JMETER_HOME 为安装目录并将 %JMETER_HOME%\bin 添加到Path中。启动安装目录下/bin/jmeter.bat,稍作等待弹出GUI窗口表明安装成功。需要注意命令行窗口和图形界面关闭任意一个另一个都会关闭。

在命令行窗口中会有一段提示:

======================================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
======================================================================================================

这一段指的是仅建议用GUI界面进行脚本的创建和测试,如果要运行实际测试,使用命令行执行测试脚本,或编辑jmeter.bat,修改java堆大小相关的参数来满足测试需求。

默认的jmeter GUI使用英语,修改jmeter.properties中 language=zh-CN 可以默认以简体中文启动。

为了方便测试,右键点击jmeter.bat-->发送到桌面快捷方式-->右键快捷方式选择属性-->将目标设置为安装目录\bin\ApacheJMeter.jar,起始位置安装目录\bin,即可建立GUI快捷方式。

二、测试

这里我主要是对接口做压力测试,记录一下过程中遇到的坑和结果分析。

首先建立自己的测试计划。默认的测试计划颜色可能是灰色,此时为禁用状态,右键单击启用否则测试时报错  Error processing org.apache.jmeter.gui.action.Start 。启用后添加线程组,可以配置需要的线程数以及单个线程的循环执行次数,以及线程启动时间Ramp-Up时间。这个时间表示启动全部线程所用时间,为0时表示线程并发,否则线程将以T/N的时间间隔(T为改时间,N为总个数)启动。

接下来是添加具体的任务。这里我添加HTTP请求,填写请求协议、IP、端口号等信息,添加需要的参数值。为了模拟真实情况,请求的参数一般不完全相同,配置方法一般有三种。

  • 用户配置变量:右键HTTP请求——添加——配置元件——用户定义的变量,在参数调用处使用${变量名}调用参数。
  • 函数生成器:选项中的函数助手对话框(或Ctrl+Shift+F1)可以调用Jmeter提供的函数,常用函数之一是_Random,可以生成范围内随机整数。单纯需要随机变量可以添加——配置原件——随机变量,可以对输出格式和随机数种子进行设置。
  • 文件读取:添加——配置元件——CSV数据文件设置,可以将变量存储在CSV表格中,每个变量储存为一列,从文件中按行读取变量并且可以设置循环读取文件直至满足任务需求。

完成任务配置后,添加结果监听器。查看结果树可以对每个线程单词调用结果进行查看,包括请求内容和返回结果,适合进行测试计划的验证;对于压力测试等更多考虑统计性指标的测试,添加聚合报告来查看性能指标。

上图中Label表示请求名,#Samples表示请求次数(线程数*循环次数),Average为平均响应时间,Median、90%Line、95%Line、99%Line分别为对应比例的样本的最长响应时间,Min/Max为总体最小值/最大值,Error%为错误率,Throughput为吞吐量,这里表示为每秒完成的请求数量;Received KB/sec和Sent KB/sec分别表示接收量和发送量的每秒千字节表示。

本次测试的是业务在高并发场景下的运行性能,更侧重于承受上限和平均响应时长,因此没有用到断言。如果有必要,可以添加断言来判断是否获取了期望结果,具体用法等下次实际使用后再做总结。

性能测试工具——Jmeter使用小结(一)的更多相关文章

  1. 1 认识开源性能测试工具jmeter

    典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具jmeter. 1.jmeter是什么? A ...

  2. 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...

  3. 转 1 认识开源性能测试工具jmeter

    1 认识开源性能测试工具jmeter   典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具j ...

  4. 性能测试工具JMeter 基础(六)—— 测试元件: 线程组

    线程组的定义: 线程组是测试计划执行的入口,所有的逻辑控制器和取样器都必须在线程组下,其他的元件根据位置的不同作用域是不同的. 线程组是每个线程都是独立运行测试脚本,一个线程组就等于一个用户,通过多个 ...

  5. Web性能测试工具JMeter

    做Web方面的黑盒测试,也就是功能测试,基本不需要什么测试工具,都是直接打开浏览器访问,点一点界面就行. 现在流行的移动互联网应用,客户端和服务端的开发是分离的,两者开发进度肯定不一样,可能存在服务端 ...

  6. 性能测试工具JMeter

    JMeter介绍     Apache JMeter是Apache组织的开放源代码项目,具有极高的可扩展性,是一个100%纯Java桌面应用,用于压力/性能测试.JMeter可以用于测试静态或者动态资 ...

  7. Tools - 负载性能测试工具JMeter

    JMeter简介 HomePage:http://jmeter.apache.org/ Apache JMeter是Apache组织开发的基于Java的开源负载性能测试工具. 可以用于对服务器.网络应 ...

  8. 性能测试工具Jmeter你所不知道的内幕

    谈到性能测试,大家一定会联想到Jmeter和LoadRunner,这两款工具目前在国内使用的相当广泛,主要原因是Jmeter是开源免费,LoadRunner 11在现网中存在破解版本.商用型性能测试工 ...

  9. 阿里云PTS分享-用性能测试工具JMeter实现基于供应链业务上对于WebSocket 协议的压测

    性能测试PTS(Performance Testing Service)是面向所有技术相关背景人员的云化性能测试工具,孵化自阿里内部平台.有别于传统工具的繁复,PTS以互联网化的交互,面向分布式和云化 ...

随机推荐

  1. Discrete Logging(POJ2417 + BSGS)

    题目链接:http://poj.org/problem?id=2417 题目: 题意: 求一个最小的x满足a^x==b(mod p),p为质数. 思路: BSGS板子题,推荐一篇好的BSGS和扩展BS ...

  2. JSON与JS的区别以及转换

    JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串,又如何把JSON字符串转化为JavaScript对象? JSON (JavaScript Obje ...

  3. Mysql储存过程8:repeat循环

    语法: repeat SQL until 条件 end repeat; 就是相当于其他语言中的: do{ # }while(); mysql> create procedure p1p() -& ...

  4. 33 - 并发编程-线程同步-Event-lock

    目录 1 线程同步 1.1 Event 1.1.1 什么是Flag? 1.1.2 Event原理 1.1.3 吃包子 1.2 Lock 1.2.1 lock方法 1.2.2 计数器 1.2.3 非阻塞 ...

  5. 69.Spartan-6的SelectIO资源

    2.1.6 SelectIO资源 Spartan-6有丰富的I/O资源,包括SelectIO和RocketIO. Spartan-6每个I/O片(Tile)包含两个IOB.两个ILOGIC2.两个OL ...

  6. Skip List(跳跃表)原理详解与实现【转】

    转自:http://dsqiu.iteye.com/blog/1705530 Skip List(跳跃表)原理详解与实现 本文内容框架: §1 Skip List 介绍 §2 Skip List 定义 ...

  7. 设计模式之笔记--解释器模式(Interpreter)

    解释器模式(Interpreter) 定义 解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 类图 描述 Expr ...

  8. ssh连接不上排查方法总结

    //常见报错信息 # No route to host --> server端没有开机或是网络不通(这个原因很多,最简单的是网线没有插.还有就是可能会是网卡down了等) 如果是网卡down了i ...

  9. Tutorial 6: ViewSets & Routers

    转载自:http://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/ Tutorial 6: ViewSets & ...

  10. MySQL 操作总结

    1. 数据库级别操作 1.1 创建数据库 CREATE DATABASE db1 default charset utf8 collate utf8_general_ci; 1.2 删除数据库 DRO ...