- jmeter入门
1.1. jmeter简介
1.2. jmeter安装 - jmeter基本使用
2.1. jmeter基本组件介绍
2.2. 参数化 - jmeter接口测试
3.1. jmeter接口测试-简介
3.2. jmeter接口测试-功能测试
3.3. jmeter接口测试-性能测试 - jmeter数据库测试-压力测试
- jenkins+maven+jmeter
5.1. jenkins简介
5.2. maven简介
5.3. jenkins+maven+jmeter环境搭建
5.4. jenkins+maven+jmeter实战
1. JMeter入门
1.1 JMeter简介
Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试CS结构的软件。同时也可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlets,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions(断言)来验证你的程序返回来所期待的值。为了更高的适应性,JMeter允许你使用常规表达式来创建这些assertions。
jmeter的未来:随着开发人员借助它的可嵌入的结构,希望看到JMeter的能力也随之快速的被扩大。更进一步的主要发展目标是把JMeter在没有减弱他的负载测试的能力的同时尽可能的做成最有效的回归测试工具。
1.2 JMeter安装
安装环境要求:
java版本
- JMeter要求充分满足JVM1.3或更高。
操作系统[JMeter可以在当前任何一个已经部署来Java的操作系统上运行] - Unix
- Windows
- Open VMS Alpha 7.3+
安装步骤
- 安装环境:win7
- 安装包准备:1) JDK安装包。2) JMeter安装包
安装过程
- JDK的安装与配置(不多介绍)
- JMeter的安装:
** 1) 解压JMeter安装包到响应目录,如:解压到D:\apache- jmeter。
** 2) 配置jmeter环境变量,新建环境变量名"JMETER_HOME", 变量值"D:\apache-jmeter"
** 3) 在系统变量"CLASSPATH"添加%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar
配置完成。
** 4) 命令行运行jmeter即可(或直接找到D:\apache-jmeter\bin下的jmeter.bat运行)
2 JMeter基本使用
2.1 JMeter基本组件介绍
JMeter主要组件
- 测试计划(Test Plan)
- 线程序(Thread Group)
- 配置元件(Configuration)
- 逻辑控制器(Login Controller)
- 取样器(Sampler)
- 断言(Assertion)
- 监听器(monitor)
测试计划
测试计划是使用jmeter进行测试的起点,一个测试计划描述了一系列jmeter运行时要执行的步骤。一个完整的测试计划包含一个或多个线程组,逻辑控制,曲阳发生控制,监听器,定时器,断言和配置元件。
线程组
线程组
- 线程组:测试里每个任务都要线程去处理,所有任务必须在线程组下面创建。
- 线程数:设置发送请求的用户数。
- Ramp-Up Period(in seconds): 创建完所有线程的时间,防止对服务器有太大的负载。[如果选择了10个线程,并且ramp-up是2秒,那么JMeter将用2秒使10个线程启动并运行。每个线程将在前一个线程启动后0.2秒后启动。如果将此值设置为0,则表示并发,也就是所有线程在同一时间启动。Ramp-up需要足够长的时间来避免在开始测试时产生太大的负载,并且有足够短的时间使最后一个线程在第一个线程结束之前运行]
- 循环次数:请求的重复次数。[如果次数为1,那么JMeter在停止前只执行测试计划一次]
- 持续时间:测试计划持续时间
- 启动延迟:测试计划延迟启动时间
配置元件
配置元件 - 配置元件维护sampler需要的配置信息,配置元件不发送请求(除了HTTP代理服务器例外),可以根据实际需要添加或修改请求的内容。
- 配置元件"用户定义的变量"会在测试的初始阶段执行(无论它处于测试树的哪个位置)
- 配置元件仅对其所在的测试书分支有效
逻辑控制器 - 逻辑控制器可以控制jmeter发送请求的测试逻辑,它与sampler结合使用可以模拟复杂的请求序列
- 循环控制器:设置请求的循环次数或永远循环,可以用于压力测试
- 简单控制器:测试用例顺序执行
- 事务控制器:将多个请求放在同一个事务中。Gegerate parent sample,则聚合报告中只显示事务控制器的数据,不会显示其中的各个请求的数据,反之则全部显示。
逻辑控制器
取样器(真正的http请求)
取样器 - 可以认为所有的测试任务都由取样器成单,如:HTTP请求、FTP请求、JAVA请求等等。
- 取样器告诉jmeter发送一个请求到指定的服务器,并等待服务器的请求。取样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变取样器运行的重复册书。
断言 - 断言:对取样器返回的请求结果给出结果作出判断,是否正确。
- 用户可以使用断言来检查服务器获得的响应内容,用来判断请求响应的结果是否如用户所期待。
- 断言会影响作用域的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项
- 断言中设置要测试的模式,则会对响应的内容(如http请求后,服务器返回的内容)进行与字符串进行匹配,如果返回来内容包括了字符串,则认为该测试通过,否则就是失败。一般通过添加监听响应断言。
断言
监听器 - 监听器:负责收集测试结果,支持将结果数据写入文件。
- 监听范围:当前节点层以及当前节点的子节点(直至叶子节点),即监听器可以监听当前层以及比它更低的层。
- 常用监听器:查看结果树、聚合报告、徒刑结果、用表格查看结果
-
查看结果树:显示取样器请求和响应的细节,包括消息头、请求的数据、响应的数据
- 取样器结果:显示的是取样器相关参数(客户端参数与响应参数)
- 请求:发送请求的具体值
- 响应数据:服务器返回的响应参数
-
聚合报告:
聚合报告- Label:取样器名称
- Samples:运行过程中一共发出了多少个请求,一般来说是其值=线程数*循环次数(前提:测试按计划跑完,其中没有异常结束的线程)。总体samples是各请求samples之和。
- Average:平均响应时间
- Median:响应时间中间值
- 90%Line:响应时间90%线(即90%的用户处于这个值)
- Min/Max:最小/最大的响应时间
- Error%:出错率(出错的Request数/所有的Request数)
- Throughput:吞吐量,每秒/每分钟(具体看/后面的单位)处理的Request数
- KB/sec:每秒从服务器接收到的数据
-
图形结果:
图形结果- 样本数据:发出去的请求数
- 最新样本:最近一个Request的响应时间
- 平均:所有Request响应时间的平均值
- 偏离:所有Request响应时间的偏差
- 吞吐量:单位时间内(一般是1分钟)chuli Request的个数
- 中值:所有Request响应时间的中间值。
-
表格查看结果:
表格结果- 显示每一个请求的信息,包括发起请求的线程,开始时间,请求响应时间,请求字节。
-
2.2 参数化
参数化数据,用记事本写参数并保存为.dat格式的文件,编码问题在使用CSV Data Set Config参数化时要求比较严格,记事本另存为修改编码为UTF-8,注意参数要一一对应,中间用都好隔开
参数化
这里介绍两种参数化的方式:
- 函数助手
- CSV Data Set Config
借助函数助手的方式 -
点击菜单栏“选项”---->函数助手对话框,如下图(CVS文件列号是从0开始的,第一列0,第二列1...)
-
复制生成的参数化函数,参数化我们需要参数化的字段,这里是对phone和empNo参数化,phone的列号为0,empNo列号为1
**借助JMeter中的配置元件(CSV Data Set Config)
-
选中线程组,点击右键,添加-配置元件-CSV Data Set Config
CVS 数据文件设置 - 使用刚才定义好的变量
网友评论