Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1582674
  • 博文数量: 157
  • 博客积分: 1776
  • 博客等级: 上尉
  • 技术积分: 1786
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-19 10:49
文章分类

全部博文(157)

文章存档

2018年(1)

2017年(12)

2015年(6)

2014年(17)

2013年(51)

2012年(65)

2011年(5)

分类: Windows平台

2017-05-08 16:45:27

      前言在你的日常工作中, 你有没有测试过一个服务能支撑多少用户在线,用户并发?
有没有那么一天,突然跟你说,晚上系统上线你做下性能测试。

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的目录及相关关键配置进行分析说明。
下载安装
  • 安装主程序
从Apache 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官方基本介绍
下面我们重点看下bin目录,如图:

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服务器模式启动文件
==注:每一个.cmd文件都对应一个.sh文件,.sh是linux下的对应功能的文件==
其他文件的功能就不一一说明了,同时其他目录这里也不再进行阐述,有兴趣的朋友可以自己深入看下。
关键配置说明
  • jmeter.properties配置说明
主要包含以下几个方面的配置:
  • SSL配置:
重点关注下面几个配置# 指定HTTPS协议层https.default.protocol=TLS# 指定SSL版本,实际应用中可能需要修改https.default.protocol=SSLv3# 设置启动的协议https.socket.protocols=SSLv2Hello SSLv3 TLSv1# 缓存控制,控制SSL是否可以在多个迭代中重用https.use.cached.ssl.context=true
  • JMeter界面显示配置
这里就不对其界面显示控制进行说明了,一般情况下默认界面能满足大家的应用了。
  • JMeter测试项目自动备份配置
# 设置是否启用自动备份,默认是truejmeter.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.loglog_file=jmeter.log
  • 等等其他还有10多个配置大项(就不一一列举了)
  • jmeter.bat关键配置修改

为了更优化的使用jmeter,需要对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=-XXermSize=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
Thread Group(线程组)线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在jmeter中,每个线程意味着模拟一个真实用户向服务器发起请求。
在jmeter中,线程组组件运行用户设置线程数量、初始化方式等等配置。
例如,如果你设置线程数为100,那么jmeter将创建并模拟测试100个用户请求到服务器端。
如下图所示:

42.png

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

43.png

下面我们就重要的Samplers组件元素进行一一讲解,以便大家有个初步的了解。
  • BeanShell Sampler
这个组件元素允许我们在jmeter中写Bean Shell脚本,写这个脚本有什么作用?意味着你可以完全的控制和实现自己的需要。灵活定制,自然也就有难度,你得有点脚本功底。
参见图说明:

44.png

注:每一个Sampler都有自己独立的beanshell解析器,并且sampler只能在自己的线程中调用(意味着不可跨线程使用)。
  • FTP Request
FTP Request元素提供了测试ftp服务器的能力,这个元素让我们能够去测试ftp的上传、下载功能。
下面我们看一下ftp元素的基本配置说明:

45.png

注:我们经常在windows和linux直接通过ftp进行文件传输,建议勾选Use Binary Mode,避免编码问题。
  • HTTP Request
HTTP Request提供了HTTP/HTTPS协议的测试支持能力。
下面我们一起看看HTTP Request元素的基本配置说明,了解下基本的功能。

46.png

  • Java Request
Java Request提供了测试java API的支持,但要注意要测试的java API需要有对应的测试类,该测试类必须继承AbstractJavaSamplerClient。
示例如下:
待测类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提供了一系列各种形式的性能分析报告
使用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

  • 运行&查看结果
如果启动运行jmeter,可以单击添加的监听器查看运行过程中的监控指标数据,也可以等运行结束后,再查看。

511.png

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

512.png

察看结果树

513.png

用表格查看结果

514.png

聚合报告

515.png




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

阅读(2923) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~