三分钟记住20道性能测试经典面试题

2023-05-16

1.什么是性能测试?

测试系统有没有性能问题

考虑时间,空间

服务端资源是否足够

响应时间是否超时

系统是否足够稳定

2.性能测试的应用领域有哪些?

能力验证:乙方向甲方交付项目时,声明项目的性能数据。

例如:向甲方声明能支撑500人1s内同时登录,响应时间在2s以内。出具性能测试报告去证明我声明的能力。

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

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

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

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

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

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

    数据库扩容

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

3.性能测试的核心原则是什么?

基于协议,多线程,场景设计

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

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

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

    并发场景

    负载场景

    稳定性

    压力测试

4.性能测试基本思路是什么?

测什么:明确测试目标(明确需求)

怎么测:怎么设计场景?

    测试计划,测试用例,测试方案

    数据准备

    参数化,表达式,断言

    场景设计(并发,负载,压测)

    得到性能测试结果

测试结果验证

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

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

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

5.测试哪些关键场景?

    浏览器层面:

        web端和app端(H5页面)

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

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

    接口层面

        权限划分

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

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

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

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

        管理员权限(几个用户)

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

                列表查询时间,分页时间

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

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

        超管(1个)

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

6.什么是集合点?设置集合点有什么意义?jmeter中如何设置集合点?

    集合点更多的运用在并发测试

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

7.你在性能场景设计中用到哪些方法?

    参数化,关联,断言,jdbc连接

8.如何识别性能瓶颈?

    1:随着负载不断升高,tps也是不断升高的,正常逻辑

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

9.什么是内存溢出

    1:运行需要的内存大于空间剩余内存;会出现内存溢出

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

10.什么是负载?有哪些负载模式?

    负载就是压力

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

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

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

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

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

11.压力工具的工作原理是什么?

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

12.交付一个性能测试项目,请阐述你的性能测试流程

    1:明确测试需求

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

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

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

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

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

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

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

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

13.前端性能测试关注哪些点?了解哪些前端性能优化方法?

    首屏时间:页面完全展现需要的时间

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

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

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

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

    用户角度

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

        错误率(error)

    

    服务端角度

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

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

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

    浏览器层面

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

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

        hps(hit persecond)每秒点击率

15.性能测试类型有哪些?按顺序描述

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

        单接口基准测试

        容量基准测试

    负载测试

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

    压力测试

        1:稳定性压测

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

        2:破坏性压测

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

    失效恢复测试

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

16.什么是固定等待和隐式等待?

    固定等待:超时时间=0

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

    隐式等待:超时时间>0

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

17.你在性能场景设计中用到哪些方法?

    参数化,关联,断言,jdbc连接

18.什么是上下文切换?哪些场景会存在上下文切换?

1:线程的切换

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

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

2:进程切换

3:特权切换

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

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

19.吞吐量大幅度波动有哪些原因?

    上下文切换的过快;

    gc次数过于频繁;

20.哪些现象说明了IO瓶颈?

await=io等待时间=io处理时间+io队列时间

svctm=io处理时间

await与svctm的差值越大,表示队列时间越长

util磁盘繁忙度,值越大,磁盘越繁忙;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三分钟记住20道性能测试经典面试题 的相关文章

  • 基于Maven的Mybatis开发环境搭建

    1 首先我们需要创建一个基于Maven的java项目 2 在数据库中创建一张表及在idea中创建对应实体类 package com ffyc mybatisdemo model public class Admin private int
  • C++程序员这行能干一辈子吗?

    有人说 xff0c 程序员这一行就是吃青春饭 xff0c 不能干一辈子 xff0c 因为程序员面对的是一份高强度的工作 xff0c 同时面临着技术的快速迭代 xff0c 对于身体素质 学习能力等都有很高的要求 xff0c 所以很多人都面临入
  • 新装的centos7使用ip addr 命令不显示ens33的ip地址

    由于需要 xff0c 又重新装了几台虚拟机 xff0c 都是不同的ip xff0c 新装的虚拟机都不会显示ens33 下面的ip地址 就像这样 xff1a 输入 cd etc sysconfig network scripts 把对应的含有
  • GoLang之ACM控制台输入输出

    文章目录 GoLang之控制台输入输出1 源码1 1Scan1 2Scanf1 3Scanln 2 函数使用2 1scan输入单个参数时 xff0c 遇到回车会停止 多行 2 2scan输入单个参数时 xff0c 遇到空格会停止 多行 2
  • 基于SpringBoot+VUE的服装销售商城管理系统

    项目背景 随着科学技术的飞速发展 xff0c 社会的方方面面 各行各业都在努力与现代的先进技术接轨 xff0c 通过科技手段来提高自身的优势 xff0c 服装销售商城当然也不能排除在外 服装销售商城是以实际运用为开发背景 xff0c 运用软
  • 用Selenium定位充满div class页面元素的方法,id、xpath都没用的抓狂情况下

    以搜狐网首页为例 xff0c 我们要定位 搜狗邮箱 这个链接 xff08 如果是xpath等等各种selenium内置提供的定位方法都没用的情况下 xff09 第一步 xff0c 找到该元素 xff0c 此时显示 lt div class
  • SEC物权链奖金制度分析

    启程SEC物权链是什么 xff1f 靠谱吗 xff1f SEC公链是什么 xff1f 物权链怎么样 xff1f 分析于下 xff1a 一 定位 xff1a 依托原中小企业上市包装辅导策划以及不良资产运作等业务 xff0c 130家实体资产分
  • 基于SSM的个人健康信息管理

    项目背景 随着科学技术的飞速发展 xff0c 通过科技手段提高自身的优势 xff1b 对于个人健康信息管理当然也不能排除在外 xff0c 随着网络技术的不断成熟 xff0c 带动了个人健康信息管理 xff0c 它彻底改变了过去传统的管理方式
  • 基于spring boot的个人博客系统的设计与实现

    末尾获取源码 开发语言 xff1a Java Java开发工具 xff1a JDK1 8 后端框架 xff1a SpringBoot 前端 xff1a Vue 43 HTML 数据库 xff1a MySQL5 7和Navicat管理工具结合
  • day 3

    用栈来做是最简便的 栈 stack 是一种数据结构 xff0c 遵循先进后出的原则 最常用的方法为stack pop弹出最顶部的元素并删除 stack peek弹出最顶部的元素查看 xff0c 但不删除 stack push 添加一个元素
  • java方向笔试强训day6

    分别使用字符串和数组的方式 xff0c 数组更简便一些 import java util Scanner public class test26 将字符串转化为数字 public static int function26 String s
  • equals和==的区别

    equals和 61 61 经常用来去比较两个值或者两个对象 61 61 如果只是用来比较基本数据类型常量 的话 xff0c 那么比较的就是两个常量的值 xff0c 如果用来去比较两个对象引用 xff0c 那么比较的是两个对象的地址 equ
  • java训练day 17 ①杨辉三角(二维数组)②二叉树的镜像(数据结构+递归)

    目录 杨辉三角 二叉树的镜像 杨辉三角 import java util public class Main public static void main String args Scanner scanner 61 new Scanne
  • Linux系统项目部署常见问题

    目录 进入数据库 修改数据库密码 未设置或忘记 部署操作 使用jar包部署和修改操作 使用war包部署 修改端口号 ssm项目打包war包可能遇到问题 进入数据库 没有设置数据库密码则使用 mysql uroot 设置了数据库密码则使用 m
  • 音乐web网站搭建思路

    目录 项目所涉及的页面及对应功能 项目设计思路 数据库设计 Http响应数据格式设计 页面各个功能的请求响应格式设计 1 登录功能 2 上传音乐功能 3 删除音乐功能 4 批量删除音乐 5 查询音乐信息 6 收藏音乐 取消收藏音乐 7 播放
  • 五子棋项目

    目录 核心技术 主要模块和功能 基本思路 注册 登录接口 具体实现 匹配功能接口 具体实现 用户对战接口 具体实现 项目源码Gitee地址 网页版五子棋的基本思路及实现 核心技术 Spring SpringBoot SpringMVCWeb
  • Redis笔记

    Redis 内容来自菜鸟教程 redis部分 REmote DIctionary Server Redis 是一个由 Salvatore Sanfilippo 写的 key value 存储系统 xff0c 是跨平台的非关系型数据库 Red
  • Jmeter接口测试实战练习题及答案(本博客原创·全网首发)

    接口地址 Post xff1a http 10 9 15 72 8093 Api PayGateway 接口参数 参数名 参数值 说明 SystemCode Alipay 系统代码 plateformCode Alipay 平台代码 ser
  • 《操作系统》-生产者消费者问题

    什么是生产者消费者问题 xff1f 系统中有一组生产者进程和一组消费者进程 生产者进程每次生产一个产品放入缓冲区 xff0c 消费者进程每次从缓冲区中取出一个进程并使用 xff0c 那么他们之间具有这样一层关系 生产者 消费者共享一个初始为

随机推荐

  • 普通类和抽象类的区别

    普通类和抽象类的区别 抽象类普通类普通类和抽象类的区别总结 抽象类 含有抽象方法的类就叫抽象类 而抽象方法就是被abstract修饰的方法 xff0c 这个方法可以没有具体的实现 在抽象类的子类中必须对抽象方法进行重写 xff0c 当其子类
  • PowerShell 安装、配置和美化

    文章目录 安装 Windows TerminalPowerShell 7安装 PowerShell 7查看版本Winget 安装安装 MSI 包 配置开启 PSReadLine 2 1 预测性 IntelliSense其他配置 美化手动安装
  • c++学习笔记(八)程序一闪而过怎么办?如何让命令提示符暂停?

    在使用控制台输出的时候 xff0c 你可能经常遇到还没有看清楚输出结果如何就自动退出的情景 这很令人头疼 xff0c 下面我就介绍几种方式避免控制台退出 当然你使用CLion可以不写 xff0c 节约时间 xff0c 但是也要知道 xff0
  • Zabbix 6.0 图文安装部署讲解---LNMP环境

    Zabbix 6 0 图文安装部署讲解 LNMP环境 简介环境需求部署环境关闭系统防火墙一 Mysql8 0 30 部署 二 nginx 部署三 PHP 部署四 zabbix server 部署五 Web端初始化六 解决zabbix 6 0
  • Hive 不同级别日志配置 hive-log4j2.properties

    span class token comment Licensed to the Apache Software Foundation ASF under one span span class token comment or more
  • 飞机订购票系统(数据库课程大作业)

    一 需求分析 nbsp 1 1 功能需求及描述 nbsp nbsp nbsp nbsp 通过对机票预定业务的调查 明确了飞机订购票系统共包括乘客信息模块 航班信息模块 机票订购模块 机票退票模块以及取票信息模块五个模块 图1 1 总体功能模
  • 本地与linux服务器文件互传(超简单)

    利用系统自带的命令行窗口powershell上传 xff08 win10以上系统自带的 xff0c 系统级应用 xff0c 十分推荐使用 xff09 在这Linux 用户名 xff1a hadoop ip 192 168 53 20 打开搜
  • 【剑指offer系列】剑指offer 03-06

    这次我们来讲解剑指offer的全部题目 xff0c 今天是第一天 xff0c 我们来讲解第三题到第六题 xff08 我也不清楚为什么力扣上查不到第一题和第二题 xff09 一 剑指offer 03 题目链接 xff1a 力扣 题目描述 xf
  • 什么是scrum中的3355

    scrum的3355是指 xff1a 3个工件 xff1a 产品Backlog Sprint Backlog 潜在可交付软件增量 3个角色 xff1a PO Master 团队 xff08 最适合人数为7 2到7 43 2之间 xff09
  • 搭建ant+jenkins+jmeter自动化接口测试框架(详细篇)

    引言 为什么要持续集成 1 减少风险 2 减少假定 3 减少重复过程 4 增强项目的可见性 5 持续集成可以带来两点积极效果 xff1a 1 有效决策 xff1a 持续集成系统为项目构建状态和品质指标提供了及时的信息 xff0c 有些持续集
  • Linux C生产者和消费者(线程)

    生产者和消费者 生产者消费者问题实现目标原理代码 生产者消费者问题 生产者消费者共享缓冲区 xff0c 生产者向缓冲区中放数据 xff0c 消费者从缓冲取中取数据 xff0c 当缓冲区中被放满时 xff0c 生产者进程就必须进入挂起状态 x
  • HPE DL388GEN9 /windows server 2012r2 重置管理员密码/忘记管理员密码

    有台HPE DL388GEN9 windows server 2012r2的主机 xff0c 不知道密码 从CSND上查了有人可以通过U盘PE进去用工具去改掉 实测 xff0c 难以进入PE xff08 也可能是我操作有问题 xff09 x
  • ArchLinux,ManjaroLlinux安装,运行Android软件。安装anbox(详细)

    安装anbox我也是用了一个下午的时间来进行安装 xff0c 因此我做了一下总结 xff0c 方便大家安装 这个安装教程arch和manjaro都是可以实现的 xff0c 因为manjaro是arch的分支 xff0c 同样也可以使用anb
  • ArchLinux的安装(BIOS引导方式安装)

    archlinux的安装对于很多新手朋友很不友好 xff0c 于是我对archlinux的安装做了一下整理 xff0c 方便大家安装 安装之前我们需要准备一下 xff1a archlinux的镜像iOS文件 U盘 xff0c 或者虚拟机 脑
  • 汇编语言,and、or指令

    and 和 or指令 and指令 xff0c 作用按位与运算 mov ax 1011 1100b mov bx 1100 1011b and ax bx ax的结果为 xff1a 1000 1000 or指令 xff0c 作用 xff1a
  • 解决wget错误:ERROR: The certificate of ‘xxx’ is not trusted.

    使用wget出现以下错误 wget https github com mozilla geckodriver releases download v0 31 0 geckodriver v0 31 0 linux64 tar gz ERRO
  • git 报错SSL certificate problem: unable to get local issuer certificate解决办法

    git中的SSL certificate problem unable to get local issuer certificate错误的解决办法 uManBoy 这是由于当你通过HTTPS访问Git远程仓库的时候 xff0c 如果服务器
  • Linux 对整个系统备份和还原

    对系统进行备份非常的重要 xff0c 如果有一天 xff0c 系统崩溃了 xff0c 可以重装系统 xff0c 但是重装系统后又需要进行相关的配置 xff0c 这会显得非常的麻烦 xff0c 又会浪费很多的时间 备份的方式 xff1a 分两
  • Win11安装python-3.11.1

    注意整个安装过程需要联网 xff01 xff01 xff01 python 3 11 1下载地址 xff1a https www python org ftp python 3 11 1 python 3 11 1 amd64 exe 1
  • 三分钟记住20道性能测试经典面试题

    1 什么是性能测试 xff1f 测试系统有没有性能问题 考虑时间 xff0c 空间 服务端资源是否足够 响应时间是否超时 系统是否足够稳定 2 性能测试的应用领域有哪些 xff1f 能力验证 xff1a 乙方向甲方交付项目时 xff0c 声