首页 > 其他分享 >JMeter的基础认识

JMeter的基础认识

时间:2023-02-27 18:11:24浏览次数:48  
标签:请求 认识 性能 基础 响应 测试 服务器 JMeter

1、解释下什么是JMeter?

 

JMeter是一款Java开源工具,用于性能负载测试。它旨在分析和衡量Web应用程序和各种服务的性能和负载功能行为。

 

2、说明JMeter的工作原理?

 

JMeter就像一群将请求发送到目标服务器的用户一样。它收集来自目标服务器的响应以及其他统计数据,这些统计数据通过图形或表格显示应用程序或服务器的性能。

 

3、说明可以在哪里使用函数和变量?

 

变量和函数可以写入任何测试组件的任何字段。

 

4、提到JMeter中的正则表达式是什么?

 

根据模式(patterns),使用正则表达式搜索和操作文本。JMeter可用于解释在整个JMeter测试计划中使用的正则表达式或模式的形式。

 

5、解释什么是采样器(Samplers)和线程组(Thread group)?

 

线程组:对于任何测试计划,线程组元件都是JMeter的开始部分。这是JMeter的重要元件,你可以在其中设置多个用户和时间来加载线程组中给出的所有用户。

采样器:采样器生成一个或多个采样结果;这些采样结果具有许多属性,例如经过时间、数据大小等。采样器允许JMeter通过采样器将特定类型的请求发送到服务器,线程组决定需要发出的请求类型。一些有用的采样器包括HTTP请求、FTP请求、JDBC请求等等。

 

 

 

6、使用JMeter构建的测试计划是否依赖于操作系统?

 

通常,测试计划以XML格式保存,因此与任何特定的操作系统都没有关系。它可以在JMeter可以运行的任何操作系统上运行。

 

7、提到JMeter中处理器的类型是什么?

 

JMeter中的处理器类型为:①预处理器;②后处理器。

 

8、解释什么是预置处理器元件?列出一些预处理器元件?

 

预置处理器是在采样器执行之前发生的事情。为了在执行采样请求之前对其进行配置,或者用于更新未从响应文本中提取的变量,需要使用预处理器元件。

一些预处理器元件是:

 

HTTP URL重写修饰符

HTTP用户参数修饰符

HTML链接解析器

BeanShell PreProcessor

9、是否提到测试元件的执行顺序?

 

测试计划元件的执行顺序为:

配置元件 -> 前置处理器 -> 计时器 -> 取样器 -> 后置处理器 -> 断言 -> 监听器

 

10、正则表达式中的“包含”和“匹配”表示什么?

 

在正则表达式中,contains表示正则表达式与目标的至少一部分匹配。匹配表示正则表达式匹配整个目标。如“alphabet”与“al.*t”匹配。

 

11、解释什么是配置元件?

 

配置元件与采样器并行工作。要设置默认值和变量以供采样器以后使用,可以使用配置元件。在合并范围的开始,将先处理这些元件,然后再处理同一合并范围中的任何采样器。

 

 

 

12、说明JMeter中的计时器是什么,计时器的类型是什么?

 

默认情况下,JMeter线程将连续发送请求而不会暂停。为了在请求之间暂停,使用了计时器。使用的一些计时器包括恒定计时器,高斯随机计时器,同步计时器,均匀随机计时器等。

 

13、解释什么是测试片段?

 

测试片段也是一种元件,例如“线程组”元件。唯一的区别是,除非模块控制器或包含控制器引用了测试片段,否则不会实现测试片段。

 

14、解释什么是JMeter中的断言?断言的类型有哪些?

 

断言有助于验证被测服务器是否返回了预期结果。

JMeter中一些常用的断言是:

 

响应断言

持续时间断言

大小断言(Size Assertion)

XML断言

HTML断言

15、说明如何减少JMeter中的资源需求?

 

①使用非GUI模式执行测试,如 jmeter –n –t test.jmx –l test.jtl

②在加载期间,测试不使用“查看结果树”或“查看表中的结果”监听器,仅在脚本编写阶段使用它们;

③不要使用功能模式;

④与其使用大量相似的采样器,不如在循环中使用相同的采样器,并使用变量来改变采样;

 

16、解释如何在JMeter中执行尖峰测试(Spike testing)?

 

通过同步,可以实现计时器JMeter尖峰测试。同步计时器将阻塞线程,直到阻塞了特定数量的线程,然后将它们全部释放,从而产生了巨大的瞬时负载。

小贴士:尖峰测试 也可以称为冲击测试,反复冲击服务器。指的是在某一瞬间或者多个频次下用户数和压力陡然增加的场景。

 

17、解释如何在JMeter中捕获身份验证窗口的脚本?

 

通常,可以通过录制来捕获脚本:

首先,必须在Testplan(测试计划)中使用 Threadgroup,然后在 Workbench(工作台) 中使用HTTP代理服务器;

之后,在“全局设置”框中设置端口号(如8911),然后在 IE高级选项>连接>局域网设置中 开启 代理设置,并将地址修改为localhost,端口改为8911。

然后,HTTP代理服务器中选择 目标控制器 Testplan>Threadgroup,然后启动HTTP代理服务器并运行应用进行登录。

 

18)列出几个JMeter监听器?

 

一些JMeter监听器是:

 

集合报告

汇总报告

查看结果树

用表格查看结果

图形结果

BeanShell Listener

摘要报告等

19、什么是分布式负载测试?如何实现?

 

分布式负载测试是整个系统可以用来模拟大量用户负载的过程。通过使用主从配置,JMeter可以进行分布式负载测试。

 

20、在JMeter中是否有必要显式调用嵌入式资源?

 

你可以消除所有嵌入式资源的显式调用。请求底部有一个复选框,显示“检索嵌入式资源(retrieve embedded resources.)”。它会捕获所有CSS、JPG等。这是在Web应用中查找资源和断开链接的绝妙方法。

 

21、解释计时器(Timer)在JMeter中的作用是什么?

 

在计时器的帮助下,JMeter可以延迟线程发出的每个请求之间的时间。它可以解决服务器的过载问题。

 

 

22、解释什么是后置处理器?

 

要在发出请求后执行任何操作,则使用后处理器。例如,如果JMeter向Web服务器发送HTTP请求,并且如果你希望JMeter在Web服务器显示错误时停止发送请求,那么你将使用后处理器执行此操作。

 

23、JMeter为性能测试提供什么好处?

 

JMeter提供性能测试方面的优势,例如:

 

它可以用于测试静态资源和动态资源的性能;

它可用于测试网站最大并发用户数,从而分析定位网站瓶颈;

它提供了性能报告的图形化分析。

 

 

 

24.解释常用的性能指标名称与具体含义

 

性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。

 

性能指标分为两个方面:

 

系统指标:与用户场景和需求相关指标;

 

资源指标:与硬件资源消耗相关指标;

 

系统指标:

响应时间:即系统响应时间(Transaction Response Time),应用系统从发出请求到客户端接收到响应所消耗的时间,是用户视角最关心的软件性能业务体验。响应时间为网络响应时间与应用程序响应时间之和;

一般响应时间在2s内,用户会感觉比较满意;

在2s~5s之间,用户勉强能接受;

大于8s,用户就可能无法接受,从而刷新页面或者离开;

平均响应时间:所有请求花费的平均时间;

 

吞吐量:单位时间内系统能够处理的客户请求的数量,直接体现软件系统的性能承载能力,计算方式是完成的事务数除以时间;

 

并发用户数:并发主要是针对服务器而言,在同一时刻与服务器进行交互(指向服务器发出请求)的在线用户数;

 

在线用户数:某段时间内,用户访问系统的用户数,如多个用户在浏览网页,但没有对同时对服务器进行数据请求,需要与并发用户数区分开;

 

最大并发用户数:有两种理解方式一种是从业务的角度来模拟真实的用户访问,体现的是业务并发用户数,指在同一时间段内访问系统的用户数量。另一种是从服务器端承受的压力来考虑,这里的“并发用户数”指的是同时向服务器端发出请求的客户数,一般结合并发测试(Concurrency Testing)使用,体现的是服务端承受的最大并发访问数;

 

事务:可以看作是一个动作或是一系列动作的集合,例如登录,从登录开始到登录结束为一个事务。

 

TPS:Transaction per second,每秒钟系统能够处理的交易或者事务的数量,即服务器对客户请求的能力,是衡量系统处理能力的重要指标。

 

吞吐量:网络传输的数据量(处理客户的请求数);

 

吞吐率:单位时间(可以是秒/分/时/天)内网络成功传输的数据量,如请求数/秒、页面数/秒;

点击数:Web Server收到的HTTP请求数;

点击率:HPS,每秒钟用户向Web Server提交的HTTP请求数;

 

资源指标:

硬件性能指标:CPU,内存Memory,磁盘I/O(Disk I/O),网络I/O(Network I/O) ;

中间件:常用的中间件如web服务器Tomcat,Weblogic web服务器,JVM(java虚拟机),ThreadPool线程池,JDBC数据驱动 ;

数据库指标:SQL,吞吐量,缓存命中率,连接数等;

JVM:Java虚拟机,为使java的代码可以编译运行在不同的平台上顺畅,仿真模拟各种计算机来实现 ;

 

前端指标 :首次显示时间,页面数量,页面大小,网络startRender,firstRender等。前端的性能与后端的性能的不同点在于,前端是每个用户的直观的感受,如前端页面加载元素耗费的时间,而后端的性能关注点在于多用户使用系统时,服务器是否能够承受或者服务器的处理能力如何,能否以较好的响应时间响应;

 

Load:系统平均负载,特定时间间隔内运行进程数,Load与cpu核数一致;

 

25.性能测试包含了哪些测试类型?

负载测试(Load Testing):测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,保持配置不变的情况下,最大支持多少并发用户数,软件请求出错率等;

 

压力测试(Stress Testing):压力测试也称为强度测试,主要测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的CPU利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同;

 

容量测试(Volume Testing):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等;

 

并发测试(Concurrent Testing): 测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题;

基准测试 (BenchmarkTesting):比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能;

 

26.你认为不同角色关注的软件性能要点分别是?

客户:重点关注打开速度及响应时间;

在进行操作时,每个请求之间的间隔时间;

大量用户在同一时刻在软件系统上操作是否有较好的体验;

开发人员:重点关注响应时间和数据库交互,进行性能调优;

系统架构:架构设计是否合理;

数据库设计:数据库设计是否存在问题;

代码:代码是否存在性能方面的问题,系统中是否有不合理的内存使用方式;

业务逻辑:系统中是否存在不合理的线程同步方式,系统中是否存在不合理的资源竞争;

测试人员:重点关注用户感受到的软件性能;

系统的响应时间;

系统状态的相关信息,如:CPU、内存、应用服务器状态、JVM可用内存、数据库的状态等;

系统的可扩展性,处理并发的能力;

系统可能的最大容量,可能的性能瓶颈,通过更换哪些设备或是进行哪些扩展能够提高系统性能;

长时间运行是否足够稳定,是否能够不间断的提供业务服务等;

 

27.如何得到性能测试需求?

查看需求文档提取性能测试需求,了解客户实际使用情况;

结合业务信息,设计操作场景从而总结出需要测试的性能关键指标;

执行用例后,提取关键性能指标来分析是否满足性能需求;

 

28.简述性能测试步骤?

1.熟悉应用:了解应用的架构、功能逻辑;

2.需求分析:根据测试目的,细化需求;

3.测试准备:客户端准备、测试数据准备、测试脚本准备;

4.执行测试:监控测试客户端和服务器性能,监控服务器端应用情况;

 

客户端的系统资源(CPU、IO、Memory)情况;

服务端的系统资源(CPU、IO、Memory)情况;

服务器的JVM运行情况;

服务端的应用情况是否有异常;

响应时间、吞吐量等指标;

5.性能分析与调优:找出性能瓶颈,提高系统整体性能,满足用户需求;

6.编写测试报告:测试结束后,归档整理测试报告;

 

29.需求分析阶段,你从哪几个方面入手性能测试?

明确到底要不要做性能测试,性能测试的目的是什么;

明确被测系统的架构、软硬件配置、网络等;

明确被测系统的基本业务、关键业务、用户行为;

明确被测系统未来的业务拓展规划以及性能需求;

明确工具选型,比如Jmeter、LoadRunner等;

明确性能测试的指标,比如并发、吞吐量、响应时间等;

 

30.你如何识别性能瓶颈?

1.硬件上的性能瓶颈:如CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈;

2.应用软件上的性能瓶颈:如服务器操作系统瓶颈(参数配置)、数据库瓶颈(参数配置)、web服务器瓶颈(参数配置)、中间件瓶颈(参数配置)等;

 

3.应用程序上的性能瓶颈:应用程序上的性能瓶颈,如SQL语句、数据库设计、业务逻辑、算法等等;

 

4.操作系统上的性能瓶颈:一般指的是Windows、linux等操作系统,如出现物理内存不足时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率大大降低,从而导致行为的响应时间大大增加,可以认为在操作系统上出现了性能瓶颈);

 

5.网络设备上的性能瓶颈:一般是防火墙、动态负载均衡器、交换机等设备导致;

 

31.打开浏览器输入网址到页面渲染,响应时间通常可以细分为哪些?

从客户端到服务端的请求时间(请求网络传输时间Request);

从服务端返回数据到客户端的时间(响应网络传输时间Response);

页面渲染时间(客户端浏览器加载页面的时间);

处理器的处理时间(应用服务器+数据库服务器处理时间);

 

 

 

32.软件为什么会有性能问题?

软件是运行在环境当中的,在高负载访问下,业务逻辑比较复杂,不同的软硬件资源都会引起性能问题,还有软件本身的代码、数据库等会引起性能问题。

 

33.什么是内存泄露?

内存泄漏是指对象不再被应用程序使用,但是垃圾回收器却不能回收它们,因为它们正在被引用。对于长时间运行的程序来说,内存泄漏会使程序占用的内存一直增加,最后就会出现内存耗尽而导致宕机,即使不宕机也会是系统的运行越来越慢,还有就是内存有其他资源,比如数据库连接,网络连接等等。

 

34.敏捷开发模型,如何开展性能测试?

每个迭代目标中包含明确的性能目标;

建立不同层次的性能测试;

完全或接近完全自动化的性能测试;

使用测试驱动方法保证性能与优化性能;

35.说一下稳定、压力、负载测试?

首先稳定压力:对服务器进行7乘24小时不断进行施压 观察硬件资源的使用率是否稳定、tps是否下降、响应时间是否上涨,

然后就是压力测试:阶梯式向服务器进行施压,直到服务器返回错误,

最后是负载测试:找到支持最大并发的线程数在超负荷环境下运行,查看程序是否能够承受,

 

36.那你说一下压力测试和负载测试的区别?

负载相比压力测试,不再用阶梯式压测,应为压力测试已经找到了系统的瓶颈,我们利用找到最大线程数,去进行负载测试,在负载测试的过程中,观察tps是否下降,报错率是否上涨,平均响应时间是否上升,并监控他的资源使用率,曲线图是否稳定,

37.你们公司的tps能达到多少?

根据接口的不同tps也会不同,

接口相同时服务器配置也不同

最大能压倒2000多,最小能压倒10几

监控服务器的使用资源率

PV量(点击量)

Uv量(访客量)

Tps(吞吐量)注:tps就是服务器每处理的事物量

Qps(并发数)

38.聚合报告只要关注那些点?

1.平均响应时间

2.报错率  

3.tps

 

39.你怎么找到最优线程数?

首先就是报错率为0的前提下,找到最高的tps和最低的平均值,

 

40.性能的2/8原则?

就是80%的用户会在20%的时间段爆发,

注:人数乘80%,时间乘20%,最后人数乘时间。

 

41.监控服务器主要监控哪些资源?

cpu(处理器),

Memory(内存),

I/o(读写),

Disr(磁盘)

Jpu(显卡),

 

标签:请求,认识,性能,基础,响应,测试,服务器,JMeter
From: https://www.cnblogs.com/wangkangBK/p/17161387.html

相关文章

  • python算法基础
    一、简介定义和特征定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定......
  • Dart基础语法2
    List、SetList:有序、可重复Set:无序、不重复 互相转化Listlist=[1,2,1];Setset=list.toSet();ListsList=set.toList();遍历forEachListlist=[1,2,......
  • Unity URP Shader 基础光照
    函数GetMainLight()返回一个数据结构LightstructLight{half3direction;//颜色&强度half3color;//方向halfdistanceAttenuation;//距......
  • Dart 基础语法1
    Dart环境搭建1.安装DartSDK2.VSCode安装Dart3.VSCode安装CodeRunner 入口方法//可传参,可有返回值voidmain(List<String>args){print("Hell......
  • 【优分享】JMeter源码解析之结果收集器
    本文作者优测性能测试专家高源。简介:本文以最新的JMeter5.5版本源代码为例详细介绍了单机模式和分布式模式下结果收集器的工作原理。通篇干货,还不快来了解一下! 一、JMete......
  • 《SQL基础》13. 视图
    目录视图简介语法检查选项视图更新视图作用视图简介视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是......
  • 基础知识总结02
    Day05方法方法是一种语法结构,就是一段功能结构封装在一个方法中。方便重复调用。具有特殊功能的代码块特殊功能:方法里面的代码写了啥,这个方法就具备什么功能。代码块:......
  • 响应式基础
    响应式基础使用 reactive() 函数创建一个响应式对象或数组:<scriptsetup>import{reactive}from'vue'conststate=reactive({count:0})functionincrem......
  • Jmeter学习:插件
    第三方插件官方下载网址:https://jmeter-plugins.org/install/Install/第三方插件官方文档网址:https://jmeter-plugins.org/wiki/Start/插件安装过程如下:1、下载plugin......
  • TypeScript 基础语法
    TypeScript基础语法TypeScript程序由以下几个部分组成:模块函数变量语句和表达式注释第一个TypeScript程序我们可以使用以下TypeScript程序来输出"HelloW......