快速上手JMeter 压力测试

前言

压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。

环境搭建

因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境,本文就不讲安装环境了。
java下载和环境配置参考java下载安装
JAVA官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

JMeter官网:http://jmeter.apache.org/download_jmeter.cgi

(Windows版本下载zip,Linux版本下载tgz)

注意:jdk版本和jmeter版本匹配问题,环境变量一定要配置正确

启动之后会有两个窗口,一个cmd窗口,一个JMeter的 GUI。

在这里插入图片描述

在这里插入图片描述
更改语言为中文

官方默认为我们提供了简体中文。通过 【Options】->【Choose Language】变更为简体中文

在这里插入图片描述

JMete执行方式

JMeter执行方式有2种,一种是GUI模式,一种是非GUI模式。GUI模式就是界面模式,非GUI模式就是命令行模式。界面模式主要用来编写和调试脚本用的,项目的真正执行最好是采用命令行模式,因为采用命令行模式可以和持续集成或者其它框架进行对接,做成自动化回归测试平台。

GUI方式

创建测试

1.创建线程组

在“测试计划”上右键 【添加】–>【[线程(用户)]Threads(Users)】–>【线程组】。
在这里插入图片描述
设置线程数和循环次数。我这里设置线程数为500,循环一次。
在这里插入图片描述
1)线程数:这里就是指虚拟用户数,默认的输入是“1”,则表明模拟一个虚拟用户访问被测系统,如果想模拟500个用户,则此处输入500。

2)Ramp-Up Period (in seconds): 虚拟用户增长时长。比如你测试的是一个考勤系统,那么实际用户登录使用考勤系统的时候并不是大家喊1、2、3 - 走起,然后一起登录。实际使用场景可能是9点钟上班,那么从8:30开始,考勤系统会陆陆续续有人开始登录,直到9:10左右,那么如果完全按照用户的使用场景,设计该测试的时候此处应输入40(分钟)* 60(秒)= 2400。但是实际测试一般不会设置如此长的Ramp-Up时间,一般情况下,可以估计出登录频率最高的时间长度,比如此处可能从8:55到9:00登录的人最多,那这里设置成300秒,如果“线程数”输入为100,则意味着在5分钟内100用户登录完毕。

3)循环次数:该处设置一个虚拟用户做多少次的测试。默认为1,意味着一个虚拟用户做完一遍事情之后,该虚拟用户停止运行。

2.配置元件

在我们刚刚创建的线程组上右键 【添加】–>【配置元件】–>【HTTP请求默认值】。

在这里插入图片描述
配置我们需要进行测试的程序协议、地址和端口

在这里插入图片描述
当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可。

3.构造HTTP请求

在“线程组”右键 【添加-】->【(取样器)samlper】–>【HTTP 请求】设置我们需要测试的API的请求路径和数据。我这里是用的json

在这里插入图片描述

4.添加HTTP请求头

在我们刚刚创建的线程组上右键 【添加】–>【配置元件】–>【HTTP信息头管理器】。

因为我要传输的数据为json,所以设置一个 Content-Type:application/json

在这里插入图片描述

5.添加断言

在我们刚刚创建的线程组上右键 【添加】–>【断言】–>【响应断言】。

根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。还可以配置错误信息

在这里插入图片描述

6.添加察看结果树

在我们刚刚创建的线程组上右键 【添加】–>【监听器】–>【察看结果树】。

直接添加,然后点击运行按钮就可以看到结果了。

在这里插入图片描述

7.添加Summary Report

在我们刚刚创建的线程组上右键 【添加】–>【监听器】–>【(聚合报告)Summary Report】。

直接添加,然后点击运行按钮就可以看到结果了。
在这里插入图片描述

测试计划创建完成

保存结果就行

非GUI方式

JMete非GUI运行优点

JMeter可视化界面及监听器动态展示结果都比较消耗负载机资源,在大并发情况下GUI方式往往会导致负载机资源紧张,会对性能测试结果造成影响。我们就只有多加机器来运行测试计划(分布式测试),这样一台负载机变为两台。所以推荐用非GUI的方式来运行测试计划。虽然非GUI方式不显示界面,但也会以字符形式周期性显示执行结果,对负载机的资源消耗会小一些,所有同等条件下非GUI方式的jmeter机器能够产生的负载会比GUI方式的jmeter产生的负载大一些。

jmeter非GU运行参数

 -n 命令行模式

  -t 指定jmx脚本地址(地址可以是相对路径,可以是绝对路径)

  -h 查看帮助

  -v 查看版本

  -p 指定读取jmeter属性文件,比如jmeter.properties文件中设置的

  -l 记录测试结果的文件,通常结果文件为jtl格式(文件可以是相对路径,可以是绝对路径)

  -s 以服务器方式运行(也是远程方式,启动Agent)

  -H 设置代理,一般填写代理IP

  -P 设置代理端口

  -u 代理账号

  -a 代理口令

  -J 定义jmeter属性,等同于在jmeter.properties中进行设置

  -G 定义jmeter全局属性,等同于在Global.properties中进行设置,线程间可以共享)

  -D 定义系统属性,等同于在system.properties中进行设置

  -S 加载系统属性文件,可以通过此参数指定加载一个系统属性文件,此文件可以用户自己定义

  -L 定义jmeter日志级别,如debug、info、error等

  -j 制定执行日志路径。(参数为日志路径,不存在不会自动创建,将日志输出到命行控制台)

  -r 开启远程负载机,远程机器列表在jmeter.properties中指定

  -R 开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中remote_hosts的设置

  -d 指定Jmeter Home目录

  -X 停止远程执行

  -g 指定测试结果文件路径,仅用于生成测试报表,参数是csv结果文件

  -e 设置测试完成后生成测试报表

  -o 指定测试报告生成文件夹(文件夹必须存在且为空文件夹)

jmeter非GUI运行命令

非GUI基本命令格式:

    jmeter -n -t <test JMX file> -l <test log file>

 基本命令样例:

    jmeter -n -t E:\testplan.jmx -l E:\read.jtl

 非GUI并生成html报告基本命令格式

    jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>

 非GUI并生成html报告基本命令样例:

    jmeter -n -t E:\test.jmx -l E:\read.jtl -e -o E:\ResultReport

    

示例:

在这里插入图片描述

使用日志文件生成报告基本命令格式:
    jmeter -g <log file> -o <Path to output folder>

使用日志文件生成报告基本命令样例
    jmeter -g D:\apache-jmeter-3.0\bin\testLogFile -o ./output
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kuokay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值