浅谈Jmeter

JMeter的核心技术

1、什么是JMeter?

    JMeter是由Apache软件基金会组织提供的、免费的、轻量化、Java开发的一款接口测试工具、性能测试工具;

    作为客户端通过大量网络协议向服务器发送请求,可以测试目前业内主流的接口,比如:HTTP协议、HTTPS协议、JDBC协议等;

    由于JMeter能够模拟大量的用户(虚拟用户 VU Virtual User),可以发起压力,测试接口乃至服务器后台的性能;(牵一发而动全身)

原理:Java执行程序需要Java虚拟机进程支持,包括运行JMeter;后续发起多任务,称为多线程,模拟大量的用户发送请求。

进程Process:正在运行的程序;比较消耗系统资源(重量级)

线程Thread:在进程中发起多任务为多线程;比较节约系统资源(轻量级),让测试机能够发起更多的虚拟用户VU。

学习方法:多对比,多思考工具为何如此设计!

Postman、JMeter

2、安装和使用JMeter(搭建测试机环境)

1)安装JDK,并配置环境变量

目前使用JDK1.8(主流) JDK:Java开发工具包

凡是基于Java开发的产品,都需要JDK的支持;

比如:JMeter、服务器软件Tomcat等...

JMeter5.3版本需要JDK1.8支持

配置系统环境变量:

JAVA_HOME:JDK的安装目录

Path:命令的搜索路径 将JDK的bin命令追加到Path的值中

为了让系统找到JDK1.8的命令,比如java.exe 启动Java虚拟机

2)安装JMeter

解压即可:apache-jmeter-5.3.zip

比如:

E:\性能测试JMeter资料\apache-jmeter-5.3\apache-jmeter-5.3

目录结构:

<1> bin目录:常用命令、启动项

jmeter.bat 给Windows系统使用的 批处理文件

jmeter.sh 给Linux系统使用的 shell命令 Java跨平台

要求:修改系统环境变量Path,将jmeter.bat所在的目录名,追加到Path中,为了后续在命令行中可以执行jmeter命令;

比如:

E:\性能测试JMeter资料\apache-jmeter-5.3\apache-jmeter-5.3\bin

启动方式:

双击运行jmeter.bat

命令行中运行jmeter

<2> lib目录:第三方类库 class libary 大量的jar包

将Java开发的类、程序打包为压缩包,供JMeter使用

比如:为JMeter扩展功能,在ext目录下(扩展),添加jar包

JMeterPlugins-Standard.jar

启动JMeter:运行jmeter.bat

出现一个客户端界面,界面中关键?Test Plan 测试计划

技巧:修改界面显示效果

修改工具默认语言:

修改一个配置文件:bin\jmeter.properties 属性文件

特点:大量的名值对 名=值 #表示注释

设置工具默认的语言风格 en 英语 zh_CN 中文

language=zh_CN

保存文件,重启JMeter才生效!

原理:使用JMeter界面配置测试计划(直观的图形界面),保存后是一个jmx文件(便于保存)

jmx:JMeter的XML配置文件(大量标签表示不同的配置)

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3">
    嵌套添加其它节点,通过工具界面配置
    比如:线程组、取样器(请求)...
    工具会自动记录以上信息
</jmeterTestPlan>

3、JMeter测试计划基本要素

面试题:JMeter的一个测试计划中有哪些要素?

思路:先整体,后局部

1)根节点:测试计划 是其他节点的最顶层“容器”

配置内容:

<1> 用户定义的变量:配置计划中的全局变量

定义名称 和 值,后续如何使用? ${变量名}

比如:ip1 192.168.52.129

使用时:${ip1} 对比Postman的“小眼睛” 使用时{{ip1}}

<2> 独立运行每个线程组:一般不勾选,如果选择,表示“串行执行”

<3> 添加第三方jar包:库 为了扩展

比如:使用JMeter连接MySQL数据库,需要数据库的驱动包

选择添加mysql.jar文件(仅当前计划可用)

如果:添加到JMeter的lib目录下,所有计划都可用!

2)“测试计划”下,添加1个或多个“线程组” (Thread Group)

目的:管理虚拟用户,对接口进行访问

(VU 多线程模拟)

<1> 线程数:通过配置1个或多线程,模拟1个或多个用户

功能测试时:1个VU

调试脚本,先使用1个VU运行,便于分析执行轨迹,便于调试

性能测试时:多个VU 发起更大的压力

<2> 在取样器(请求)错误后要执行的动作:

请求错误后,可以 继续 发送后续的请求

<3> Ramp-UP时间(秒):1

表示以上虚拟用户准备在多久时间内就位(预备阶段)

<4> 调度器:控制用户执行多久

3)“线程组”下,添加“取样器”(Sampler):就是常用协议的请求

取样:对请求协议细节的捕捉、描述

目前:HTTP请求 按照接口文档、用例设计填写细节

名称:test01_multi_params接口
注释:基于HTTP协议,以Get方法,使用有效的id和username查询用户的注册时间,返回预期的JSON结果
对比Postman:配置效果   Get方法
http://{{ip1}}/apitest/multi-params/?id=1&username=admin
协议名://主机名:端口/应用名/功能名/?参数名=参数值&...
          :80 可省略         QueryString 查询字符串
​
改版为JMeter:
<1> 协议:HTTP
<2> 服务器名称或IP:${ip1}   使用全局变量
<3> 端口号:默认不填  目前是80
<4> 请求方法:默认GET
<5> 路径:/apitest/multi-params/
<6> 内容编码:默认不写   
    如果中文编码出现问题,建议改为UTF-8
<7> 同请求一起发送的参数:添加
  名称        值
  id          1
  username    admin

4)“测试计划”或“线程组”下,添加“监听器”:Listener 观察者

作用范围不同

<1> 察看结果树:和功能有关 请求包、响应包的分析

类似:Postman的Console 控制台

在响应数据中,可以选择不同的察看角度:

Text 普通文本:适合看源代码

HTML:网页页面效果,更直观

JSON:JSON格式化后的效果

问题1:IP地址不对,观察变量名、变量值

问题2:URL地址写错

排查方法:关注请求包、响应包内容的提示,异常提示

XxxException 异常

XxxError 错误

<2> 图形结果:察看性能变化的趋势图 将执行轨迹数据 描点不划线

<3> 用表格察看结果:察看性能结果的明细 每次请求的细节

<4> 聚合报告:察看性能结果统计 平均、最大、最小等

练习1:get方法根据商品类别编号查询商品页面

请求名称:get方法根据商品类别编号查询商品
请求方法:Get
接口地址和参数:
https://list.jd.com/list.html?cat=9987,653,655
https://list.jd.com/list.html?cat=670,671,672
转化为JMeter的请求?
协议:HTTPS
服务器名称或IP:list.jd.com
端口号:默认不写     默认443
请求方法:Get
路径:/list.html/    要求/结尾
请求参数:
  cat       9987,653,655

 一点自我学习分享,更多相关JMeter,后面再与大家分享、交流~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值