性能测试常见面试问题和答案
一、有没有做过性能测试,具体怎么做的
性能测试是有做过的,不过我们那个项目的性能做得不多,公司要求也不严格。一般SE 给我们相关的性能需求,首先我们需要对性能需求进行场景分析与设计,这里,其实主要就是确定并发数,考虑是否需求设置集合点,以及个业务场景的性能指标要求,根据以上的分析来编写性能测试用例。
然后就开始着手去准备性能测试需要用到数据,以便后期做参数化,搭建好性能测试环境,然后就进行性能脚本的开发与执行。
就拿当时做过的一个下单接口性能测试来讲吧。
当时下单接口要求做一个并发压测,当时公司要求设定的并发数在:600 考虑到下单接口,必须要先登录,所以,首先我会准备600 个用户数据(账号,密码),这边当时是通过存储过程来实现。然后把创建好的600 个用户账号,提取出来,保存在csv 文件中。之后就是编写性能测试脚本了,这里主要就是,脚本的几个核心点:
1,线程组中的线程数设置为:600
2,Ramp-Up 时间:5 秒
3,循环测试设置1 次
4,然后就是开始进行用户数据的参数化,参数化这块需要用到一个csv 数据文件设置这个配置原件。
5,考虑是需要设置集合点,由于不是秒杀抢购活动,不需要设置集合点。
6,最后添加聚合报告,用来观察90%用户的平均响应时间,错误率,吞吐量/吞吐量这些指标
7,例外对于服务器资源的监控,像CPU,内存,磁盘IO,网络,这块当时用的nmon 工
具来获取这些数据的,我们需要在服务器上安装一个nmon 工具,并运行启动就可以了,最后把它转化为excel 表格形式的图形化报告。最后对报告做一个简单的分析。
当时我们就是这么做的
二、性能测试流程是怎么样的?
例外一种问法:简单介绍下你们公司的性能测试流程是怎么样的?
我们那个项目的性能做得不多,公司要求也不严格。对于流程这块,首先就要对整个系统进行详细的分析,确定基本的测试范围,看下系统的哪些业务是需要做性能测试的,还有就是做哪方面的性能测试,对于我们那个项目,当时就做了几个业务做了些简单的并发压测(稳定性)这块,像登录的,搜索查询,下单,还有就是购物车里面的几个接口都有做过。然后就是对各个业务场景进行详细的场景分析与设计,确定每个业务场景的并发数,是否需要设置集合点啊,压测时间是多长,还有各个业务场景的性能指标等等,场景设计这块基本上都是老大跟产品哪个一起弄的,我参与的不是太多。
上面把个场景设置好了之后,提交给我们,我们就是根据老大设置好的那些场景编写了基本的性能测试用例。其实做性能测试,我觉得前期最关键的还是业务场景一定要设计好,后期我们主要的任务就是准备各自任务需要用到的一些测试数据,搭建好测试环境,还有就是测试脚本设计与开发,执行,并生出测试报告,对于测试结果我们一般会简单的做个分析,如果没有什么问题,基本后期就写一个性能测试报告。流程大概就是这样的。
三、你们性能观察哪些指标,大概指标范围是怎么样的
对于指标这块,业务方面的指标主要有:并发数,90%用户的平均响应时间错误率,吞吐量/吞吐率这些,例外还需要关注服务器资源的使用情况,像:CPU 的使用率,内存的占有率,磁盘IO,网络
我们那个项目当时只针对,登录,搜索查询,下订单,购物车相关接口,支付等业务做了些简单的并发,压测这块,指标大概是这样的:
单基准业务并发测试登录,注册,查询1s 以内,下订单,购物车相关接口,支付2s以内
混合业务性能:5s 以内
响应时间:登录,注册业务<2 之内查询,下订单,购物车,支付业务<3s
充值,提现,查看充值日志,查看提现日志业务查询标的, <3s
投标,申请借款<5s
错误率:0
吞吐量/吞吐率:200 左右请求/sec
CPU: 80%以内
内存:80%以内
I/O: %util<=80%,%iowait<=20%
%util: 磁盘一秒中有百分之多少的时间用于I/O 操作,
%iowait:磁盘等待处理时间占比
带宽: <=系统带宽的30%,无丢包,无延迟,无阻塞
四、性能测试计划有哪些内容
写过,主要是时间进度安排与工作安排,主要是环境,测试任务,测试需求,测试方法与策略,测试环境准备,测试通过的标准
比如说原来我们一个项目性能测试时做了5 天,那我们计划是,测试策略与用例编写一天,测试准备需要1 天,测试执行2 天,报告总结1 天。
五、有没有写过性能测试报告,具体包括哪些内容
性能测试报告,需要每次jmeter 压测完成的html 报告的数据跟nmon 工具监控的数据,整理出一份性能测试报告,性能测试报告,主要包含
1,测试资源(环境,测试数据,表里面需要多少数据,测试工具)
2,测试设计(测试业务,测试类型,测试时间,并发用户数)
3,测试分析(每一个场景都需要分析)
4,测试结论(能不能上线,不上线的原因)
5,优化和建议
6,测试通过的标准,平均响应时间<5s,资源利用率<75%,事务失败率<5%
六、什么是内存泄漏,什么是内存溢出
内存泄漏:
是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。
内存溢出:OOM
-1. 指程序申请内存时,没有足够的内存供申请者使用1M 实际要占用2M 内存,就说分配的内存不够,导致内存溢出
-2. 给了你一块存储int 类型数据的存储空间,但是你却存储long 类型的数据,
-3. 长期出现内存泄漏,导致系统内存越用越少,最终导致内存不够用,导致系统崩溃,出现OOM
七、吞吐量与吞吐率跟负载有什么关系?
吞吐量/率和负载之间的关系:
①上升阶段:吞吐量随着负载的增加而增加,吞吐量和负载成正比;
②平稳阶段:吞吐量随着负载的增加而保持稳定,无太大变化或波动;
③下降阶段:吞吐量随着负载的增加而下降,吞吐量和负载成反比;
总结:吞吐量/率干不过负载!!!
八、当你服务器满了之后,你们吞吐量和响应时间怎么变化的
吞吐量会所有下降,响应时间会变长
九、你们吞吐量是多少,响应时间是多少,你设置了多少并发
登录:吞吐量大概在13.5/sec,响应时间<1s,设置的并发数180 个并发数。
十、有没有做过稳定性测试
部分接口有做过稳定性测试。具体怎么做的?
稳定性测试主要就是看某个业务在高并发情况下是否能持续稳定运行嘛,当时大部分的核心业务都有做过稳定性的,这个需是把并发数设置为峰值,然后循环次数设置为永远,例外要
开启调度器,调度器中的持续时间设定为3600 秒,让它持续压测1 个小时。看下接口的各项性能指标的变化,是否在预期的指标范围之内。
查询:吞吐量大概在36/sec,响应时间<3s,设置的并发数500 个并发数。
下单:吞吐量大概在25.6/sec,响应时间<3s,设置的并发数350 个并发。
十一、5000 个人抢购,只能50 个人能抢到,你怎么设计并发数的
并发数,按群内最大人数计算,利用二八原则,5000*80%=4000,并发数的峰值为4000

相关文章:
性能测试常见面试问题和答案
一、有没有做过性能测试,具体怎么做的 性能测试是有做过的,不过我们那个项目的性能做得不多,公司要求也不严格。一般SE 给我们相关的性能需求,首先我们需要对性能需求进行场景分析与设计,这里,其实主要就是…...
uniapp进阶技巧:如何优雅地封装request实例
在uniapp开发过程中,合理封装网络请求是提高代码质量和开发效率的关键。本文将介绍一种更为优雅的封装方式,通过创建一个request实例来管理不同类型的HTTP请求。 一、准备工作 在开始封装之前,请确保你的项目中已经安装了uniapp开发环境&…...
实验五、流式视频服务程序mjpg-streamer移植实验
实验日期: 2024 年 10 月 22 日 报告退发 (订正 、 重做) 一、实验目的 1、掌握流式视频服务程序源代码mjpg-streamer的交叉编译方法; 2、掌握在tiny210开发板中运行mjpg-streamer方法; 二、实验内容 1、开启一台烧写了嵌入式Linux系统的…...
(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验三----学校选址与路径规划(超超超详细!!!)
目录 实验三 学校选址与道路规划 3.1 实验内容及目的 3.1.1 实验内容 3.1.2 实验目的 3.2 实验方案 3.3 操作流程 3.3.1 环境设置 3.3.2 地势分析 (1)提取坡度: (2)重分类: 3.3.3 学校点分析 (1)欧氏距离: (2)重分类: 3.3.4 娱乐场所点分析 (1)欧氏距离…...
L16.【LeetCode笔记】前序遍历
目录 1.知识回顾 2.题目 代码模板 3.分析 数组的初始化 malloc开辟的几种方案对比 奇怪的参数returnSize 做法 代码框架 4.代码 提交结果 5.PreOrder函数常见的错误写法 1.知识回顾 106.【C语言】数据结构之二叉树的三种递归遍历方式 2.题目 https://leetcode.…...
泰州榉之乡全托机构探讨:自闭症并非家庭的 “末日”
当提及自闭症时,很多人会担忧地问:自闭症对家庭来说是毁灭性的吗?今天,泰州榉之乡全托机构就来为大家解开这个疑问。 榉之乡大龄自闭症托养机构在江苏、广东、江西等地都有分校,一直致力于为大龄自闭症患者提供专业的支…...
BiGRU:双向门控循环单元在序列处理中的深度探索
一、引言 在当今的人工智能领域,序列数据的处理是一个极为重要的任务,涵盖了自然语言处理、语音识别、时间序列分析等多个关键领域。循环神经网络(RNN)及其衍生结构在处理序列数据方面发挥了重要作用。然而,传统的 RN…...
【vue-router】Vue-router如何实现路由懒加载
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
Linux网络编程基础
目录 一、网络发展历史和分层 1.1Internet的历史 1.2网络的体系结构 1.2.1OSI模型 1.2.2TCP/IP协议族 1.2.3各层典型协议 1.2.4网络的封包和拆包 二、网络编程的预备知识 2.1Socket 2.1.1概念 2.1.2类型 2.2IP地址 2.3端口号 2.4字节序 一、网络发展历史和分层 …...
MySQL中的幻读问题
1. 什么是幻读? 幻读是一种数据库事务中可能出现的并发问题,具体表现为:在同一个事务中,前后两次查询的结果集不同,仿佛“幻影”一般,出现了原本不存在的数据。 1.1 具体表现: 现象描述 事务 A…...
AI后端工程师面试题的内容
AI后端工程师面试题主要包括以下几个方面的内容: 一、技术基础和项目经验: 1. 微服务架构的理解和应用:请描述你对微服务架构的理解,并举例说明一个你参与过的微服务项目,阐述你在该项目中扮演的角色和所承…...
MFC工控项目实例三十五读取数据库数据
点击按钮打开文件夹中的数据文件生成曲线 相关代码 void CSEAL_PRESSUREDlg::OnTesReport() {CFileDialog dlgOpen(TRUE/*TRUE打开,FALSE保存*/,0,0,OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST,"All Files(mdb.*)|*.*||",//文件过滤器NULL);CString mdb_1, m…...
OpenWrt -制作ubifs文件系统的固件
目的 创建一个ubifs为文件系统的镜像 将backup目录中的内容打包成ubifs文件系统。 ubifs的分区定义 ubi-backup.cfg 文件内容如下, [backup] modeubi imagenand-ipq6018-single.img vol_id0 vol_typedynamic vol_namebackup [bkver] modeubi imagebackup.ubifs v…...
C++ - 继承
继承的基本概念 继承就是一种代码的复用. 子类通过继承父类, 就能使用父类的变量, 方法. 学生和老师这两种身份, 他们都有共同的属性: 他们都有名称, 年龄, 性别 .... 当然他们也有各种独有的属性, 学生有学号, 老师有工号 .... 对于这些共有的属性, 我们可以将它们提取出来: …...
华为服务器使用U盘重装系统
一、准备工作 下载官方系统(注意服务器CPU的架构是x86-64还是aarch64,不然可能报意想不到的错)制作启动U盘(下载rufus制作工具,注意文件系统选FAT32还是NTFS) 二、安装步骤 将U盘插入USB接口重启服务器…...
网络分层模型( OSI、TCP/IP、五层协议)
1、网络分层模型 计算机网络是一个极其复杂的系统。想象一下最简单的情况:两台连接在网络上的计算机需要相互传输文件。不仅需要确保存在一条传输数据的通路,还需要完成以下几项工作: 发起通信的计算机必须激活数据通路,这包括发…...
前端开发 之 15个页面加载特效上【附完整源码】
文章目录 一:彩球环绕加载特效1.效果展示2.HTML完整代码 二:跷跷板加载特效1.效果展示2.HTML完整代码 三:两个圆形加载特效1.效果展示2.HTML完整代码 四:半环加载特效1.效果展示2.HTML完整代码 五:音乐波动加载特效1.效…...
Spring Boot使用JDK 21虚拟线程
JDK 21引入的虚拟线程(Virtual Threads)是 Project Loom 的一部分,旨在显著简化并发编程并提高 Java 应用的可扩展性。以下是虚拟线程的主要特点: 1. 概念 虚拟线程是轻量级线程,与传统的操作系统线程不同࿰…...
《从0到1常用Map集合核心摘要 + 不深不浅底层核心》
《从0到1常用Map集合核心摘要不深不浅底层核心》 前置知识 什么是键值对 键值对是一种数据结构,键是唯一标识,值是对应数据,用来快速查找信息。例: {"name": "Alice"},键是name,…...
12 设计模式之工厂方法模式
一、什么是工厂方法模式? 1.定义 在软件开发中,设计模式 是解决常见软件设计问题的最佳实践。而 工厂方法模式(Factory Method Pattern) 作为创建型设计模式之一,常常被用来解决对象创建问题。它通过将对象的创建交给…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
