占用系统资源测试_高频性能测试面试题15道

509a633d44ba0b21785084fac69b5f77.png

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

性能测试 通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。

性能指标分为两个方面:

  • 系统指标:与用户场景和需求相关指标;

  • 资源指标:与硬件资源消耗相关指标;

系统指标:

响应时间:即系统响应时间(Transaction Response Time),应用系统从发出请求到客户端接收到响应所消耗的时间,是用户视角最关心的软件性能业务体验。响应时间为网络响应时间与应用程序响应时间之和;

2/5/8原则

  • 一般响应时间在2s内,用户会感觉比较满意;

  • 在2s~5s之间,用户勉强能接受;

  • 大于8s,用户就可能无法接受,从而刷新页面或者离开;

平均响应时间:所有请求花费的平均时间;

吞吐量:单位时间内系统能够处理的客户请求的数量,直接体现软件系统的性能承载能力,计算方式是完成的事务数除以时间;

并发用户数:并发主要是针对服务器而言,在同一时刻与服务器进行交互(指向服务器发出请求)的在线用户数;

在线用户数:某段时间内,用户访问系统的用户数,如多个用户在浏览网页,但没有对同时对服务器进行数据请求,需要与并发用户数区分开;

最大并发用户数:有两种理解方式一种是从业务的角度来模拟真实的用户访问,体现的是业务并发用户数,指在同一时间段内访问系统的用户数量。另一种是从服务器端承受的压力来考虑,这里的“并发用户数”指的是同时向服务器端发出请求的客户数,一般结合并发测试(Concurrency Testing)使用,体现的是服务端承受的最大并发访问数;

事务:Transaction,可以看作是一个动作或是一系列动作的集合,例如登录,从登录开始到登录结束为一个事务。

TPS:Transaction per second,每秒钟系统能够处理的交易或者事务的数量,即服务器对客户请求的能力,是衡量系统处理能力的重要指标。

吞吐量:网络传输的数据量(处理客户的请求数);

吞吐率:单位时间(可以是秒/分/时/天)内网络成功传输的数据量,如请求数/秒、页面数/秒;

点击数:Web Server收到的HTTP请求数;

点击率:HPS,每秒钟用户向Web Server提交的HTTP请求数;

资源指标:

硬件性能指标:CPU,内存Memory,磁盘I/O(Disk I/O),网络I/O(Network I/O) ;

中间件:常用的中间件如web服务器Tomcat,nginx,Weblogic,JVM(java虚拟机),ThreadPool线程池,JDBC数据驱动 ;

数据库指标:SQL,吞吐量,缓存命中率,连接数等;

JVM:Java虚拟机,为使java的代码可以编译运行在不同的平台上顺畅,仿真模拟各种计算机来实现 ;

前端指标 :首次显示时间,页面数量,页面大小,网络startRender,firstRender等。前端的性能与后端的性能的不同点在于,前端是每个用户的直观的感受,如前端页面加载元素耗费的时间,而后端的性能关注点在于多用户使用系统时,服务器是否能够承受或者服务器的处理能力如何,能否以较好的响应时间响应;

Load:系统平均负载,特定时间间隔内运行进程数,Load与cpu核数一致;

2、性能测试包含了哪些测试类型?

负载测试(Load Testing):模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题;(比如实际中我们说从比较小的负载开始,逐渐增加模拟用户的数量, 直到应用程序响应时间超时,就是说的负载测试)

压力测试(Stress Testing):压力测试也称为强度测试,是在 强负载(大数据量、大量并发用户等) 下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试;(压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃)

容量测试(Volume Testing):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等;

并发测试(Concurrent Testing): 测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题;

基准测试 (BenchmarkTesting):比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能;

3、你认为不同角色关注的软件性能要点分别是?

客户:重点关注打开速度及响应时间;

  • 在进行操作时,每个请求之间的间隔时间;

  • 大量用户在同一时刻在软件系统上操作是否有较好的体验;

开发人员:重点关注响应时间和数据库交互,进行性能调优;

  • 系统架构:架构设计是否合理;

  • 数据库设计:数据库设计是否存在问题;

  • 代码:代码是否存在性能方面的问题,系统中是否有不合理的内存使用方式;

  • 业务逻辑:系统中是否存在不合理的线程同步方式,系统中是否存在不合理的资源竞争;

测试人员:重点关注用户感受到的软件性能;

  • 系统的响应时间;

  • 系统状态的相关信息,如:CPU、内存、应用服务器状态、JVM可用内存、数据库的状态等;

  • 系统的可扩展性,处理并发的能力;

  • 系统可能的最大容量,可能的性能瓶颈,通过更换哪些设备或是进行哪些扩展能够提高系统性能;

  • 长时间运行是否足够稳定,是否能够不间断的提供业务服务等;

4、如何得到性能测试需求?

  • 查看需求文档提取性能测试需求,了解客户实际使用情况;

  • 结合业务信息,设计操作场景从而总结出需要测试的性能关键指标;

  • 执行用例后,提取关键性能指标来分析是否满足性能需求;

5、简述性能测试步骤?

熟悉应用:了解应用的架构、功能逻辑;

需求分析:根据测试目的,细化需求;

测试方案:明确性能测试指标,性能场景及工具选择;

测试准备:客户端准备、测试数据准备、测试脚本准备;

执行测试:执行测试,监控测试客户端和服务器性能,监控服务器端应用情况;

  • 客户端的系统资源(CPU、IO、Memory)情况; 

  • 服务端的系统资源(CPU、IO、Memory)情况; 

  • 服务器的JVM运行情况; 

  • 服务端的应用情况是否有异常; 

  • 响应时间、吞吐量等指标;

性能分析与调优:找出性能瓶颈,提高系统整体性能,满足用户需求;

编写测试报告:测试结束后,归档整理测试报告;

6、需求分析阶段,你从哪几个方面入手性能测试?

  • 明确到底要不要做性能测试,性能测试的目的是什么;

  • 明确被测系统的架构、软硬件配置、网络等;

  • 明确被测系统的基本业务、关键业务、用户行为;

  • 明确被测系统未来的业务拓展规划以及性能需求;

  • 明确工具选型,比如Jmeter、LoadRunner等;

  • 明确性能测试的指标,比如并发、吞吐量、响应时间等;

7、你如何识别性能瓶颈?

硬件上的性能瓶颈:如CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈;

应用软件上的性能瓶颈:如服务器操作系统瓶颈(参数配置)、数据库瓶颈(参数配置)、web服务器瓶颈(参数配置)、中间件瓶颈(参数配置)等;

应用程序上的性能瓶颈:应用程序上的性能瓶颈,如SQL语句、数据库设计、业务逻辑、算法等等;

操作系统上的性能瓶颈:一般指的是Windows、linux等操作系统,如出现物理内存不足时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率大大降低,从而导致行为的响应时间大大增加,可以认为在操作系统上出现了性能瓶颈);

网络设备上的性能瓶颈:一般是防火墙、动态负载均衡器、交换机等设备导致;

8、打开浏览器输入网址到页面渲染,响应时间通常可以细分为哪些?

  • 从客户端到服务端的请求时间(请求网络传输时间Request); 

  • 从服务端返回数据到客户端的时间(响应网络传输时间Response); 

  • 页面渲染时间(客户端浏览器加载页面的时间); 

  • 处理器的处理时间(应用服务器+数据库服务器处理时间);

9、软件为什么会有性能问题?

软件是运行在环境当中的,在高负载访问下,业务逻辑比较复杂,不同的软硬件资源都会引起性能问题,还有软件本身的代码、数据库等会引起性能问题。

10、什么是内存泄露?

内存泄漏 是指对象不再被应用程序使用,但是垃圾回收器却不能回收它们,因为它们正在被引用。对于长时间运行的程序来说,内存泄漏会使程序占用的内存一直增加,最后就会出现内存耗尽而导致宕机,即使不宕机也会是系统的运行越来越慢,还有就是内存有其他资源,比如数据库连接,网络连接等等。

11、什么是内存溢出?

内存溢出 应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。

12、敏捷开发模型,如何开展性能测试?

①每个迭代目标中包含明确的性能目标; 

②建立不同层次的性能测试; 

③完全或接近完全自动化的性能测试; 

④使用测试驱动方法保证性能与优化性能;

13、性能测试什么时间做?

系统性能测试在功能测试之后,系统比较稳定的时候开展。不同阶段都可能做性能测试,如单接口性能测试,集成性能测试。

14、有验证码的功能,怎么做性能测试?

方案1、将验证码暂时屏蔽,完成性能测试后,再恢复。

方案2、使用万能验证码。

15、常见性能测试工具?

Loadrunner、JMeter、SoapUI、Tsung等,根据不同的测试场景选择适合的工具。

16、如何识别性能瓶颈?         

  • 查看系统日志,如果日志记录的全面,很容易通过日志发现问题。比如,系统宕机时,系统日志打印了某方法执行抛出out of memory的错误,很快定位到导致内存溢出的问题在哪里。        

  • 利用性能监控工具,比如:linux系统环境下通过nmon来监控系统性能。  

  • 设计合理的性能测试场景,好的测试场景能更加快速的发现瓶颈。

-- End --



文末寄语  有些事,不是不在意,而是在意了又能怎样。人生没有如果,只有后果和结果。成熟,就是用微笑来面对一切小事。

25c6467d2e9ede2d047de32042296697.png

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

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

相关文章

ensp1.3.00.100用哪个virtualbox_virtualBox使用 Ubuntu18.0.4

一、视图进入缩放模式,虚拟机上方菜单栏无法显示?热键c,恢复。 热键默认为右边的ctrl键。开启增强功能?打开虚拟机后,点击上方设备-->安装增强功能。虚拟机里面会出现识别到光盘。先挂载光盘到指定路径:…

动态ram依靠什么存储信息_处理器内存系统1(ROM,RAM,数据存储顺序)

本篇文章主要介绍处理器中存储器:ROM和RAM以及数据在内存中的存储顺序:大/小端(Little/Big Endian)。只读存储器(ROM)ROM(Read Only Memory)用来存储和保存数据。ROM数据不能随意更新,但是在任何时候都可以读取。即使是断电,ROM也…

python中row的用法_关于Python中openpyxl使用iter_rows()的方法

之前已经对iter函数的用法有过讲解,记忆遗忘的小伙伴可以重新回顾一遍。今天就iter函数的拓展,讲讲openpyxl中导入iter_rows()的方法。 当我们使用以下代码: import openpyxl as op ms = op.load_workbook(mtest.xlsx) ws = ms.active op.worksheet.Worksheet.iter_rows() 然…

市直系统推荐市级以上表彰的_推荐市级以及以上教学方面表彰的细则

推荐市级以及以上教学方面表彰的细则为了客观、公正、合理地评价教师的德、才表现和工作实绩,用制度来激励、督促全体教职工提高政治和业务索质,认真履行好自身工作职责。避免人为因素,增强评优的透明度,有利于调动广大教职工工作…

react全局状态管理_react状态管理redux

Redux(上)结合阮老师的技术博客,将自己吸收到的内容做了个整理:曾经有人说过这样一句hua : 如果你不知道是否需要Redux,那就是不需要它。从组建层面考虑,什么样子的需要redux;某个组件的状态需要共享,某个状…

edges2shoes数据集下载_edges2cats

edges2cats是一款十分有趣味的生成猫咪的游戏,在这款游戏是以多种不同的图形相结合,来生成你所想要生成的画面,游戏的玩法非常的有趣,感兴趣的可以试玩哦!edges2cats游戏怎么玩 玩法介绍首先清除画面,根据你…

单片机机器周期怎么计算公式_单片机定时器周期计算公式

定时器是单片机的重要功能模块之一,在检测、控制领域有广泛应用。定时器常用作定时时钟,以实现定时检测,定时响应、定时控制,并且可以产生ms宽的脉冲信号,驱动步进电机。定时和计数的最终功能都是通过计数实现&#xf…

mac 下mysql工具_mysql之工具的使用总结(mac版本)

13.mysql Mac终端操作12.MySql在Mac上的安装与配置详解;11.mac下安装mysql5.7.18,连接出现Access denied for user rootlocalhost (using password: YES)13.mysql Mac终端操作1.启动mysql :brew services start mysql2.登陆mysql : mysql -u…

sqoop同步时间戳到mysql_在sqoop导入中使用24小时时间戳

我想从使用自由格式查询的oracle导入数据,并且需要以24小时格式存储时间戳。在sqoop导入中使用24小时时间戳sqoop import --connect jdbc:oracle:thin:(server credntials) \--username ***** --password ***** \--query "select emp_uid, emp_name, salary, t…

mysql权限系统的工作原理_Mysql权限系统工作原理

MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情。当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来授予权限。MySQL在认定身份中考虑你的主机名和用户名字,是…

mysql日志文件的类型和作用_Mysql日志文件和日志类型介绍_MySQL

日志文件类型MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情:日志文件记入文件中的信息类型错误日志记录启动、运行或停止mysqld时出现的问题。查询日志记录建立的客户端连接和执行的语句。更新日志记录更改数据的语句。不赞成使用该日志…

ruby mysql 驱动_windows下Rails安装MySql驱动的配置

1.安装ruby这我就不废话了,安装很简单,网上资料也很多。安装完后再环境变量path里加入D:ruby\bin(视你的安装路径了)安装完后在命令行输入ruby -v, 会显示版本号,表示安装成功,我的版本号是1.8.62.安装rails我建议去官…

cross join 一张表没有值关联不出来数据_你是否还在对left join、right join和join有困扰呢?...

说到SQL,很多人可能用了挺久,但依然有个问题一直困扰着,那就是 left join、 join、 right join和 inner join等等各种 join的区别。网上搜,最常见的就是一张图解图,如下:接下来就来实际自己动手实验&#x…

MySQL如何修改表的储存方式_修改mysql默认存储引擎的方法

修改mysql默认存储引擎的方法,供大家学习参考。先来了解一下mysql存储引擎:mysql服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上。存储引擎负责管理数据存储,以及mysql的索引管理。通过定义的AP…

前端判断是否安装桌面应用_前端开发人员的桌面应用神器 Electron

01为什么用 JavaScript 来开发桌面应用?曾经的 JavaScript 脆弱、简陋、甚至有被边缘化的危险,不过 JavaScript 在经过了两次飞跃后(以 V8 为首的 JavaScript 引擎和 Node.js 的问世),不再受人欺负,早已升级…

mysql 导出csv 多列_从包含300多列的csv,txt或xls文件创建MySQL表

你可以用一些langague C ,PHP解析txt文件......然后构建一个请求并执行它。PHP和PDO :: module将使这个最简单。我不知道某个程序是否已经完成这项工作。这是一个解决方案。如果您选择这样做并遇到麻烦,欢迎您。每个stackoverflow成员都会帮助您。编辑&a…

mysql error 1594_【MySQL】解决mysql的 1594 错误-阿里云开发者社区

对于主从架构的mysql,当发生主机断电或者其他原因异常crash的时候, slave的容易发生读取binlog出错的问题,最常见的是show slave status \G;Master_Log_File: mysql-bin.000029Read_Master_Log_Pos: 3154083Relay_Log_File: relay-bin.000478Relay_Log_Pos: 633Rel…

mysql innodb文件_MySQL的InnoDB文件介绍

MySQL一个显著的特点是其可插拔的存储引擎,因此MySQL文件分为两种,一种是和MySQL数据库本身相关 的文件,一种是和存储引擎相关的文件。本文主要介绍和InnoDB存储引擎相关的文件。表空间文件InnoDB在存储上也模仿了Oracle的设计,数…

python中与label类似的控件是_python中tkinter的使用(控件整理)(一)

1、使用tkinter.Tk() 生成主窗口(windowtkinter.Tk()):window.title(标题名)修改框体的名字,也可在创建时使用className参数来命名;window.resizable(0,0)框体大小可调性,分别表示x,y方向的可变性;1表示可变,0表示不可…

jdbc dao 工具类mysql_Java基于JDBC实现事务,银行转账及货物进出库功能示例

本文实例讲述了Java基于JDBC实现事务,银行转账及货物进出库功能。分享给大家供大家参考,具体如下:1. 转账业务转账必须执行2个sql语句(update更新)都成功的情况下,提交事务,如果有一个失败,则2个都回滚事务…