基本介绍:
JMeter是纯Java的应用程序,由Apache软件基金会开发,用来做负载功能测试的开源软件。JMeter最初设计用于做web应用测试和FTP应用测试,后来扩展到功能测试、接口测试、数据库服务测试等其他领域。
JMeter能够对应用程序做功能测试、回归测试,通过创建带有断言的脚本来验证测试结果。JMeter可以对静态的、动态的资源(文件、java程序、java对象、数据库、http服务器、ftp服务器等)的性能进行测试。JMeter能够对各种性能指标数据进行多维度的图形报表分析,并可以生成图形化的测试报告。
主要特点:
开源的、轻量级的性能测试工具
支持多种协议,即支持多种服务类型的测试
通过录制/回放方式获取测试脚本
跨平台,安装了java虚拟机就可运行
多线程并发、多维度数据统计、仪表展示、图表展示
支持GUI/CLI操作和精确计时 (毫秒级)
采用多线程并发取样,也可通过独立的线程对不同的功能同时取样
支持缓存和离线的方式分析测试结果
插件高扩展性
JMeter支持的协议:
Web:http、https
Webservice:soap/xml-RPC
Database:JDBC driver
Directory:LDAP
Message:JMS
Service:POP3、IMAP、SMTP、FTP
https -- 在http下加入了SSL层,即http的安全版
soap/ xml-RPC -- simple object access protocol、remote procedure call
LDAP -- lightweight directory access protocol
POP3 -- post office protocol - version 3
IMAP -- internet mail access protocol
JMeter常用术语:
采样器(Samples):
用来向服务器发送请求
逻辑控制器(Logic Controllers):
控制测试脚本执行的顺序
监听器(Listeners):
收集并展示测试结果信息
配置元件(Configuration Elements):
设置脚本中的共用信息
断言(Assertions):
验证是否返回期望的信息
定时器(Timers):
设置脚本执行的时间间隔
前置处理器(Pre-Processors):
设置配置信息,在采样器前执行
后置处理器(Post-Processors):
设置配置信息,在采样器后执行
测试计划(Test Plan):
整个测试的根节点,所有组件配置在其中
线程组(Thread Group):
配置并发线程数、并发时间、每个线程使用同样的测试脚本
JMeter工作原理:
JMeter通过发送测试脚本到目标服务器来模拟用户的请求,测试过程中收集各种性能指标,并图像化展示结果数据。
JMeter安装要求:
1. JMeter要求JVM1.5或更高版本
JMeter2.x—jdk1.6
JMeter3.0/3.1—最低jdk1.7
JMeter3.2/3.3—最低jdk1.8
2. 操作系统(Linux/Windows/Mac)
Windows:apache-jmeter-xx.zip
Linux/Mac:apache-jmeter-xx.tgz
配置JDK环境变量:
计算机右键-属性-高级系统设置-环境变量
新建变量JAVA_HOME,变量值位 JDK安装路径D:Program FilesJavajdk1.8.0_91
编辑Path变量,在末尾加入%JAVA_HOME%in;%JAVA_HOME%jrein;
打开Cmd命令行窗口,输入java –version 验证
JMeter安装配置(windows):
http://jmeter.apache.org/download_jmeter.cgi下载
解压安装文件
计算机右键-属性-高级系统设置-环境变量
新建变量JMeter_HOME,JMeter安装的路径 , 如E:Jmeterjmeter-3.1in
编辑Path变量,在末尾加入%Jmeter_HOME%in;
打开cmd输入jmeter --version验证是否安装成功
JMeter安装配置(Linux):
http://jmeter.apache.org/download_jmeter.cgi
解压安装文件tar xzvf apache-jmeter-5.4.1.tgz
配置环境变量
vi /etc/profile --打开profile文件,添加以下内容
JMETER_HOME=/opt/jmeter/apache-jmeter-5.4.1
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
配置文件生效 source /etc/profile
jmeter –v 验证是否安装成功
JMeter目录结构:
/bin-可执行文件、配置文件
/bin/examples - CSV样例
/bin/report-template - 报告模板
/bin/templates - 脚本模板
/bin-可执行文件、配置文件
/doc - Jmeter API文档
/extras - 扩展插件目录,提供了对Ant的支持
/lib - 插件目录,存放Jmeter所依赖的外部jar
/lib/ext - Jmeter依赖的核心jar包、插件包
/lib/junit - junit测试脚本
/Licenses – 许可证书
/Printable_docs -用户使用手册
JMeter GUI运行模式:
在windows下运行jmeter.bat文件,直接启动Jmeter的GUI模式。
1. 添加组件
测试计划->线程组->Samples->查看结果数/聚合报告
2. 脚本调试
Soap UI中调试wsdl接口,Web Services Description Language, 是为描述Web服务发布的XML格式
3. 配置、执行、结果查看
JMeter 命令行运行模式:
在windows下运行cmd命令窗口,可以使用如下命令运行一个jmx文件,如下命令
Jmeter -n -t ../test.jmx -l jifenQuery.log -e -o E: Jmeter est estReport
参数说明:
-n:非GUI模式,即命令行的模式
-t:后跟测试文件,即jmx文件
-l:把测试的过程输出到log文件
-e:生成报告
-o:测试报告存放目录,必须是空目录
JMeter 命令行运行模式运行结果:
测试结束后会在指定的目录生成html格式的测试报告,打开文件index.html,即可在浏览器中展示图形化的报告。
JDBC(Java Database Connectivity)- Java数据库连接,是Java语言用来规范客户端程序如何访问数据库的应用程序接口,允许便捷式访问底层数据库。
JDBC API(JDBC应用程序接口)位于JDK的java.sql包中,可以直接调用SQL命令,同时提供了增删改查数据库中数据的方法,JDBC是面向关系型数据库的(MySQL、Oracle、Postgresql、SQLServer)。由于不同数据库软件是不同的,Java JDK不可能提供对每个数据库的具体实现,所以JDBC API的具体实现由不同的数据库生产厂商决定,这样数据库厂商可以根据JDBC API去实现各自的应用程序驱动。
解释说明:
Java API:
提供对JDBC的管理连接
Java Driver API:
支持JDBC管理到驱动器连接
DriverManager:
管理数据库驱动程序,查看驱动是否符合Java Driver API的规范
Driver:
驱动程序,处理相应的请求并返回数据库连接
Connection:
数据库连接,负责与数据库通信
Statement(声明):
执行SQL查询和更新
PreparedStatement(预声明):
执行包含动态参数的SQL查询和更新
CallableStatement(调用声明):
调用数据库中的存储过程
SQLException:
发生的异常情况
JDBC建立连接的步骤:
加载数据库驱动程序 ->建立连接 ->执行语句 ->处理结果 ->关闭连接
JDBC Connection Configuration界面分成五个部分:
名称和注释:可随便填写、最好是有意义的
Variable Name for created pool:定义连接池(连接池可以理解为连接的缓冲池)变量名,将 连接池配置保存到该变量中,需与JDBC请求中变量名一致,可以配置多个不同的连接池变量。
Connection pool Config:连接池配置,默认即可。
Connection Validation by Pool:验证配置,默认即可。Validation Query 一般选择 select 1,验证数据是否存在。
Database Connection Configuration:数据库URL、驱动类型、用户名、密码,需按规定格式
不同数据库的数据库连接配置:
JDBC驱动列表:
如何添加和查看JDBC驱动:
将下载的jar包直接添加到jmeter安装目录的lib目录中,其中ojdbc14.jar是oracle数据库的驱动程序jar包
解释说明:
名称:
JDBC请求的名称,可以自定义
variable name:
绑定JDBC连接配置中的变量,必须一致
select Statement:
查询声明,仅支持select语句,只执行一条语句
update statement:
更新声明,支持create、insert、update、drop、delete、drop语句,只执行一条语句
callable statement:
以标准形式调用存储过程
Prepared select statement:
用于为一条SQL生成测试计划
Commit:
提交未存储的数据(仅在内存,未写入磁盘的数据)
Rollback:
回滚未存储的数据
AutoCommit(false):
自动提交(假),操作一直在事务中,除非commit或rollback
AutoCommit(true):
自动提交(真),无论结果如何,直接自动提交。
参数绑定解释说明
Parameter values:
在SQL语句中需要使用变化的值时,可以用“?”替代变化值;然后在Parameter values 输入框中输入变量名或实际值。
Parameter types:
SQL参数类型(例如INTEGER,DATE,VARCHAR,DOUBLE)或常量的整数值的逗号分隔列表。当使用 Parameter values替换参数时,需要定义这些参数的类型填写参数类型。注:有多个?时,在Parameter values,Parameter types中用“,”依次隔开,Parameter types 必须填写,否则请求失败。
Variable Names:
以逗号分隔的变量名称列表,用于保存Select语句的返回值
Result Variable Name:
如果指定,将创建一个包含行映射列的Object变量。每个映射都包含列名称作为键,并包含列数据作为值。
Query timeout(s) :
设置查询超时时间(秒),空值表示0(不限制)。默认为0
Handle ResultSet :
定义如何处理执行SQL语句返回的结果集
1.开发Oracle数据库性能脚本
前置条件:有可用的oracle数据库及表
测试场景:往数据库大批量插入数据并查询
步骤1:创建测试计划,导入oracle数据库驱动包
步骤2:添加线程组,设置线程数,启动时间、循环次数
步骤3:在线程组下添加’JDBC Connection Configuration’配置元件,并设置相关信息
步骤4:创建JDBC Request,对数据库做插入操作
步骤5:在JDBC request ‘insert’下添加CSV Data Set Config配置元件,参数化要插入的数据
步骤6:添加监听器,添加”图形结果”、”查看结果树”、”聚合报告”
步骤7:执行,查看运行结果—查看结果树、聚合报告、图形结果
2.开发MySQL数据库性能脚本
前置条件:有可用的mysql数据库及表,
测试场景:往数据库大批量插入数据并查询
步骤1:创建测试计划,导入mysql数据库驱动包
步骤2:添加线程组,设置线程数,启动时间、循环次数
步骤3:在线程组下添加’JDBC Connection Configuration’配置元件,并设置相关信息
步骤4:创建JDBC Request,对数据库做插入操作
步骤5:在JDBC request ‘insert’下添加CSV Data Set Config配置元件,参数化要插入的数据
步骤6:添加监听器,添加”图形结果”、”查看结果树”、”聚合报告”
步骤7:执行,查看运行结果—查看结果树、聚合报告、图形结果
更多精彩干货分享
点击下方名片关注
IT那活儿
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129818.html
摘要:在这篇文章中,我们将通过使用来测试数据库访问并生成对应的测试报告,来学习使用这款性能测试工具。这两个参数可以用来控制具体测试的执行次数,比如将线程数设置为,重复执行次数设置为,那么相应测试将执行次。 ...
摘要:有了测试脚本,通过线程组来模拟真实用户对服务器的访问压力。不同的是,这些类型的线程执行测试结束后执行定期的线程组。线程组中包含的线程数量在测试执行过程中是不会发生改变的。逻辑控制器元件只对其子节点中的取样器和逻辑控制器作用。 工欲善其事必先利其器,要保证移动应用产品在上线之后能稳定运行于各种复杂环境,仅仅进行功能测试是远远不够的,压力测试越来越被应用开发商所重视。而压力测试从传统的内部...
摘要:将响应断言放入请求下,会对该请求调用的响应结果进行断言。异步调用,等待一定时间后获取调用结果数据某支持客户进行异步调用,先发送一个异步请求提交数据获取一个,然后隔一断时间后再使用获取到的请求上一个请求的返回结果需要用到定时器组件。 由于segmentfault编辑器上传图片错误,小编试过多种方式试图拯救,还是未能成功,所以如要看完整文章请至http://t.cn/R8njjaT mia...
用Jmeter做接口测试只需要掌握几个核心功能就可以了。 并不一定要把它所有的功能都掌握,先掌握核心功能入行,然后再根据工作需要和职业规划来学习更多的内容。这篇文章在前面接口测试框架(测试计划--->线程组--->请求--->查看结果树)的前提下,来介绍必须要掌握的几个核心功能,力求用最短的时间取得最大的成果。 在前面的文章中我提到,用Jmeter做接口测试的核心是单接口测试的参数化和关联接口测试...
阅读 1249·2023-01-11 13:20
阅读 1557·2023-01-11 13:20
阅读 1011·2023-01-11 13:20
阅读 1680·2023-01-11 13:20
阅读 3971·2023-01-11 13:20
阅读 2519·2023-01-11 13:20
阅读 1355·2023-01-11 13:20
阅读 3486·2023-01-11 13:20