2023最新性能测试面试题(带答案)

news2024/11/26 17:51:17

一、性能测试开展过程:
答:第一步:找产品沟通哪些接口需要压测,需要达到什么样的预期值(TPS和响应时间)

第二步:编写测试计划,人员、时间周期、工具

第三步:环境搭建

第四步:造数据

第五步:场景测试(单接口基准测试、单接口压力测试、混合接口测试、稳定性测试)

第六步:结果分析,提交测试报告

第七步:等待开发性能调优,复测

二、交付一个性能测试项目,请阐述你的性能测试流程 (偏高级的回答)
答:1:明确测试需求

2:基于需求设计测试用例,测试方案,测试计划

3:准备测试数据,测试账号(预估并发量),设计测试脚本(参数化,表达式,断言,控制器)

4:运行测试脚本,数据监听(响应时间,tps,活动线程),结果分析(判断性能瓶颈)

5:基本性能瓶颈做调优(tomcat线程池,jvm内存,swap内存,带宽)

6:调优之后做性能回归,和前期结果做对比,是否有明显的优化。

7:代码问题优化(自己定位或者交给开发定位)

8:性能测试报告。整理性能测试数据(包括调优之前和调优之后)

9:构建持久化的性能监听平台,监听线上的服务性能

性能测试贯穿项目始终,从需求分析到上线之后,都需要持续跟踪分析发现问题,响应解决问题

三、什么是性能测试?
答:测试系统有没有性能问题

考虑时间,空间

服务端资源是否足够?

响应时间是否超时?

系统是否足够稳定?

四、性能测试的核心原则是什么?
答:基于协议,多线程,场景设计

协议:所有的请求都是基于协议发出去 http,https,udp,tcp,mqtt

多线程:压力测试是基于java多线程原理,通过线程去模拟用户的行为

基于场景:控制器+定时器设计各种场景满足压测要求

并发场景、负载场景、稳定性、压力测试

… …

五、什么是负载?有哪些负载模式?
答:负载就是对服务器迭代式加压,从而寻求性能测试拐点

1:用户模式。不断增加的用户数带来的压力

1个用户1s内发起20个请求,rps=20/s

2:请求模式,不断增加的请求数带来的压力

10个用户,1s用户1s内发起1个请求,rps=10/s

不能单纯的通用用户去衡量压力,直接通过每秒请求数去衡量压力。直接从服务端考虑

六、性能测试的应用领域有哪些?
答:1、能力验证:乙方向甲方交付项目时,声明项目的性能数据。

2、瓶颈分析:在能力验证的过程中可能会发现一些瓶颈,通过技术手段分析瓶颈,得到分析数据,为后续调优做理论依据。

3、响应超时:什么负载量的时候出现超时现象?

4、tps达到瓶颈,波动剧烈:tps瓶颈点在哪里?,在什么地方出现性能衰减?

5、性能调优:在得到瓶颈分析数据之后,做性能调优。

6、降低超时,提高tps,减少抖动。。

7、容量规划:基于未来。为将来的用户激增提前做准备

8、数据库扩容

9、服务端硬件优化(增加cpu,扩充磁盘,提升带宽,分布式,负载均衡。。。)

七、压力工具的工作原理是什么?
答:jmeter工作原理:基于协议,通过多线程的方式模拟用户行为,设计各种场景压测服务端,得到性能数据,分析性能瓶颈

八、性能测试基本思路是什么?
答:1、测什么:明确测试目标(明确需求)

2、怎么测:怎么设计场景?

测试计划,测试用例,测试方案、数据准备、参数化,表达式,断言、场景设计(并发,负载,压测)

得到性能测试结果、测试结果验证

验证结果数据是否符合预期

如果预期响应时间是3s,但是实际结果响应时间达到了5s 不合格

预期最大tps需要达到500,但是实际最大的tps只有300 不合格

九、测试哪些关键场景?
答:1、浏览器层面:

web端和app端(H5页面)

关注首屏时间(页面打开到完全呈现)

脚本加载时间,cpu占用,fps频率(帧频率越高,流畅度越高)

2、接口层面

权限划分

普通用户权限(非常多的的用户)

大并发场景:包括查询,表单提交

数据量也需要考虑(电商平台,门户网站)

负载场景:用户长期在线访问,对资源的要求会很高

3、管理员权限(几个用户)

大数据量的场景(管理几十万用户数据)

列表查询时间,分页时间

数据下载(excel,数据导出)是否会内存溢出

mysql数据库是否会死锁,sql查询是否异常

4、超管(1个)

大数据量的场景(管理几十万用户数据)

九、前端性能测试关注哪些点?了解哪些前端性能优化方法?
答:首屏时间:页面完全展现需要的时间

白屏时间:页面第一帧画面出现之前的时间

脚本加载时间,fps,cpu,network

前端性能优化:使用缓存,压缩图片,压缩js,css,gc回收优化,js前置

十、解释常用的性能指标的名称与具体含义
答:1、用户角度

响应时间(rt)从发起请求,到接口响应,到页面渲染

错误率(error)

2、 服务端角度

rps(request persecond)每秒请求数,用户发起的

tps(transaction persecond)每秒完成事物数,服务端决定的

通过rps指标,来测试tps,从而衡量服务端性能。

3、浏览器层面

qps(query perecond)每秒查询接口数(uv pv)

刷新一次页面,调用了三个接口

hps(hit persecond)每秒点击率

十一、性能测试类型有哪些?按顺序描述
答:并发数先确定

基准测试(得到性能数据,为后续的回归测试做理论依据)

单接口基准测试

容量基准测试

负载测试

不断增加负载量(压力),一直到瓶颈点出现,可以停止

压力测试

1:稳定性压测

假设瓶颈点在300tps,用对应的负载量的80%-90%做持续性(几小时或者几天)的压测。目的是发现稳定性问题(内存溢出等等)

2:破坏性压测

用对应负载量的100%或者150%做压测,直接让服务器出现异常。目的是及早的暴露问题

失效恢复测试

服务端出现异常之后能不能及时恢复

十二、什么是集合点?设置集合点有什么意义?jmeter中如何设置集合点?
答:集合点更多的运用在并发测试

为了让压力尽可能的落在同一个时间点

十三、什么是固定等待和隐式等待?
答:固定等待:超时时间=0

线程数一定要>=集合数。一定要集合完毕才发起请求

隐式等待:超时时间>0

达到超时时间范围,无论集合多少线程都会发起请求

十四、你在测试中遇到过哪些性能问题?
答:h5页面响应时间过长

h5的分页经常卡死,sql查询过多,数据量过大

导出excel时间过长,页面503,后台报内存溢出

功能涉及到算法的时候,一定要在测试环境用大量数据去模拟

只要点击,后台cpu立刻就是300%

十五、你在性能场景设计中用到哪些方法?
答:参数化,关联,断言,jdbc连接

十六、什么是关联,如何动态关联?有哪几种关联的方法?
答:正则关联,json关联,xpath关联

保证接口上下游是衔接的

十七、jmeter负载测试中怎么保持session会话?
答:KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(co…{counter},${COOKIE_beegosessionID},)} 存储session

${__P(cookie,)} 从属性表提取session

十八、什么是Ramp up?你如何设置?
答:线程启动的时间

ramp越大,单位时间内的压力越小。ramp=0表示单位时间压力无穷大,线程启动时间无穷小。ramp=0不代表时间为0

十九、如何识别性能瓶颈?
答:随着负载不断升高,tps也是不断升高的,正常逻辑

随着负载不断增加,tps不再增加,甚至下降。表示单位线程的tps实际在衰减。tps的瓶颈点

二十、简述堆区的空间分配和gc原理
答:年轻代

1个eden

2个存活区(S1和S2)

老年代

GC(垃圾回收)

内存溢出:OOM(OUT OF memory)

1:运行内存>当前空间剩余内存

2:垃圾不能及时回收

年轻代GC:

1:最初的对象是存活在eden;伊甸园空间满了之后,会进行第一次GC;

2:第一次GC之后,依然存活的对象,会被丢到S1(第一个存活区);

3:S1初次满了之后,会进行第二次GC(年轻代GC)

4:第二次GC之后,依然存活的对象,会被丢到S2(第二个存活区),同时清空伊甸园和S1;

5:S2满了之后,会进行第三次GC,依然存活的对象,会再次被丢到S1,同时清空伊甸园和S2;

年轻代里面的垃圾碎片都是比较小;老年代的碎片比较大;

让垃圾尽可能的在年轻代里面进行回收;否则会影响老年代空间的整理;

老年代GC:

1:年轻代的GC年龄超出阈值(默认16次),会把年轻代依然存活的对象扔到老年代;

2:对象的尺寸超出了阈值;对象尺寸超出了阈值,会直接进入老年代;

3:对象的大小超出了年轻代剩余的空间大小,直接进入老年代;

老年代GC=fullGC(一般默认)

1:老年代剩余空间不足以对象进入;老年代会直接进行一次fullGC;

2:老年代的对象无法进行GC;老年代会进行一次fullGC;

老年代的对象尺寸都比较大,所以gc时间会很长,同时所有线程会出现暂停;

jvm调优是为了规避fullgc的频繁出现;会影响到tps;

jstat -gcutil pid 1000 监听gc情况

jmap -heap pid 查看内存空间分配情况

jvm参数调优

调堆内存空间,调年轻代的gc年轻,调空间分配比例(老年代:年轻代 / eden:存活区);调gc回收器,并行回收机制

二十一、什么是内存溢出?
答:1:运行需要的内存大于空间剩余内存;会出现内存溢出

2:垃圾无法进行GC;会出现内存溢出

二十二、简述cpu的工作原理
答:分析cpu参数:lscpu

CPU(s): 2 cpu个数

Thread(s) per core: 1 每核的线程

Core(s) per socket: 1 每个卡槽的核

Socket(s): 2 每个cpu的卡槽

双cpu,4核多线程;每个cpu是双核;

cpu负载和利用率

可运行的进程(双r)+不可中断的进程(block)

running(运行中的)+runnable(等待运行的)+block(等待io)=cpu的负载

利用率:cpu双线程如果都在调度java进程,表示当前cpu利用率是100%;

cpu双线程如果只有一个java进程在调度,表示当前cpu利用率是50%;

最理想的情况:每个cpu线程都调度一个java进程,此时的负载=4;

不理想的情况:java进程数远大于cpu线程数,此时负载会远远超出cpu线程数;不能及时调度的进程就会排队;

cpu会给运行中的和等待运行的进程数均匀分配时间片;

cpu调度是以时间片为基准的;假设调度时间为1ns,调度超出1ns之后,进程会被挂起;切换到下一个进程

队列越长,cpu时间片就越小,调度时间就会越短,切换的越快;切换的过于频繁,cpu利用率就会很低,线程也会暂停

进程是最小资源分配单元;

线程最小调度单元;

二十三、什么是上下文切换?哪些场景会存在上下文切换?
答:1:线程的切换

切换的时间加载寄存器和计数器

保存数据和位置信息,然后切换到下一个线程并读取它的数据和位置信息

2:进程切换

3:特权切换

系统调用(切换两次上下文)

用户空间向内核空间发起申请,内核空间返回api给用户空间调用;

二十四、什么是swap空间?oomkiller了解吗?怎么开启swap空间
答:swap:从磁盘空间开辟的虚拟用户空间。

cat /proc/sys/vm/swappiness 查看swap比例

当内存空间使用超出了比例,会启用swap空间(内存交换)

so 换出

si 换入

swapon -a 启用swap

sudo sysctl vm.swappiness=10 临时修改swappiness比例

vim /etc/sysctl.conf 永久修改swappiness比例

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末领取】


              【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战


四、App自动化项目实战

五、一线大厂简历


六、测试开发DevOps体系

七、常用自动化测试工具


八、JMeter性能测试

九、总结(文末尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/847843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现在pmp还值得去考试吗?

一,为什么要考PMP? 1. PMP认证在项目管理领域具有极高的认可度,是全球通用的认证,不仅局限于某一行业或地区。目前已有超过43万人参加了PMP考试。 2. PMP持证者的薪资和收入潜力都有明显优势。根据PMI发布的《薪酬力&#xff1a…

记录一次electron打包提示文件找不到的解决方法

没有配置files选项 files的作用是配置打包到应用程序的构建资源 就是说如果你想使用项目那个目录下的文件 就得通过files配置一下不然就会报错 json文件或者yml文件会报的错 格式是这样的 "files": ["dist-electron", "dist"],electron打包配…

JAVASE---方法的使用

方法概念及使用 什么是方法(method) 方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法存在的意义(不要背, 重在体会): 1. 是能够模块化的组织代码(当代码规模比较复杂的时候)。 2. 做到代码被重复使用, 一份代码可以在多个位置使用。 3. 让代码更好理解更简单…

人民日报点赞!十大央媒争相报道,星恒守护民生安全出行二十年

围绕电动自行车锂电池的安全性话题,甚至说争议,在近期有了权威定调。 就在7月底,“民生出行,安全为本——电动自行车锂电安全调研座谈会”在北京人民日报社举行,国家监管部门、行业协会、检验院所的权威领导专家&#…

kube-prometheus 使用blackbox进行icmp 监控

安装kube-prometheus 后默认在monitoring namespace中有创建 blackbox-exporter deployment。但默认没有icmp的module配置,无法执行ping探测。因为即使有icmp module,默认配置也是无法执行ping探测的(这篇文章要解决的就是这个问题&#xff0…

hive编译报错整理

背景 最近在修hive-1.2.0的一个bug,需要修改后重新打包部署到集群,打包的时候报下面的错误,原因很简单,从远程仓库里面已经拉不到这个包了。 org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde was not found in http…

【Rust】Rust学习 第六章枚举和模式匹配

本章介绍 枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会…

设计模式行为型——观察者模式

目录 什么是观察者模式 观察者模式的实现 观察者模式角色 观察者模式类图 观察者模式举例 观察者模式代码实现 观察者模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是观察者模式 观察者模式(Observer Pattern)是一种行为型设计模式…

【css】渐变

渐变是设置一种颜色或者多种颜色之间的过度变化。 两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线) 径向渐变(由其中心定义) 1、线性渐变 语法:background-image: linear-gradient(direction, co…

【搜索框的匹配功能】

功能需求: 1. 输入关键字的同时,以下拉列表的形式显示匹配的内容; 2. 点击下拉列表的选项,跳转到对应的新的页面 注意:这里读取data.txt(检索的文件对象),会存在跨域的问题&#x…

【深度学习可视化系列】—— 特征图可视化(支持Vit系列模型的特征图可视化,包含使用Tensorboard对可视化结果进行保存)

【深度学习可视化系列】—— 特征图可视化(支持Vit系列模型的特征图可视化,包含使用Tensorboard对可视化结果进行保存) import sys import os import torch import cv2 import timm import numpy as np import torch.nn as nn import album…

Ubuntu 20.04 安装 Stable Diffusionn

步骤 1:安装 wget、git、Python3 和 Python3虚拟环境(如果已安装可忽略这步骤) sudo apt install wget git python3 python3-venv步骤 2:克隆 SD 项目到本地 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webu…

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证,联合方案带来约20%性能提升

近日,亚信科技AntDB数据库与苏州库瀚信息科技有限公司自主研发的RISC-V数据库存储解决方案进行了产品兼容测试。经过双方团队的严格测试,亚信科技AntDB数据库与库瀚数据库存储解决方案完全兼容、运行稳定。除高可用性测试外,双方进一步开展TP…

nacos升级开启鉴权后,微服务无法连接的解决方案

版本: 软件版本号备注spring boot2.2.5.RELEASEspring-cloudHoxton.SR3spring-cloud-alibaba2.2.1.RELEASEnacos2.0.1从1.4.2版本进行升级。同时作为注册中心和配置中心 一、升级nacos版本,开启鉴权 1.在application.properties配置文件开启鉴权&…

【资料分享】全志科技T507-H开发板规格书

1 评估板简介 创龙科技TLT507-EVM是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53国产工业评估板,主频高达1.416GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产…

sentinel---滑动窗口的实现原理

sentinel有多种规则,包括:降级、限流、热点等等规则,这些规则均会涉及到时间因素,既在单位时间内的请求量满足各种条件之后的各种动作。 这里我们一起来探针一下sentinel中滑动窗口的实现 如上是一个滑动窗口的示意图。 这里先不…

电脑IP地址错误无法上网怎么办?

电脑出现IP地址错误后就将无法连接网络,从而无法正常访问互联网。那么当电脑出现IP地址错误时该怎么办呢? 确认是否禁用本地连接 你需要先确定是否禁用了本地网络连接,如果发现禁用,则将其启用即可。 启用方法:点击桌…

设计实现数据库表扩展的7种方式

设计实现数据库表扩展的7种方式 在软件开发过程中,数据库是一项关键技术,用于存储、管理和检索数据。数据库表设计是构建健壮数据库系统的核心环节之一。然而,随着业务需求的不断演变和扩展,数据库表中的字段扩展变得至关重要。 …

【TensorFlow】P0 Windows GPU 安装 TensorFlow、CUDA Toolkit、cuDNN

Windows 安装 TensorFlow、CUDA Toolkit、cuDNN 整体流程概述TensorFlow 与 CUDA ToolkitTensorFlow 是一个基于数据流图的深度学习框架CUDA 充分利用 NIVIDIA GPU 的计算能力CUDA Toolkit cuDNN 安装详细流程整理流程一:安装 CUDA Toolkit步骤一:获取CU…

GIS和倾斜摄影的关系?

GIS(地理信息系统)和倾斜摄影是两种在地理空间数据处理和分析中扮演重要角色的技术。但是我们总是会分不清二者,本文就带大家从不同角度了解二者之间的关系。 概念 GIS是一种用来捕获、存储、分析和展示地理空间数据的技术,它可以…