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

一、性能测试开展过程:
答:第一步:找产品沟通哪些接口需要压测,需要达到什么样的预期值(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性能测试

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

产品缺陷管理软件:了解功能与选择要点

在现代社会,产品缺陷管理软件已经成为了各个行业必不可少的工具。它可以帮助企业更好地管理和解决产品中存在的缺陷问题,提高产品质量和客户满意度。然而,市场上存在着众多的产品缺陷管理软件,如何选择一款好用、适合自己的软件成…

山东气象 × 和鲸科技:第一届齐鲁风云气象智能算法挑战赛圆满收官

7 月 20 日,中国气象局印发《人工智能气象应用工作方案(2023 - 2030年)》,旨在加快布局国产人工智能气象应用技术体系建设,推动人工智能技术在气象观测、预报及服务中的深度融合应用,为监测精密、预报精准、…

word转pdf怎么转?几种常用方法分享

word转pdf怎么转?在日常工作和学习中,将Word文档转换为PDF格式是一项必要的任务。不仅可以保证文档的格式不变,还可以防止文档被他人篡改。但是,Word文档并不是所有人都能够轻松打开和编辑的,而PDF文件则可以在各种设备…

【vue3】vue3和vue2的区别:

文章目录 Vue3框架的优点特点:一、生命周期:二、组合式api(Composition API)三、setup函数四、响应式原理1. 原理2. Object.defineProperty的缺陷3.proxy的优势 五、reactive函数和ref函数1. reactive函数》通常使用它复杂类型的响应式数据2. ref函数》使…

Postman如何做接口测试

目录 Postman如何做接口测试1:如何导入 swagger 接口文档 Postman如何做接口测试2:如何切换测试环境 Postman如何做接口测试3:什么?postman 还可以做压力测试? Postman如何做接口测试4:如何自动添加请求…

【TypeScript】安装的坑!

TypeScript安装 安装TypeScript安装时候可能报错这样开头的数据(无法枚举容器中的对象)——原因:没权限先解决没权限的问题如果发现无法修改-高级-修改继续安装想使用tsc-发现,tsc不能用解决方法:配置环境变量最后的最…

IDEA的实用快捷键大全

目录 1.常规快捷键 1.1通用类 1.2注释类 1.3操作类 1.4展开与关闭 2.智能补全类快捷键 3.程序结构类快捷键 4.统一操作快捷键 1.常规快捷键 1.1通用类 像 Ctrl C 复制, Ctrl V 粘贴, Ctrl S保存文件, Ctrl X剪切,这种…

【VUE】项目本地开启https访问模式(vite4)

在实际开发中,有时候需要项目以https形式进行页面访问/调试,下面介绍下非vue-cli创建的vue项目如何开启https 环境 vue: ^3.2.47vite: ^4.1.4 根据官方文档:开发服务器选项 | Vite 官方中文文档 ps:首次操作,不要被类…

flutter开发实战-flutter_spinkit实现多种风格进度指示器

flutter开发实战-flutter_spinkit实现多种风格进度指示器 最近开发过程中flutter_spinkit,这个拥有多种种风格加载指示器 一、flutter_spinkit 引入flutter_spinkit # 多种风格的模糊进度指示器flutter_spinkit: ^5.1.0效果示例 const spinkit SpinKitRotatingC…

【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解

系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…

案例:Docker 镜像的创建及使用(commit与dockerfile方式)

文章目录 1、commit方式创建镜像1.1、前期准备1.2、制成镜像1.3、启动镜像1.3.1、启动镜像启动nginx1.3.2、一个命令直接全部启动1.3.3、两种方式区别 1.4、commit创建镜像方式的本质 2、Dockerfile的使用2.1、Dockerfile指令2.2、nginx镜像制作案例2.3、查看构建历史&#xff…

C高级【day4】

思维导图: 写一个函数,获取用户的uid和gid并使用变量接收: #!/bin/bashfunction get_uid {my_uidid -umy_gidid -g }get_uid echo "当前用户的UID:$my_uid" echo "当前用户的GID:$my_gid"整理冒泡…

Object Map 的相互转换

学生业务对象定义&#xff1a;Student Student student new Student(); student.setId(1L); student.setName("令狐冲") student.setAge(10) 第一种&#xff1a;通过Alibaba Fastjson实现 pom.xml 文件依赖 <dependency><groupId>com.alibaba</g…

OpenStreetMap数据转3D场景【Python + PostgreSQL】

很长一段时间以来&#xff0c;我对 GIS 和渲染感兴趣&#xff0c;在分别尝试这两者之后&#xff0c;我决定最终尝试以 3D 方式渲染 OpenStreetMap 中的地理数据&#xff0c;重点关注不超过城市的小规模。 在本文中&#xff0c;我将介绍从建筑形状生成三角形网格、以适合 Blend…

分布式应用:Zabbix监控平台

目录 一、理论 1.Zabbix 2.部署 zabbix 服务端&#xff08;端口号10051&#xff09; 3.部署zabbix 客户端&#xff08;端口号10050&#xff09; 4.将客户端加入服务端的监控主机中 二、实验 1.部署 zabbix 服务端&#xff08;端口号10051&#xff09; 2.部署zabbix 客户…

Nodejs下动态加载文件夹下的文件模块

个人博客 Nodejs下动态加载文件夹下的文件模块 个人博客&#xff0c;求关注&#xff0c;如果有不够清晰的&#xff0c;麻烦指出来&#xff0c;如果有很不正确的&#xff0c;多谢批评。 文章概叙 本文应用的场景是读取指定文件夹下面的所有文件&#xff0c;然后做操作&#…

24届近5年同济大学自动化考研院校分析

今天给大家带来的是同济大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、同济大学 学校简介 同济大学历史悠久、声誉卓著&#xff0c;是中国最早的国立大学之一&#xff0c;是教育部直属并与上海市共建的全国重点大学。经过115年的发展&#xff0c;同济大学已经…

Splunk Enterprise for mac(可视化数据分析软件)详细安装教程

Splunk Enterprise for Mac是一款可视化数据分析软件&#xff0c;为你提供强大的搜索、 分析和可视化功能&#xff0c;可以帮助您获得有价值的业务情报&#xff0c;从你机器生成的数据。还在等什么&#xff1f;有需要的朋友&#xff0c;欢迎前来下载&#xff01; 实时监测和搜…

hive编译报错整理

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

UE5+Paperzd问题

TopDown的2D游戏&#xff0c;遇到两个问题&#xff0c;第一问题是游戏一开始就会从tilemap上掉下去。第二个问题是没法和图层2上的物体做碰撞。 一、碰撞问题 1、创建的TileSet后&#xff0c;左侧选中一个tile后&#xff0c;一定要点击上边的Add Box&#xff0c;否则创建出来的…