Jmeter多接口测试性能测试
- 格式:doc
- 大小:952.00 KB
- 文档页数:14
jmeter性能测试实验报告JMeter 性能测试实验报告一、实验背景随着业务的不断发展,系统的性能成为了关键的关注点。
为了确保系统在高并发、大数据量等情况下能够稳定运行,满足用户的需求,我们使用 JMeter 工具对系统进行了性能测试。
二、实验目的本次性能测试的主要目的是评估系统的性能表现,包括但不限于以下方面:1、确定系统能够承受的最大并发用户数。
2、评估系统在不同并发用户数下的响应时间和吞吐量。
3、检测系统在高负载下是否存在性能瓶颈,如内存泄漏、CPU 利用率过高等。
4、为系统的优化和改进提供依据。
三、实验环境1、硬件环境服务器:_____客户端:_____2、软件环境操作系统:_____应用服务器:_____数据库:_____JMeter 版本:_____四、实验设计1、测试场景设计登录场景:模拟用户登录系统的操作。
搜索场景:模拟用户进行搜索的操作。
数据提交场景:模拟用户提交数据的操作。
2、并发用户数设置逐步增加并发用户数,从 100 开始,每次增加 100,直到系统出现性能瓶颈或达到预期的最大并发用户数。
3、测试数据准备准备足够的测试数据,包括用户账号、搜索关键词、提交的数据等,以确保测试的真实性和有效性。
4、性能指标监控监控服务器的 CPU 利用率、内存利用率、磁盘 I/O 等性能指标。
监控系统的响应时间、吞吐量、错误率等性能指标。
五、实验步骤1、启动 JMeter 工具,创建测试计划。
2、添加线程组,设置并发用户数和循环次数。
3、添加 HTTP 请求,配置请求的方法、路径、参数等。
4、添加监听器,用于收集性能指标数据,如聚合报告、查看结果树等。
5、配置服务器监控插件,监控服务器的性能指标。
6、运行测试计划,观察性能指标的变化。
7、根据测试结果,分析系统的性能表现,找出性能瓶颈。
六、实验结果及分析1、登录场景并发用户数为 100 时,平均响应时间为 2 秒,吞吐量为 50 次/秒,错误率为 0%。
jmeter性能测试报告一、测试环境。
本次性能测试是在一个典型的生产环境中进行的,测试服务器配置为,CPU 8核、内存 16GB、硬盘 500GB,操作系统为CentOS 7.0,Java版本为1.8。
测试使用的工具为Apache JMeter 5.1.1。
二、测试目标。
本次性能测试的主要目标是评估系统在高负载下的性能表现,包括并发用户数、响应时间、吞吐量等指标。
通过对系统的压力测试,发现系统的性能瓶颈,并对系统进行优化,以提高系统的稳定性和可靠性。
三、测试方案。
1. 测试场景设计,根据实际业务场景,设计了多个测试场景,包括用户登录、数据查询、提交订单等操作。
2. 测试数据准备,准备了符合实际业务的测试数据,以模拟真实用户行为。
3. 测试脚本编写,使用JMeter编写了测试脚本,模拟了不同的用户行为,并设置了不同的并发用户数。
4. 测试执行,在测试环境下执行测试脚本,记录测试过程中的性能数据。
四、测试结果。
1. 响应时间,在100个并发用户的情况下,系统的平均响应时间为2.5秒,最大响应时间为5秒。
2. 吞吐量,系统在高峰期的吞吐量为每秒处理100个请求,系统能够较好地支撑业务高峰期的访问量。
3. 错误率,系统在高负载下的错误率较低,仅为0.5%,表明系统具有较好的稳定性和可靠性。
4. 资源利用率,系统在测试过程中,CPU利用率在80%左右,内存利用率在60%左右,硬盘IO在正常范围内,系统资源利用率较为稳定。
五、测试分析。
通过对测试结果的分析,发现系统在当前的配置下,能够较好地支撑业务的高负载访问。
然而,随着用户量的增加,系统的响应时间有可能会进一步增加,因此建议在后续的优化中,对系统进行进一步的扩展和调优,以提高系统的性能和稳定性。
六、优化建议。
1. 系统性能优化,建议对系统的关键模块进行性能优化,包括数据库查询、接口调用等,以提高系统的响应速度。
2. 硬件资源扩展,可以考虑对服务器的硬件资源进行扩展,包括CPU、内存等,以提高系统的并发处理能力。
使用JMeter和Gatling进行性能自动化测试的比较性能测试是软件开发中非常重要的一环,通过模拟多种负载情况,评估系统在不同压力下的性能表现。
在性能测试中,JMeter和Gatling是两个常用的工具,它们具有自动化测试的特点,可以帮助开发人员快速、准确地评估系统性能。
本文将对JMeter和Gatling进行比较,并针对不同场景给出适合的选择。
一、JMeter介绍及特点JMeter是一款开源的性能测试工具,由Apache开发和维护,具有以下特点:1. 多协议支持:JMeter支持多种协议,包括HTTP、HTTPS、FTP、数据库等,可以对不同类型的应用进行测试。
2. 强大的图形化界面:JMeter提供了直观、友好的图形化界面,方便用户进行测试脚本的录制、编辑和执行。
3. 多种测试场景:JMeter可以模拟多种场景,包括负载测试、压力测试、功能测试等,可以满足不同层次的测试需求。
4. 可扩展性:JMeter支持插件扩展,用户可以根据需要自行编写插件,并集成到JMeter中进行使用。
二、Gatling介绍及特点Gatling是一款基于Scala语言开发的高性能负载测试工具,具有以下特点:1. 简洁的DSL语言:Gatling基于简洁易懂的领域特定语言(DSL)进行脚本编写,使得测试脚本可读性强、易于维护。
2. 强大的并发模拟:Gatling可以模拟高并发的场景,通过使用Akka框架实现异步IO,有效提高了性能。
3. 实时报告和统计:Gatling提供实时的图表报告和统计数据,用户可以清晰地查看系统性能指标,方便进行性能优化。
4. 高度可扩展:Gatling基于插件机制,用户可以根据需要自行开发和集成插件,实现更多自定义功能。
三、JMeter和Gatling的比较1. 编写脚本难度:JMeter使用基于树形结构的GUI进行脚本编写,适合初学者上手,但对于复杂场景的测试脚本编写较为繁琐。
相比之下,Gatling采用简洁的DSL语言,提供了更为清晰、易读的脚本编写方式,能够更好地应对复杂场景的需求。
Jmeter(五)Jmeter接⼝测试和压⼒测试 jmeter是apache公司基于java开发的⼀款开源压⼒测试⼯具,体积⼩,功能全,使⽤⽅便,是⼀个⽐较轻量级的测试⼯具,使⽤起来⾮常简单。
因为jmeter是java开发的,所以运⾏的时候必须先要安装jdk才可以。
jmeter是免安装的,拿到安装包之后直接解压就可以使⽤,同时它在linux/windows/macos上都可以使⽤。
jmeter可以做接⼝测试和压⼒测试。
其中接⼝测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传⽂件)、做webservice脚本、参数化、断⾔、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。
接⼝测试Jmeter-http接⼝脚本⼀般分五个步骤:(1)添加线程组(2)添加http请求(3)在http请求中写⼊接⼊url、路径、请求⽅式和参数(4)添加查看结果树(5)调⽤接⼝、查看返回值jmeter 发get请求jmeter 发post请求jmeter 添加cookie需要在线程组⾥添加配置元件—HTTP Cookie 管理器jmeter 添加header需要在线程组⾥⾯添加配置元件—HTTP信息头管理器jmeter 上传⽂件jmeter 参数化⼊参经常变化的话,则可以设置成⼀个变量,⽅便统⼀修改管理;如果⼊参要求随机或可多种选择,则通过函数⽣成器或者读取⽂件形成⼀个变量。
所以参数化有三种⽅式:⽤户定义的变量、函数⽣成器、读取⽂件。
(1)⽤户定义的变量 需要添加配置元件-⽤户定义的变量。
(2)函数⽣成器 需要⽤到函数助⼿功能,可以调⽤函数⽣成⼀些有规则的数据。
常⽤的⼏个函数有_uuid、_random、_time。
_uuid会⽣成⼀个随机唯⼀的id,⽐如在避免java请求重发造成未处理数据太多的情况,接⼝请求可加⼀个唯⼀的请求id唯⼀的响应id进⾏⼀⼀对应;随机数_random,可以在你指定的⼀个范围⾥取随机值;取当前时间_time,⼀些时间类的⼊参可以使⽤,如{__time(,)} 是⽣成精确到毫秒的时间戳、{__time(/1000,)}是⽣成精确到秒的时间戳、${__time(yyyy-MM-dd HH:mm:ss,)} 是⽣成精确到秒的当前时间。
JMeter性能测试时常见的问题及解决方法随着互联网技术的发展,各种应用程序越来越依赖于高可靠、高效率和高稳定性的服务基础设施。
而在这个基础设施中,性能测试被视为保障应用程序正常运行的首要步骤之一。
JMeter是一个开源的性能测试工具,它能够模拟高并发情况下的用户访问行为,通过测量应用程序的性能指标,提供有用的测试结果和反馈。
但是,JMeter测试也有一些常见的问题需要解决。
本文将详细介绍JMeter性能测试时常见的问题及解决方法。
1.运行时长过长在使用JMeter进行性能测试时,有时候测试时间过长,可能会影响测试效率和准确性。
这个问题的解决方法有两个方面。
首先,考虑减少测试范围和测试数据的数量,选择不同的测试方案,提高测试覆盖率和测试效率。
其次,合理设置JMeter参数和属性,包括线程数、循环次数、请求失效时间等,对性能测试进行优化,缩短测试运行时间。
2.虚拟用户数量不足虚拟用户是JMeter性能测试的核心组成部分,可以模拟真实用户的访问场景、负载和行为。
JMeter默认设置的虚拟用户数较少,无法模拟高级负载或高并发环境。
因此,需要根据测试需求,根据应用程序的性能能力、机器配置和资源情况,适当调整虚拟用户数。
一般建议将虚拟用户数量设置为能够提供充分测试数据的最佳值,以便更全面地测试应用程序的性能和可靠性。
3.测试过程中的错误提示在JMeter性能测试过程中,可能会遇到各种错误提示或异常情况,例如Request Failed、Connection Refused、HTTP Error等。
这时,需要根据错误提示信息,及时分析问题原因,对测试环境进行调整和解决。
避免意外错误时,建议注意以下几点:a) 确保目标服务器状态正常、线路畅通、网络连接稳定;b) 检查测试脚本和请求参数是否正确,是否匹配目标系统的配置要求;c) 分析一些特定的故障现象,如请求拒绝服务(DoS Attack)等,严格区分正常、异常、恶意流量,规避潜在的安全风险。
Jmeter性能测试方法By 杨会会 2011-11-15目前进行性能测试的工具有很多,LoadRunner,就是常用的性能测试工作,它功能强大,有强大的分析工具,但是安装起来却费事又费力。
而jmeter是一个轻量级的代理LR 的性能测试工具。
区别1.Jmeter与LRApache Jmeter是一个100%的纯java桌面应用,用于压力测试和性能测试。
Jmeter最早是为了测试Tomcat的前身JServ的执行效率而诞生的,主要是针对web的压力和性能测试,但后来扩展到其他测试领域。
从下面的图中我们可以看到:Jmeter可以用于测试FTP、HTTP、RPC、JUNIT、JMS、LDAP、WebService(Soap) Request以及Mail和JDBC(数据库压力测试)。
同时, JMeter可以帮助你对你的应用程序进行回归测试. 通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值. 为了更高的适应性, JMeter允许你使用常规表达式来创建这些assertions.3.性能测试的流程性能测试的流程都差不多,搭建环境,设计场景,找到适合的工具,录制编写脚本,进行测试,最后对结果进行分析。
下面就针对整个流程进行讲述。
3.1.搭性能测试环境。
性能测试的环境要在合适的机器上搭建,首先机器不能配置太差,比如虚拟机之类的就最好不要是用了。
其次机器不要运行的程序太多,空机器就最好了。
如果是为了测试线上机器的使用,最好在线下配置与线上的环境有相近的CPU核数,内存大小等。
3.2.确定测试场景根据项目的特定,跟PM与RD,最好叫上O P确定需要测试的场景。
需要多少人并发,并发多长时间。
以及可以接受的数据,比如50人并发,登录按钮反应时间在3s内可接受等,这些数据是我们进行性能测试的参考。
根据这些数据,可以确定压力的极限,并推测机器的负载。
3.3.录制脚本搭建好环境,确定场景之后,就是录制脚本的阶段了。
jmeter接口测试面试题JMeter是一个开源的性能测试工具,广泛应用于接口测试领域。
接下来,本文将为您提供一系列与JMeter接口测试相关的面试题及详细解答,帮助您更好地掌握JMeter接口测试知识。
1. 什么是JMeter接口测试?JMeter接口测试是指使用JMeter工具对系统接口进行测试。
通过模拟并发用户请求、监控接口响应时间和吞吐量等指标,可以检测接口性能、可靠性和稳定性,从而发现潜在的问题并进行优化。
2. JMeter的主要特点有哪些?- 开源免费:JMeter是一个开源项目,用户可以免费使用,并且具有活跃的社区支持。
- 跨平台:JMeter可以运行在Windows、Linux和Mac等多个操作系统上。
- 多协议支持:JMeter支持HTTP、FTP、SOAP、REST等多种协议,可以对各种类型的接口进行测试。
- 分布式测试:JMeter支持分布式测试,可以使用多台机器模拟大量并发用户请求。
- 插件扩展性:JMeter提供了丰富的插件,可以扩展功能,满足不同场景的测试需求。
3. JMeter的工作原理是什么?JMeter通过模拟多个并发用户发送请求,对目标系统进行压力测试。
其工作流程如下:- 创建测试计划:定义测试场景、设置线程组、添加Sampler(采样器)、配置监听器等。
- 设置属性和参数:指定请求的URL、请求方式、请求头、请求体等参数。
- 添加断言:对接口响应结果进行校验,判断是否符合预期。
- 启动测试:点击“开始”按钮,启动测试计划。
- 监控测试结果:JMeter通过监听器实时监控接口的响应时间、吞吐量、错误率等指标。
- 停止测试:测试完成后,点击“停止”按钮,停止测试。
4. JMeter中的Sampler和Listener分别是什么作用?- Sampler(采样器):Sampler用于模拟并发用户向目标接口发送请求,并获取接口的响应结果。
常用的Sampler有HTTP Request、FTP Request、SOAP/XML-RPC Request等。
JMeter(Apache JMeter)是一个用于对软件进行性能测试的开源工具。
它最初被设计用来对 Web 应用程序进行性能测试,但随着不断的发展,JMeter 已经可以用于对其他类型的软件进行测试。
JMeter 支持在多种不同的服务器或客户端环境下执行各种不同负载类型的性能测试。
下面将介绍JMeter测试活动的用法,包括测试准备、测试执行和结果分析等流程。
一、准备测试1. 安装JMeter在开始测试之前,您需要安装JMeter。
您可以从JMeter的冠方全球信息站上下载最新的JMeter版本,并按照冠方文档进行安装。
2. 创建测试计划在JMeter中,您需要先创建一个测试计划。
测试计划是测试活动的基础,它包含了所有的测试元素,比如线程组、控制器、监听器等。
您可以在JMeter中创建一个新的测试计划,并为其命名。
3. 添加线程组线程组用来模拟并发用户的请求。
您需要在测试计划中添加一个线程组,并配置线程组的属性,比如线程数、循环次数、启动时间和持续时间等。
4. 添加配置元件在JMeter中,配置元件用来配置测试环境,比如添加HTTP请求默认值、用户定义的变量、CSV数据文件配置等。
您可以根据您的测试需求,添加不同的配置元件。
5. 添加实际的请求在JMeter中,您可以添加不同类型的请求,比如HTTP请求、FTP请求、JDBC请求等。
您需要根据您的测试目标,添加相应的请求,并配置请求的属性,比如服务器名称、端口号、路径等。
二、执行测试1. 启动测试在JMeter中,您可以通过单击“启动”按钮来开始测试。
JMeter会按照您配置的线程组和请求,模拟并发用户的请求,向被测系统发送请求。
2. 监控测试过程在测试执行过程中,您可以通过JMeter的各个监听器来监控测试的进度和性能数据。
JMeter 提供了许多不同的监听器,比如聚合报告、图形结果、查看结果树等。
您可以根据需要选择合适的监听器,实时监控测试的执行情况。
JMeter性能测试:JMeter多⽤户并发模拟及压测结果分析⽬录JMeter多⽤户并发模拟JMeter设置多⽤户并发数的多少与计算机内存有关,设置 jmeter.bat (Windows) 或者 jmeter.sh (Linux):Windows设置:编辑jmeter.bat⽂件,设置HEAPLinux设置:编辑jmeter.sh⽂件,设置变量,JVM_ARGS="-Xms1g-Xmx2g"以Windows为例,设置set HEAP=-Xms1g -Xmx2g -XX:MaxMetaspaceSize=256m,重新开启JMeter,打开Java监控⼯具Jconsole:参数设置⽣效。
JMeter线程组JMeter性能测试任务都是基于线程组的,是性能测试的资源调度池,控制性能测试的运⾏调度、虚拟⽤户数(并发数)、执⾏策略。
JMeter线程组主要有三类:setUp Thread Group:普通线程组执⾏之前执⾏,相当于pytest测试框架的setup⽅法。
Thread Group:普通线程tearDown Thread Group:普通线程组之后执⾏。
JMeter压测实例⾸先使⽤python开启⼀个http服务:(base) C:\Users\10287>python -m http.server 80Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...新建线程组,设置线程数,点击运⾏View Results TreeThread Group -> Add -> Listenter -> View Results Tree⽀持各种测试器:正则表达式、CSS选择器、XPath测试、JSON Tester等Aggregate Report查看Aggregate Report,聚合报告Thread Group -> Add -> Listenter -> Aggregate Report参数:Average:平均响应时间,所有请求的平均响应时间。
jmeter性能测试重要指标以及性能结果分析⼀、Aggregate Report 是常⽤的⼀个 Listener,中⽂被翻译为“聚合报告如果⼤家都是做应⽤的,例如只有⼀个登录的请求,那么在Aggregate Report中,会显⽰⼀⾏数据,共有10个字段,含义分别如下。
1、Lable:每个Jmeter的element(例如Http Request)都有⼀个Name属性,这⾥显⽰就是Name属性的值2、Samples:表⽰这次测试⼀共发出了多少次请求,如果模拟10⽤户,每个⽤户迭代10次,那么这⾥显⽰1003、Average:平均响应时间--默认情况下是单个Request的平均时间,当使⽤了Transaction Controller时,也可以以Transaction为单位显⽰平均响应时间4、Median:50%⽤户响应时间5、90%Line:90%⽤户的响应时间6、Min:最⼩响应时间7、Max:最⼤响应时间8、Error%:本次测试出现错误的请求的数量/请求总数9、Troughput:吞吐量---默认情况下表⽰每秒完成的请求数量(Request per second),当使⽤了Transaction Controller时,也可以表⽰类似Loadruner的Transaction per second数10、KB/Sec:每秒从服务器端接收的数量,相当于Loadrunner的Throughput/Sec⼆、描述性统计与性能结果分析疑惑点:90%响应时间是什么意思?这个值在进⾏性能分析时有什么作⽤?为什么要有90%⽤户响应时间?因为在评估⼀次测试的结果时,仅仅有平均事务响应时间是不够的。
为什么这么说?你可以试着想想,是否平均事务响应时间满⾜了性能需求就表⽰系统的性能已经满⾜了绝⼤多数⽤户的要求?假如有两组测试结果,响应时间分别是 {1,3,5,10,16} 和 {5,6,7,8,9},它们的平均值都是7,你认为哪次测试的结果更理想?假如有⼀次测试,总共有100个请求被响应,其中最⼩响应时间为0.02秒,最⼤响应时间为110秒,平均事务响应时间为4.7秒,你会不会想到最⼩和最⼤响应时间如此⼤的偏差是否会导致平均值本⾝并不可信?为了解答上⾯的疑问,我们先来看⼀张表:在上⾯这个表中包含了⼏个不同的列,其含义如下:CmdID 测试时被请求的页⾯NUM 响应成功的请求数量MEAN 所有成功的请求的响应时间的平均值STD DEV 标准差(这个值的作⽤将在下⼀篇⽂章中重点介绍)MIN 响应时间的最⼩值50 th(60/70/80/90/95 th) 如果把响应时间从⼩到⼤顺序排序,那么50%的请求的响应时间在这个范围之内。
JMeter测试报告⼀、聚合报告1、90%百分位值为230ms,在发送100笔请求过程中,聚合报告会实时给请求耗时进⾏由⼩到⼤⾏排序,排序后的第90个请求耗时为230ms,也就是说前90笔请求中耗时最长的是230ms(其余90%百分位,95%百分位道理类似就不占篇赘述了),聚合报告平均值要与百分位值结合来看。
2、经常有的同学直接把聚合报告中的吞吐量当作TPS来看,这种做法是相当不严谨的。
那么聚合报告中的吞吐量什么情况下可以看成TPS?从严格意义来讲就是交易成功率为100%;还有⼀种情况是:交易失败率在你可以接受的范围内(对当前测试整体结果影响不⼤,到了可以忽略的程度)。
⼆、html报告性能测试⼯具Jmeter由于其体积⼩、使⽤⽅便、学习成本低等原因,在现在的性能测试过程中,使⽤率越来越⾼,但其本⾝也有⼀定的缺点,⽐如提供的测试结果可视化做的很⼀般。
不过从3.0版本开始,jmeter引⼊了Dashboard Report模块,⽤于⽣成HTML类型的可视化图形报告(3.0版本的Dashboard Report模块会中⽂乱码,因此建议使⽤3.0以上的版本)。
1、利⽤已有.jtl⽂件⽣成报告之前的博客介绍过如何在,如果已经有经过测试⽣成的.jtl⽂件,可以利⽤该⽂件直接⽣成HTML可视化测试报告。
进⼊jmeter的bin⽬录下,输⼊如下命令:jmeter -g test.jtl -o /path# -g:后跟test.jtl⽂件所在的路径# -o:后跟⽣成的HTML⽂件存放的路径PS:如果是在Windows环境命令⾏运⾏,必须指定⽣成的HTML⽂件存放⽂件夹,否则会报错;如果是linux环境,如指定路径下不存在该⽂件夹,会⽣成对应的⽂件夹存放报告⽂件!2、⽆.jtl⽂件⽣成测试报告如果还未⽣成.jtl⽂件,则可以通过如下命令,⼀次性完成测试执⾏和⽣成HTML可视化报告的操作,进⼊jmeter的bin⽬录下,输⼊如下命令(linux系统和windows系统命令⼀样)需要注意的是,⽣成的.jtl⽂件路径下,不能存在同名的.jtl⽂件,否则会执⾏失败。
jmeter性能测试⾯试题⼆【多测师_王sir】1.什么是性能测试?测试系统有没有性能问题考虑时间,空间服务端资源是否⾜够?响应时间是否超时?系统是否⾜够稳定?2.性能测试的核⼼原则是什么?基于协议,多线程,场景设计协议:所有的请求都是基于协议发出去 http,https,udp,tcp,mqtt多线程:压⼒测试是基于java多线程原理,通过线程去模拟⽤户的⾏为基于场景:控制器+定时器设计各种场景满⾜压测要求并发场景负载场景稳定性压⼒测试。
jmeter⼯作原理:基于协议,通过多线程的⽅式模拟⽤户⾏为,设计各种场景压测服务端,得到性能数据,分析性能瓶颈3.性能测试的应⽤领域有哪些?能⼒验证:⼄⽅向甲⽅交付项⽬时,声明项⽬的性能数据。
例如:向甲⽅声明能⽀撑500⼈1s内同时登录,响应时间在2s以内。
出具性能测试报告去证明我声明的能⼒。
瓶颈分析:在能⼒验证的过程中可能会发现⼀些瓶颈,通过技术⼿段分析瓶颈,得到分析数据,为后续调优做理论依据。
响应超时:什么负载量的时候出现超时现象?tps达到瓶颈,波动剧烈:tps瓶颈点在哪⾥?,在什么地⽅出现性能衰减?性能调优:在得到瓶颈分析数据之后,做性能调优。
降低超时,提⾼tps,减少抖动。
容量规划:基于未来。
为将来的⽤户激增提前做准备数据库扩容服务端硬件优化(增加cpu,扩充磁盘,提升带宽,分布式,负载均衡。
)4.压⼒⼯具的⼯作原理是什么?jmeter⼯作原理:基于协议,通过多线程的⽅式模拟⽤户⾏为,设计各种场景压测服务端,得到性能数据,分析性能瓶颈5.性能测试基本思路是什么?测什么:明确测试⽬标(明确需求)怎么测:怎么设计场景?测试计划,测试⽤例,测试⽅案数据准备参数化,表达式,断⾔场景设计(并发,负载,压测)得到性能测试结果测试结果验证验证结果数据是否符合预期如果预期响应时间是3s,但是实际结果响应时间达到了5s 不合格预期最⼤tps需要达到500,但是实际最⼤的tps只有300 不合格6.交付⼀个性能测试项⽬,请阐述你的性能测试流程1:明确测试需求2:基于需求设计测试⽤例,测试⽅案,测试计划3:准备测试数据,测试账号(预估并发量),设计测试脚本(参数化,表达式,断⾔,控制器)4:运⾏测试脚本,数据监听(响应时间,tps,活动线程),结果分析(判断性能瓶颈)5:基本性能瓶颈做调优(tomcat线程池,jvm内存,swap内存,带宽)6:调优之后做性能回归,和前期结果做对⽐,是否有明显的优化。
jmeter如何进⾏性能测试jmeter⼯具除了可以进⾏接⼝功能测试外,还可以进⾏性能测试。
当项⽬趋于稳定,根据性能需求就可以着⼿准备性能测试了,今天就说⼀说jmeter如何进⾏性能测试,jmeter进⾏性能测试的前提是接⼝的功能逻辑是通的,没有阻塞bug。
第⼀步:设置线程数量第⼆步:添加事务控制器根据业务场景设置事务,将需要进⾏并发测试的接⼝拖拽到事务控制器节点下,输出性能测试报告后可以查看该事务的性能测试结果第三步:设置同步定时器,同步定时器主要设置两个参数Number of Simulated User to Group by:每组模拟的⽤户数,⽤来控制⽗节点请求的最⼤并发数是多少,如果设置为50,表⽰最⼤50个线程并发执⾏;Timeout in milliseconds:超时时间(毫秒),如果设置为3000,表⽰如果3秒内50个线程到达⽗节点则⽴即并发运⾏。
如果30内未达到50个线程,则有多少线程并发执⾏多少线程。
第四步:添加监听器Graph Results:图形结果,查看运⾏趋势View Results in Table:⽤表格查看结果,查看运⾏的明细Summary Report:聚合报告,统计响应信息并提供请求数,平均值,最⼤,最⼩值,错误率,⼤约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量Transactions per Second:每秒事务数,每秒钟系统能够处理的交易或事务的数量,它是衡量系统处理能⼒的重要指标。
Hits per Second:每秒点击率,象征着压⼒⼤⼩第五步:通过⾮GUI模式运⾏脚本,并分析性能测试报告,输出测试结果性能测试评价:真对增加稿件事务进⾏1000UV并发测试时,平均事务响应时间1.67秒,最⼤2.99秒,均符合需求(<3秒),但是CPU使⽤⾥⼤于80%,存在瓶颈;期间由于连接服务器失败(Non HTTP response code: .ConnectException/Non HTTP response message: Connection refused: connect),导致错误率达到了31.2%,远超5%,存在瓶颈。
使⽤Jmeter测试Dubbo接⼝(参数设置篇)
WebSocket接⼝需要下载dubbo插件才能使⽤
本次下载的版本为jmeter-plugins-dubbo-1.3.6,下载完成后jar⽂件放到\lib\ext⽬录下
由于⼯作需要,最近需要对dubbo接⼝进⾏测试,查询了很多资料,最后调试通过,记录下
以前也⽤Jmeter对dubbo接⼝进⾏过测试,需要使⽤java语⾔编写⽅法调⽤dubbo接⼝,然后创建⼀个Maven项⽬,⽣成依赖的jar包,在把jar包放到Jmeter的lib ⽬录,然后在java类型请求中,就可以看到⾃定义的java请求,及其繁琐,耗时
⼀、添加线程组
1. 添加线程组等其他元件
添加线程组,Jmeter执⾏是通过线程组进⾏驱动的,测试计划必须最少有⼀个线程组,选中Test Plan,点击右键,添加》Threads》线程组
⼆、依次添加如下请求
1. 添加创建连接请求-选中线程组,点击右键,添加》Sampler》Dubbo Sample
json格式参数
⾮json格式参数
⾮json格式参数、⽆参
添加断⾔,判断响应信息中是否包含"已实名"返回信息,选中该Dubbo请求,点击右键,添加》断⾔》响应断⾔,输⼊预期结果
三、添加察看结果树
察看结果树⽤来察看每次响应结果的响应数据,选中线程组,点击右键,添加》监听器》察看结果树
脚本到此开发完成,可以进⾏性能测试,或者⽤于接⼝⾃动化测试
以上内容摘⾃:https:///6183574/2323194
以下内容为实践
dubbo接⼝,参数数据类型为String
Jmeter中dubbo sample参数写法如下图:。
全⽹最全最细的jmeter接⼝测试教程以及接⼝测试流程详解⽬录:导读⼀、Jmeter简介⼆、Jmeter安装三、设置Jmeter语⾔为中⽂环境四、Jmeter主要元件五、Jmeter元件的作⽤域和执⾏顺序六、Jmeter进⾏接⼝测试流程七、Jmeter进⾏接⼝测试流程步骤详解⼋、Jmeter接⼝测试必定⽤到的扩展阅读九、总结⼀、Jmeter简介Jmeter是由Apache公司开发的⼀个纯Java的开源项⽬,即可以⽤于做接⼝测试也可以⽤于做性能测试。
Jmeter具备⾼移植性,可以实现跨平台运⾏。
Jmeter可以实现分布式负载。
Jmeter采⽤多线程,允许通过多个线程并发取样或通过独⽴的线程对不同的功能同时取样。
Jmeter具有较⾼扩展性。
⼆、Jmeter安装1、安装JDK,必须JDK1.7以上的版本,推荐1.8的版本3、配置Jmeter的环境变量。
(1) 新增变量:JMETER_HOME:D:\apache-jmeter-5.2.1(2) 在CLASSPATH变量的最前⾯加⼊如下变量: %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;(3)在PATH变量的最前⾯加⼊如下变量:%JMETER_HOME%\bin;4、进⼊D:\apache-jmeter-5.2.1\bin,双击jmeter.bat,或在dos窗⼝输⼊jmeter命令打开jmeter界⾯,安装成功。
对于真正的零基础来说:安装请按如下步骤完成:windows下安装jmeter? mac下安装jmeter? So Easy那多不是事!写给jmeter⼊门的朋友!三、设置Jmeter语⾔为中⽂环境1、临时设置Jmeter菜单栏选择OptionsàChoose LanguageàChinese (Simplified)这种⽅法,重启软件后⼜变为英⽂环境了。
jmeter接⼝性能测试【CSV⽂件读取+接⼝关联+设置集合点】⼀、前⾔周计划上安排了个接⼝性能测试的任务,便开始了职业⽣涯的第⼀个接⼝性能测试。
接⼝进⾏压测之前,⾸先需要调通脚本。
有两种⽅式,⼀种是通过抓包⼯具(如fiddler)抓取业务接⼝;另⼀种是通过jmeter进⾏脚本录制。
两者分别有各种的优缺点:(1)Fiddler⼿⼯抓包:【优点】直接抓取业务接⼝;【缺点】对于性能测试⼩⽩可能⽐较困难(⽐如笔者⾃⾝,很难找到业务接⼝间的关联关系);(2)Jmeter录制脚本:【优点】各业务接⼝间的关联关系可以从脚本中体现;【缺点】需要⾃⼰过滤⽆关紧要的相关接⼝(如下图中圈出部分已禁⽤的接⼝);因笔者还是性能测试⼩⽩,所以选择了⽤jmeter进⾏脚本录制这种⽅式。
⼆、脚本录制根据性能测试要求,对所需要测的业务系统进⾏分析⼤概有多少个事务。
如上图,分析得出业务系统有信息⾃检、填写信息、填写表单、上传材料、提交办件这5个事务。
在测试计划下添加HTTP请求默认值、察看结果树、聚合报告,接下来添加线程组。
(1)测试计划右键添加线程组(2)线程组右键新增事务控制器添加事务控制器后,在录制脚本时,可以在“⽬标控制器”中选择对应的事务。
Generate parent sample:是否⽣成⼀个⽗取样,即将事务控制器下的请求看成⼀个整体(⼀般勾选该选项)。
勾选后,在察看结果树和聚合报告中,只显⽰事务名称,不显⽰事务下具体的请求。
(3)⼯作台右键添加HTTP代理服务器,(对应浏览器设置代理后)选择对应的⽬标控制器,并启动录制。
启动录制后,可去业务系统进⾏相关操作,此时jmeter会录制相关的脚本,产⽣的脚本就会显⽰在对应事务下,如图中“信息⾃检”下的很多接⼝,就是录制产⽣的。
事务操作结束后,记得回到jmeter代理服务器页⾯停⽌录制,此时该事物的脚本录制结束。
PS:上图中,事务“基本信息”、“填写表单”、“上传材料”、“完成”的录制步骤同上,此处不过多描述。
一、接口业务流程1、获取token接口http://192.168.1.4:9900/rest/getToken/2、获取图片链接口http://192.168.1.4:9900/regist/getImagePath/?token=89bd9d88f4f3421c9e639dfab0c a423c&type=fql返回数据:{"msg": "\u6210\u529f", "code": 0, "detail": {"image_path":"/images/regist/20160822/img1471837595.25.jpg"}}3、获取图片验证码接口http://192.168.1.4:9900/images/regist/20160822/img1471850521.18.jpg4、获取注册结果接口http://192.168.1.4:9900/regist/imageView/?imagecode=zds4&phone=182********&t oken=89bd9d88f4f3421c9e639dfab0ca423c&type=fql二、JMETER的使用1、基本操作1.1、新增测试计划新增线程组,接着在该线程组下方新增4个“HTTP请求”(添加-Sampler-HTTP请求),再在该线程组下方添加“察看结果树”(添加-监听器察看结果树)。
也可以在每个HTTP请求下方添加“察看结果树”,方便找到需要正则或参数化的数据。
一个完整的测试计划诞生了,如下图2.1所示图2.11.2、配置HTTP请求以上图中的“HTTP请求01”为例进行说明。
在HTTP请求窗口中的Basic标签页面上输入服务器名称或IP、端口号和路径(路径URL地址端口号后面的),其他默认,如下图2.2-1所示。
此时可以执行下然后在当前的HTTP请求01的察看结果树里检查接口是否能正常访问(如下图2.2-2所示)。
图2.2-1图2.2-21.3、使用正则表达式还是以上图2.2-1中的“HTTP请求01”为例进行说明。
因为这个接口会得到一个动态值,而且这个动态值会被其他接口使用。
在上图 2.2-2中得到一个响应数据:{"msg": "\u6210\u529f", "code": 0, "detail": {"token": "a53b93507c9d4f3fa43de4a44073bbb6"}}。
在使用第二个接口(HTTP请求02)时需要一个参数值token,而这个值必须调用第一个接口后才能获取到。
如果让其他接口使用这个动态值,那么我们就需要在第一个接口(HTTP 请求01)上使用正则表达式来获取这个返回值。
A、首先在第一个“HTTP请求01”上点击添加后置处理器-正则表达式提取器,如下图3.3-1所示图3.3-1B、在下图3.3-2中输入“引用名称”(自定义数据名称,在其他接口中会用到)、“正则表达式”、“模板”、“匹配数字(0代表随机)”,其他默认。
图3.3-2说明:正则表达式可以看做是LR中的手动关联,从“察看结果树”-“响应数据”区域找到返回值:{"token": "a53b93507c9d4f3fa43de4a44073bbb6"}。
这条字符串就是需要关联的,所以正则表达式输入为:"token": "(.+?)"。
其他的不解释,照写即可,哈哈。
完成以上设置后运行下JMETER,在“察看结果树”区域察看结果是否正确(绿色表示正确)。
C、在第二个接口(获取图片地址)中需要这个正则后的数据,此时在“HTTP请求2”的Basic标签页面的Parameters区域添加接口参数(token和type),其中token值使用接口1中的正则表达式中的变量名(token),此token值为${token},如下图3.3-3所示。
最后保存并执行,如果HTTP请求2(获取图片地址)的响应数据显示为绿色则表示设置成功。
图3.3-3同理,HTTP请求3(获取验证码)接口中需要动态生成的图片地址,那么就需要设置HTTP请求2(获取图片地址)接口中的正则表达式,然后再在HTTP请求3接口中的URL 地址上引用接口2的正则变量即可。
1.4、变量参数化此业务流程是首先获取token然后得到图片地址,接着获得验证码,最后得出注册信息。
在HTTP请求4(获取注册信息)的接口信息中发现多了一个手机号(phone)。
如果想得到不同手机号对应的注册信息,那么就需要对接口4的手机号进行变量参数化。
A、在HTTP请求4上添加“配置元件-CSV Data Set Config”,如下图4.4-1所示图4.4-1B、元件添加成功后,使用TXT新建一个CSV文件(注意,这里必须使用TXT文件然后另存为CSV文件,不然执行时会报错全是乱码)。
在CSV文件中输入多个值(这里是手机号,一行显示一条手机号,我在CSV文件中写了5个不同的手机号),然后保存CSV文件(记住存放路径)。
C、新建CSV文件后,切换到刚才添加成的CSV Data Set Config窗口,在“Filename”输入CSV的存放地址(包括CSV文件名称),在Variable Names(comma-elimited)中输入自定义的变量名称(此变量会用到HTTP请求4的参数值中,我这里设置为phonenum),其他默认,如下图4.4-2所示图4.4-2D、现在切换到HTTP请求4(获取注册信息)窗口中,在Parameters标签页面中添加4个参数(因为此接口带4个参数)imagecode、token、type、phone。
参数值分别是zds4、${token(HTTP请求1中的正则表达式)、fql、${phonenum}(刚刚设置的参数化),如下图4.4-3所示图4.4-31.5、循环次数我们之前在HTTP请求4(获取注册信息)中设置了手机号的参数化(CSV文件中包含5个不同的手机号),现在返回到当前测试计划下的线程组窗口中。
在线程属性区域输入线程数、Ramp-Up Periond(in seconds)和循环次数即可。
最后运行查看当前线程组下的察看结果树结果是否正常。
1.6、并发之集合点可以在线程组的任意位置添加集合点。
集合点可以和线程组的“线程属性”和“调度器”结合使用,主要是为了保证所有的用户能到达集合点并能发生并发。
添加方法:1、鼠标右键-定时器-Synchronizing Timer,如下图所示2、接着在Synchronizing Timer界面中的“Number of Simulated Users to Grounp by:”输入并发数(表示当X个用户到达此集合点时就开始并发),如下图所示注意:集合点中的并发数最好能被线程组中设置的用户数整除(线程用户数%并发数=0),不然跑脚本会报错。
集合点在线程组中可以随意拖动,放在请求前面。
1.7、测试计划组成图1在上图1中可以禁用单个HTTP请求中的“察看结果树”(如下图2所示),这样看上去更直观。
因为我们需要的是最终结果。
图22、资源监控2.1、监控Tomcat服务使用jmeter的tomcat监视器功能,可以通过向tomcat的status页面发送get请求,得到资源使用信息,然后转换为只直观的图像方式,这样的话,就可以监视到服务器的资源使用情况,不过需要注意的是,要使用tomcat监视器功能,就必须在要监视的服务器上装有tomcat。
1、配置/conf/tomcat-users.xml,内容如下<?xml version='1.0' encoding='utf-8'?><tomcat-users><role rolename="manager-gui"/><role rolename="manager-script"/><role rolename="manager-jmx"/><role rolename="manager-status"/><user username="admin" password="admin" roles="manager-gui"/><user username="admin" password="admin" roles="manager-script"/><user username="admin" password="admin" roles="manager-jmx"/><user username="admin" password="admin" roles="manager-status"/> </tomcat-users>2、配置/conf/context.xml,内容如下<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Manager pathname="/manager" debug="0" privileged="true" docBase="/home/tomcat-9900/webapps/manager" /><Valve className="etConnectionManagerValve" /></Context>注意:配置完成后先访问http://192.168.24.172:9900/manager/status,检查是否配置成功。
3、打开Jmeter在线程组下添加“配置元件-HTTP授权管理器”,在HTTP授权管理的“基础UR L”中输入http://192.168.24.172:9900/manager/status,用户名为上面新建的admin,密码是admin,其他默认,如下图所示4、接着在当前线程组下添加“HTTP请求”,输入被检测服务器中的TOMCAT访问IP和端口号;路径输入/manager/status;请求参数输入XML(必须大写),值为true,如下图A1所示并且将此HTTP请求设置为“用作监视器”,如下图A2所示图A1图A25、接着在当前HTTP请求下添加“监视器结果”和“察看结果树”,如下图所示6、最后运行JMETER脚本,此时进入到“监视器结果”界面可以看到被测服务器IP和资源(图片),如下图所示2.2、监控linux资源1、首先下载JMeterPlugins-Extras-1.4.0和JMeterJMeterPlugins-Standard-1.3.1插件(下载地址:https:///downloads/old/)2、然后将解压出来的JAR包放到Jmeter/lib/ext目录下3、再下载ServerAgent-2.2.1.zip(默认端口4444,下载地址:/lsjdddddd/p/5709052.html)并部署到Linux下4、在Linux下进入到ServerAgent目录下启动服务:sh startAgent.sh5、打开Jmeter在HTTP请求下添加“监视器”即可看到JP@开头的监视元素6、监控Linux服务器资源添加“jp@gc-PerMon Metrics Collector”,然后输入Linux的IP,端口号4444,和要监控的资源,如下图所示注意:监控完一次服务器资源后,ServerAgent会自动关闭,需要重新启动。