Jmeter 全程实战(一)简介与安装

本教程环境:

  • 操作系统:win10
  • Jmeter:5.3

一、简介

1.1 常用压力测试工具对比

1. loadrunner

性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能繁多

2. apache ab(单接口压测最方便)

模拟多线程并发请求,ab 命令对发出负载的计算机要求很低,既不会占用很多 CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载, 简单 DDOS 攻击等

3. webbench

webbench 首先 fork 出多个子进程,每个子进程都循环做 web 访问测试。子进程把访问的结果通过 pipe 告诉父进程,父进程做最终的统计结果。

4. Jmeter

开源免费,扩展性强,支持场景编排、断言设置等多种功能,但是在需要高负载的场景下,Jmeter 部署分布式环境成本比较高。

1.2 jmeter 介绍

Apache JMeter 是100%纯 JAVA 桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如 web 应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和 FTP 服务器等等。JMeter 可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。

同时,JMeter 可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和 assertions 来验证你的程序返回了所期待的值。为了更高的适应性,JMeter 允许调用二次开发的jar包来丰富你的测试场景;JMeter 允许你使用正则表达式来创建这些 assertions.

优点:纯 java 开发;上手容易,高性能;可提供测试数据分析,通过各种报表/图形展示测试数据

缺点:使用 JMeter 无法验证 JS 程序,也无法验证页面 UI,所以要须要和 Selenium 配合来完成 Web2.0 应用的测试。

官方文档:https://jmeter.apache.org/download_jmeter.cgi

帮助文档:http://jmeter.apache.org/usermanual/component_reference.html,或者打开jmeter进入菜单-“帮助”-“帮助”来查看帮助文档。

1.3 Jmeter 使用场景

可以用来压测不同的协议和应用

  • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
  • SOAP / REST Webservices
  • FTP
  • Database via JDBC
  • LDAP  轻量目录访问协议
  • Message-oriented middleware (MOM) via JMS
  • Mail - SMTP(S), POP3(S) and IMAP(S)
  • TCP等等

二、JMeter 下载安装

2.1 Jmeter GUI 图形界面安装

2.2 Jmeter 插件安装

三、Jmeter 运行

1. windows 下进入bin目录,双击运行 jmeter.bat 启动 jmeter

注意:打开的时候会有两个窗口,JMeter的命令窗口和JMeter的图形操作界面,不可以关闭命令窗口。

2. 若想要通过 cmd 快速启动 jmeter,可配置 jmeter 环境变量
  • 在系统变量中添加属性:JMETER_HOME=E:\mysoft\apache-jmeter-5.3 (jmeter 保存的路径);然后系统变量 path 后面加上 %JMETER_HOME%\bin

  • 打开 cmd 输入 jmeter 执行即可启动 jmeter

四、JMeter 目录结构

1. bin:所有可运行程序,包含配置文件

  • examples:目录下包含 Jmeter 使用实例

  • jmeter.bat:windows 的启动文件

  • jmeter.sh:mac 或 linux 的启动文件

  • jmeter-server:mac 或者 liunx 分布式压测使用的启动文件

  • jmeter-server.bat:windows 分布式测试要用到的服务器,启动负载生成器服务文件

  • jmeter.properties:jmeter 核心配置文件,超过80%的配置项都是通过这个文件实现。(PS:修改配置文件后,要重启 jmeter 才能生效)

  • jmeter.log:Jmeter运行日志文件,jmeter 使用的日志文件名称被定义到 jmeter.properties 中,默认在 jmeter.log 可查看日志

  • shutdown.cmd:windows 下 jmeter 关闭文件

  • stoptest.cmd:windows 下 jmeter 测试停止文件

2. docs:接口文档目录,包括 api 文件以及 css 和图像样式

3. extras:插件拓展包

该目录下的文件提供了对构建工具Ant的支持,可以使用Ant来实现测试自动化,例如批量脚本执行,产生HTML格式的报表,测试运行时,可以把测试数据记录下来,Jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行“ant -Dtest=文件名 report”,就可以生成测试统计报表。也可以用于持续集成。

4. lib:核心 jar 包

该目录包含两个子目录,其中 ext 子目录存放有 JMeter 的核心 jar 包,另一个 junit 子目录存放 JUnit 单元测试脚本。用户扩展所依赖的 jar 包,应该直接放到 lib 目录下,而非 lib/ext 下。

5. licenses:用户证书目录

6. printable_docs:用户使用手册

printable_docs 的 usermanual 子目录下的内容是 JMeter 的用户手册文档,其中 component_reference.html 是最常用到的核心元件帮助文档。

7. LICENSE: JMeter 许可说明

8. NOTICE: JMeter 简单信息说明

9. README.md: JMeter 官方基本介绍

五、Jmeter 主要配置文件

5.1  jmeter.properties 配置文件

jmeter.properties 定义了 jmeter 运行的关键配置

jmeter.properties 常见配置
#默认语言设置,中文 language=zh_CN
language=en

#捕捉cookie开关
CookieManager.save.cookies=true

#配置编辑器的字体和尺寸
jsyntaxtextarea.font.family=宋体
jsyntaxtextarea.font.size=20

#配置默认编码格式
sampleresult.default.encoding=UTF-8

#SSL 配置:重点关注下面几个配置# 指定 HTTPS 协议层  
# 指定 HTTPS 协议层
https.default.protocol=TLS
# 指定 SSL 版本,实际应用中可能需要修改
https.default.protocol=SSLv3
# 设置启动的协议
https.socket.protocols=SSLv2Hello SSLv3 TLSv1
# 缓存控制,控制 SSL 是否可以在多个迭代中重用
https.use.cached.ssl.context=true

#JMeter 测试项目自动备份配置
# 设置是否启用自动备份,默认是 true
jmeter.gui.action.save.backup_on_save=true
# 设置自动备份目录,默认备份至 JMeter 根目录的 backups下
jmeter.gui.action.save.backup_directory=
# 设置自动备份项目数,默认为最近 10 个
jmeter.gui.action.save.keep_backup_max_count=10

#远程主机配置
# 配置远程主机的 IP,默认为本机。用逗号","可以设置多个远程主机
remote_hosts=127.0.0.1
# 多个远程主机指定示例如下,其中:后为端口
remote_hosts=127.0.0.1:1099,127.0.0.1:1200,127.0.0.1:1300
对于 RMID 的配置请直接看配置文件中的选项说明

#日志管理配置
# 设置日志格式
log_format_type=default
# 设置日志输出级别
log_level.jmeter=INFO
# 设置 junit 日志输出级别
log_level.jmeter.junit=DEBUG
# 设置日志输出目标文件,默认为 jmeter.log
log_file=jmeter.log

# jmeter.bat 关键配置修改
#为了更优化的使用 jmeter,需要对 jmeter.bat 中的一些配置根据当前机器的配置进行优化,这里进行关键配置项说明,大家根据自己的机器的配置来进行修改。jvm 相关配置,大概在 80 行左右,找到这些配置,对其中的数值根据当前机器的硬件配置来修改。
set HEAP=-Xms2048m -Xmx2048m
set NEW=-XX:NewSize=512m -XX:MaxNewSize=512m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
if %current_minor% LEQ "8" (
rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
set PERM=-XX:PermSize=512m -XX:MaxPermSize=1024m)

# 设置输出报告模板格式
jmeter.save.saveservice.output_format = csv

5.2 system.properties 配置文件

system.properties,定义 Java 进程的系统变量,通过 System.getProperties() 可查询。

5.3 user.properties 配置文件

user.properties,自定义配置,可覆盖 jmeter.properties。

posted @ 2020-09-19 20:04  芒果日记  阅读(199)  评论(0编辑  收藏  举报