有没有那么一天,突然跟你说,晚上系统上线你做下性能测试。
1.png
什么是JMeter[本节内容来源百度百科^_^]
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
为什么是JMeter为什么选择JMeter,下面看看JMeter的特色。
开源许可: Jmeter是完全免费的,并提供了源码可供自定义开发
图形界面模式:提供了方便的图形界面来编辑和开发测试脚本
平台无关:可以轻易在windows、linux、mac上运行
多线程框架:通过线程组,能够轻易的设置不同测试的并发用户。
图形测试结果:提供了图表、表格、树、文件等格式的结果显示。
易于安装:jmeter不需要安装,下载解压即可用。
高扩展性:jmeter支持用户自定义测试脚本,同样还提供了各种插件。
多测试类型支持:支持性能测试、分布式测试、功能测试
仿真模拟:支持多用户并发测试
多协议支持:支持http、jdbc、ldap、soap、jms、ftp等等协议
录制&回放:支持用badboy或jmeter录制,不过笔者从来不用该模式,纯手工最佳。
脚本测试:jmeter支持beanshell和selenium
JMeter工作原理JMeter基本工作原理如图:

2.png
JMeter完整的工作原理如图:

3.png
总结本次对jmeter进行了简单的基本介绍,主要让大家对jmeter有个基本的了解。
最近很多朋友都发消息说分享下基于jmeter做性能测试的一些经验。
为了让大家能从零到有的掌握性能测试,决定从基础开始一点点的分享基于jmeter性能的一些经验,初步预计大概要分享约30篇。
前言学习一种工具,首先得对其关键配置及目录等有一个基本的了解,这样能更方便的深入掌握该工具,下面我们就JMeter的目录及相关关键配置进行分析说明。
下载安装
-
安装主程序
如图:

4.png
下载后直接解压即可。
-
安装插件管理
将下载的包放至jmemter解压根目录的lib/ext下即可。

6.png
目录说明先看一下解压后的JMeter安装目录:

5.png
- 目录说明
- bin 包含启动、配置等相关命令
- docs 官方本地文档目录
- extras 辅助库
- lib 核心库,包含JMeter用到的各种基础库和插件
- licenses 包含non-ASF软件的许可证
- printable_docs 可打印版本文档目录
- LICENSE JMeter许可说明
- NOTICE JMeter简单信息说明
-
README.md JMeter官方基本介绍

7.png
主要介绍bin目录下我们最关注几个文件:
- jmeter.properties JMeter核心配置文件,各种配置基本在这完成
- log4j.conf JMeter日志配置管理
- jmeter.log JMeter运行日志记录,什么输出信息、警告、报错都在这里进行了记录
- jmeter.bat windows下jmeter启动文件
- shutdown.cmd windows下jmeter关闭文件
- stoptest.cmd windows下jmeter测试停止文件
-
jmeter-server.bat windows下jmeter服务器模式启动文件
其他文件的功能就不一一说明了,同时其他目录这里也不再进行阐述,有兴趣的朋友可以自己深入看下。
关键配置说明
-
jmeter.properties配置说明
-
SSL配置:
-
JMeter界面显示配置
-
JMeter测试项目自动备份配置
-
远程主机配置
-
日志管理配置
-
等等其他还有10多个配置大项(就不一一列举了)
-
jmeter.bat关键配置修改
jvm相关配置,大概在80行左右,找到这些配置,对其中的数值根据当前机器的硬件配置来修改。set HEAP=-Xms2048m -Xmx2048mset NEW=-XX:NewSize=512m -XX:MaxNewSize=512mset SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%set TENURING=-XX:MaxTenuringThreshold=2if %current_minor% LEQ "8" ( rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan : set PERM=-XX
ermSize=512m -XX:MaxPermSize=1024m)启动jmeter在bin目录下直接双击jmeter.bat即可启动后的界面如下:
8.png
总结本次就jmeter的安装和配置及关键配置项进行了分享,大家可以深入的去研究下其他的一些配置,以便进一步的熟悉jmeter的原理和应用。
JMeter组件手册04 前言在jmeter中提供了一系列的不同的组件,每一种组件都提供了某类功能的实现,用于支持性能测试的实施。
请看下图,jmeter的核心组件构成。

41.png
学习、研究jmeter之前,深入了解jmeter的基本组件及其作用是必须的。接下来我们开始讨论基于jmetere进行性能测试必须掌握的组件,以便大家逐步掌握jemter的核心基本能力。
下面的几个组件是入门jmeter必须掌握的:
- Thread Group
- Samplers
- Listeners
-
Configuration
在jmeter中,线程组组件运行用户设置线程数量、初始化方式等等配置。
例如,如果你设置线程数为100,那么jmeter将创建并模拟测试100个用户请求到服务器端。
如下图所示:

42.png
Samplers我们常用的jmeter测试有HTTP、FTP、JDBC协议,以及其他各种支持的协议。
在上节我们已经知道线程组件用于模拟用户请求至服务器端。
但还未讲解如何在线程组件中实现某种请求类型(比如如何发起HTTP请求?)。
在本节中,我们将演示如何利用Samplers组件的元素来实现各类请求类型。
我们先看一下在jmeter中Samplers组件已经实现了哪些协议的支持。如下图所示:

43.png
下面我们就重要的Samplers组件元素进行一一讲解,以便大家有个初步的了解。
-
BeanShell Sampler
参见图说明:

44.png
注:每一个Sampler都有自己独立的beanshell解析器,并且sampler只能在自己的线程中调用(意味着不可跨线程使用)。
-
FTP Request
下面我们看一下ftp元素的基本配置说明:

45.png
注:我们经常在windows和linux直接通过ftp进行文件传输,建议勾选Use Binary Mode,避免编码问题。
-
HTTP Request
下面我们一起看看HTTP Request元素的基本配置说明,了解下基本的功能。

46.png
-
Java Request
示例如下:
待测类class Sum; -> 生成sum.jar
继承至AbstractJavaSamplerClient的测试类Class TestSum(AbstractJavaSamplerClient) -> 生成testSum.jar
==注:==
一个java测试应该要实现以下几个方法,以便jmeter java sampler可以正确调用:

416.png
更详细的后续出专题讲解,本篇不举具体示例了。
注意testSum.jar要能调用sum.jar。
将上述sum.jar、testSum.jar拷贝至jmeter安装目录的lib/ext下。
下面我们看看如何在jmeter配置java测试。

47.png
对于JDBC Request、JMS Point-to-Point、JSR223、SMTP、JUnit Request等Sampler组件元素就不一一说明了在后续的分享中,主要基于HTTP和java请求来分享实战。
Listeners(监听器)在jmeter中Listeners提供了执行结果生成和显示能力的支持,提供了树形结构、表、图形和日志方式。
下面我们先看下几种结果显示示例图。
图形模式:

48.png
树模式:

49.png
表模式:

410.png
日志方式

411.png
Configuration Elements(即配置元件)配置元件包含了Samplers下各种Sampler的默认配置设置,如果有配置默认配置,在Sampler下对应的sampler就会使用该默认配置。
下面我们看看我们主要用到的默认配置有哪些。

417.png
下面进行逐一的说明。
-
CSV Data Set Config
CSV Data Set Config主要用于读取csv格式的文件中数据,实现参数化。

413.png
-
HTTP Cookie Manager
HTTP Cookie Manager主要用于默认cookie管理。

414.png
-
HTTP Request Defaults
HTTP Request Defaults用于配置HTTP request的默认值,例如IP、端口等等都设置好默认值后,在后续HTTP request元素里就不需要重复设置,节省时间。

415.png
总结本次就jmeter常用的相关组件元素进行了大概的说明,以便大家有个基本的了解,为后续深入学习和实践打下基础。
JMeter性能测试基本过程及示例05 前言性能测试是我们日常测试过程中,必须掌握的技能。通过进行性能测试,我们能分析服务端的整体性能、负载等,以便进一步评估我们的业务系统是否能满足当前运营生产及未来业务增长情况下如何进一步调整我们的服务配置方案。
jmeter为性能测试提供了一下特色:
- jmeter可以对测试静态资源(例如js、html等)以及动态资源(例如php、jsp、ajax等等)进行性能测试
- jmeter可以挖掘出系统最大能处理的并发用户数
-
jmeter提供了一系列各种形式的性能分析报告

516.png
负载测试:通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。
压力测试:测试系统能承受的最大负载能力。目的在于发挖掘出目标服务系统可以处理的最大负载。
基本过程下面我们看下使用jmeter进行性能测试的基本过程。

51.png
对上图进行简要的说明
-
新增线程组
-
新增JMeter元组
-
新增监听器
-
运行&查看结果
调试运行,分析指标数据,挖掘性能瓶颈、评估系统性能状态、
- 新增线程组
- 在jmeter的bin目录下双击jmeter.bat启动jmeter
-
在左边操作栏中选择“测试计划”,右击新增一个线程组,如图所示:

52.png
-
初始化线程组相关信息,如图:

53.png
- 新增JMeter元组
-
添加默认配置元素,添加如下默认配置,如图

54.png
各默认组件配置如图所示。
HTTP Cache Manager

55.png
HTTP Cookie管理器

56.png
HTTP请求默认值

57.png
-
添加HTTP Request元组
在线程组上右击新增HTTP请求,如图:

58.png
HTTP请求设置如图:

59.png
-
新增监听器

510.png
-
运行&查看结果

511.png
结果说明下面我们就监听器所采集的结果图进行简要的说明:
图形结果

512.png
察看结果树

513.png
用表格查看结果

514.png
聚合报告

515.png
总结本次就jmeter使用的基本过程如何使用进行了分享,并就访问百度首页进行了实际测试演示。在最后就常用的几个监听器中字段含义进行了说明。请大家根据企业实际项目进行演练,请勿使用示例中百度示例。