vlambda博客
学习文章列表

测试面试题集-性能测试

VOL 123

13

2020-05

今天距2021年232天

这是ITester软件测试小栈第123次推文

测试面试题集-性能测试

This browser does not support music or audio playback. Please play it in WeChat or another browser. 测试面试题集-性能测试



本文4114字,阅读约需10分钟





Hi,大家好呀,我是coco。

在上一篇测试面试系列:,主要盘点了面试过程中被问频率较高的网络相关面试题。

今天分享性能相关面试题,希望可以为你的面试添砖加瓦。

测试面试题集-性能测试



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

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

性能指标分为两个方面:

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

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


系统指标

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

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

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

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

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

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

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

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

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

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

  • 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,Weblogic web服务器,JVM(java虚拟机),ThreadPool线程池,JDBC数据驱动 ;

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

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

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

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


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

  • 负载测试(Load Testing):测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,保持配置不变的情况下,最大支持多少并发用户数,软件请求出错率等;

  • 压力测试(Stress Testing):压力测试也称为强度测试,主要测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的CPU利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同;

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

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

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


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

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

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

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

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

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

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

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

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

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

  • 系统的响应时间;

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

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

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

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


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

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

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

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


5.简述性能测试步骤?

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

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

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

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

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

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

  • 服务器的JVM运行情况; 

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

测试面试题集-性能测试


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

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



10.什么是内存泄露?

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


11.敏捷开发模型,如何开展性能测试?

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

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

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

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





以上

That‘s all
更多系列文章
敬请期待




ITester软件测试小栈
往期内容宠幸













测试面试题集-性能测试

快来 星标 置顶 关注
测试面试题集-性能测试
测试面试题集-性能测试

<<  滑动查看下一张图片  >>

今日问题
在以往的面试过程中,你被面试官问到过哪些性能相关的面试题? 
(欢迎在下方留言区发表你的获奖感言)
测试面试题集-性能测试
 后台 回复" 资源" 取干货
回复" 21天打卡" 一起打怪升级

测试交流Q群:727998947

点亮一下在看,你更好看