JMeter知识点汇总

目录

JMeter 问题一览

1.项目里性能测试使用的工具是?

JMeter
LoadRunner
Locust
比如,我们使用的工具是JMeter(接口压测、网站压测、App压测都可以用,注意开发脚本方式的不同)

2.项目里针对哪些业务进行了性能测试?

说出4-5个核心业务。比如ERP系统针对零售管理、采购管理、销售管理、财务管理、仓库管理,零售管理中比如新增、修改、查询、删除、审核、反审核

3.项目里性能测试是如何做的?

首先,确定性能测试的指标和需要进行性能测试的业务,接下来就是开发脚本,然后需要针对脚本进行强化,如果需要使用不同的数据,我们使用参数化,如果需要再接口之间进行数据传递,我们使用关联,如果需要统计操作的响应时间,我们使用事务,如果需要实现操作并发,我们使用集合点,如果需要检查脚本是否执行成功,我们使用断言。
接下来,根据测试类型,确定场景设计,比如压力测试,我们会选择使用单业务单波峰的场景,稳定性测试就麻烦一点,我们需要借助于开源插件,使用混合业务多波峰的场景,接下来需要监控服务器资源,启用响应时间监控,启用错误率监控等。
接下来,我们会执行场景,根据性能测试的用户量指标,持续加压,这里我们选择的用户量是。。。(结合你的项目来说),考虑是单机压力测试还是分布式压力测试(分布式压力测试需要考虑几台负载机)
接下来,根据性能测试指标分析结果,主要分析用户量、响应时间、错误率、吞吐量、服务区资源占用等,发现哪个指标不符合,分析后提交后开发,后边就是持续调整优化

4.项目里性能测试的指标?

响应时间(ART):完成某个操作所需要的时间(b/s 3-5-8)
成功率/错误率:成功地完成一次操作。
吞吐量(TPS):每秒系统能够处理的操作或事务的数量。
点击率:每秒用户向Web 服务器提交的HTTP 请求数
并发用户数:多个人同时进行某一个业务交易的用户的数量。
服务器的资源占用:在负载条件下,服务器系统的资源利用率。(CPU、内存、硬盘、网络)

5.负载测试和压力测试的区别?

负载测试:通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标下,系统所能够承受的最大负载量。
压力测试:通过逐步增加系统负载,使系统某些资源达到饱和甚至失效的测试。
【负载测试是轻中重负载,压力测试是超负载和找性能拐点是是重点】

6.JMeter和Loadrunner的区别?

JMeterLoadRunner
安装简单、解压即用复杂
录制、回放支持支持
支持的协议偏少很多
分布式压测支持支持
IP欺骗不支持支持
图形报表支持、偏弱支持,强大
测试逻辑控制支持支持
监控服务器支持支持
功能测试支持不支持

【JMeter 轻量级、开源,LoadRunner重量级、收费是重点】

7.JMeter如何开发脚本的?强化脚本的技术?

代理服务器录制脚本
Fiddler录制脚本
Badboy录制脚本
根据API,手写脚本
根据抓包,手写脚本
【Fiddler录制脚本、根据API,手写脚本是重点
关联、参数化、事务、断言、集合点是重点】

8.JMeter什么是关联?使用什么元件实现?

服务器返回的一些动态数据,我们需要利用JMeter元件来获取这些内容,这个过程就是关联。
关联方式:
Regular Expression Extractor:正则表达式提取器
JSON Extractor:一般JSON的时候,用的比较多
XPath Extractor:一般xml的时候,用的比较多
【Regular Expression Extractor是重点】
【关联是提取响应中的数据传递给后续接口使用。使用正则表达式提取器实现是重点】

9.JMeter什么是参数化?使用什么元件实现?

性能测试需要并发多个用户,为了真实模拟用户行为,我们需要模拟多个不同账号,这时我们就需要参数化。
参数化方式:
CSV Data Set Config:CSV数据配置
User Parameters:用户参数
Counter:计数器
【参数化是为了不同用户使用不同的数据进行测试,实现用户行为的差异化。使用CSV数据配置实现是重点】

10.JMeter什么是检查点?使用什么元件实现?

大并发的情况下有可能出现服务器响应出错(响应超时、响应不对等),所以我们有必要让JMeter来帮我们验证测试结果的正确性。
检查点方式
Response Assertion:响应断言
Assertion Results:断言结果(断言的断言,用的很少)
【断言是检查脚本操作是否跟与预期结果一样。使用响应断言实现是重点】

11.JMeter什么是事务?使用什么元件实现?

性能测试的结果统计时我们一定会关注TPS, TPS代表的是每秒事务数。
事务方式:
Transaction Controller:事务控制器
【事务是统计用户的操作的响应时间的。使用事务控制器实现是重点】

12.JMeter什么是集合点?使用什么元件实现?

性能测试需要模拟大量用户并发,集合点能够尽量让虚拟用户同一时刻发送请求,在 JMeter中集合点是通过定时器来完成的
集合点方式:
Synchronizing Timer:同步定时器
【集合点是实现大量用户并发(同一时间做同一操作)。使用同步定时器实现是重点】

13.JMeter参数化有哪些方式?

CSV的数据配置(配置元件)
用户参数
内置函数
计数器
用户自己定义的变量
使用关联也可以(随机提取)
【CSV的数据配置是重点】

14.JMeter的工作原理?

JMeter建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。
如果取样器中有参数化的需求,可以通过配置元件或者前置处理器来完成。
如果有关联需求,可以通过后置处理器来完成。
如果我们想要设置运行场景,比如模拟多少用户,运行多长时间,就设置线程组。
如果我们想要模拟并发场景,可以利用定时器来设置;
如果我们想要控制业务的执行逻辑,比如登录只运行一次,我们可以用控制器来完成。
【线程组、配置元件、前置处理器、后置处理器、定时器、控制器是重点】

15.JMeter什么是线程组?说几个常用的?

线程组:性能测试需要模拟大量用户负载的情况,线程组就是用来完成这个工作的。线程就是虚拟用户。
【线程组、setUp线程组、tearDown线程组是重点】

16.JMeter什么是采样器?说几个常用的?

取样器(又译采样器)用来模拟用户操作,向服务器(被测试系统)发出Http请求、WebService (SOAP/XML-RPCRequest)请求或者Java请求等。 我们可以把Http请求元件看成是一个没有界面的浏览器,它可以发送Http请求,接收服务器的响应数据。
【Http请求、JDB请求是重点】

17.JMeter什么是逻辑控制器?说几个常用的?

顾名思义就是控制程序逻辑了。
简单控制器:没有实际的作用,用于逻辑上区分脚本
循环控制器:实现迭代循环
If控制器:实现条件分支
事务控制器[特别重要]:实现统计响应时间
【简单控制器、循环控制器、if控制器、事务控制器是重点】

18.JMeter什么是定时器?说几个常用的?

用来控制取样器的执行时机。
固定定时器:实现添加固定的思考时间
高斯随机定时器:实现添加浮动的思考时间
同步定时器:实现并发
【固定定时器、高斯随机定时器、同步定时器是重点】

19.JMeter什么是前置处理器?说几个常用的?

在请求发送前可能会做一些环境或者参数的准备工作。比如:参数化
用户参数:实现数据的参数化
【固定定时器、高斯随机定时器、同步定时器是重点】

20.JMeter什么是后置处理器?说几个常用的?

从服务器响应数据中查找到我们需要的数据,比如:关联
正则表达式提取器:提取响应中的数据值
Bean shell后置处理器:实现数据的后置处理
JSON提取器:提取响应中的数据值
【正则表达式提取器、JSON提取器是重点】

21.JMeter什么是断言?说几个常用的?

断言:用来验证结果是否正确,比如:检查点
响应断言:对测试结果来进行校验
【响应断言、JSON断言、xpath断言是重点】

22.JMeter什么是监听器?说几个常用的?

监听器:添加结果监听,对测试结果进行处理和可视化展示。
查看结果树:调试使用
聚合报告:性能测试使用
【察看结果树、聚合报告是重点】

23.JMeter常用的开源插件有哪些?

jp@gc - Ultimate Thread Group:实现浪涌场景设计
jp@gc - Stepping Thread Group (deprecated):实现分阶段加压场景设计
jp@gc - PerfMon Metrics Collector:实现服务器资源监控
jp@gc - Response Times Over Time:实现响应时间监控
jp@gc - Transactions per Second:实现吞吐量监控
【前3个是重点】

24.JMeter如何从上一个接口获取相关的响应数据传递到下一个接口?

服务器返回的一些动态数据,我们需要利用JMeter元件来获取这些内容,这个过程就是关联。
后置处理器就是JMeter的关联元件,可以帮助我们从服务器响应数据中查找到我们需要的数据。
关联方式有:正则表达式提取器Regular Expression Extractor、xpath提取器、JSON提取器等。
【正则表达式提取器是重点】

25.JMeter如何从上一个线程组获取相关的响应数据传递到下一个线程组?

在上一个线程组中使用关联提取需要的数据,然后使用BeanShell 后置处理器保存为全局变量,在下一个线程组中,使用BeanShell 预处理器或者P函数获取的全局变量的值。
【BeanShell 后置处理程序设置为全局变量是重点】

26.JMeter 单波峰场景如何设计?

JMeter中我们使用线程组来控制测试场景,如单波峰场景。但是原线程组无法设计复杂测试场景,如多波峰场景(浪涌)。
JMeter Plugins 提供了两个线程组元件 Ultimate Thread Group 与 Stepping Thread Group。
压力测试:单业务单波峰
负载测试:单业务单波峰
稳定性测试:混合业务多波峰
【线程组、JMeter Plugins的 Ultimate Thread Group是重点】

27.JMeter 多波峰(浪涌)如何设计?

见上个问题。

28.JMeter场景运行方式有哪些?

GUI 本地运行
GUI 远程运行
非GUI 本地运行
非GUI 远程运行
接口测试:GUI本地
压力测试小负载<2000:本地
压力测试小负载>2000:分布式
【都是重点】

29.JMeter如何实现分布式压力测试?

GUI远程运行:
准备工作:
(1)Master机和Slaver机的JDK、JMeter版本一致【如果用一台电脑模拟,这个步骤是可以不做的】
(2)拷贝脚本、数据文件(CSV数据文件)【如果用一台电脑模拟,这个步骤是可以不做的】
(3)配置环境变量JMETER_HOME
(4)在Master机修改jmeter.properties,将远程机器加入列表【这里我使用本机作为slaver机器】
remote_hosts=localhost
执行操作:
(5)在Slaver机启动jmeter-server.bat(注意绑定的IP要正确)
(6)在GUI使用 运行-远程运行启动
优点:能够实现分布式压力测试,模拟更大的负载量。
非GUI远程运行:
-n 指定非GUI运行
-t 指定运行脚本
-r 指定远程运行
-l 指定存放测试结果的文件
非GUI远程运行:
%JMETER_HOME%\bin\jmeter -n -t %JMETER_HOME%\bin\script\discuz_open.jmx -r -l %JMETER_HOME%\bin\result\result_非GUI远程运行.jtl

30.JMeter如何实现服务器资源监控?

服务器监控是由Standard Set包中的程序来实现的,这些数据通过JMeter Plugins提供的ServerAgent远程回传Jmeter Master。
【JMeter Plugins的jp@gc - PerfMon Metrics Collector是重点】

31.JMeter如何把测试报告转制成HTML格式?

(1)修改jmeter.properties
jmeter.save.saveservice.output_format=CSV
(2)运行中转制html报告
-n 指定非GUI运行
-t 指定运行脚本
-r 指定远程运行
-l 指定存放测试结果的文件
-e 指定运行完毕生成报告
-o 指定报告存放的位置(注意,文件夹需要为空)
非GUI本地运行并生成html格式报告:
%JMETER_HOME%\bin\jmeter -n -t %JMETER_HOME%\bin\script\discuz_open.jmx -l %JMETER_HOME%\bin\result\result_非GUI本地运行.jtl -e -o %JMETER_HOME%\bin\result\resultReport
(3)运行完毕转制html报告
-g 指定要转制的测试结果的jtl文件
-e 指定运行完毕生成报告
-o 指定报告存放的位置(注意,文件夹需要为空)
运行完毕,再生成html格式报告:
%JMETER_HOME%\bin\jmeter -g %JMETER_HOME%\bin\result\result_非GUI本地运行.jtl -e -o %JMETER_HOME%\bin\result\resultReport

32.JMeter 接口测试的持续集成环境如何搭建?

Jenkins+Ant+Jmeter大体逻辑如下:
(1)通过Jenkins来进行调度Ant构建,Jenkins 与 Ant 通过 Agent (Slave.jar)来关联。
(2)在 Jmeter (Master)上安装了 Ant,Ant来做构建,构建Jmeter的执行、报告生成任务。
(3)Jmeter (Master)运行测试脚本,如果是多个远程负载机(jmeterSlave),那么Jmeter (Master)通过Agent来控制远程负载机。
【JMeter:开发和调试脚本,Ant:批量执行脚本,Jenkins:自动化执行测试任务是重点】

tips

性能测试脚本是为了模拟用户行为
单接口,API文档手写脚本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值