您的位置:首页 > 财经 > 金融 > 定制app开发哪家比较好_网页设计平面设计哪个好_短视频seo厂家_2022最新国际新闻10条简短

定制app开发哪家比较好_网页设计平面设计哪个好_短视频seo厂家_2022最新国际新闻10条简短

2025/3/10 15:12:17 来源:https://blog.csdn.net/m0_58552717/article/details/146079450  浏览:    关键词:定制app开发哪家比较好_网页设计平面设计哪个好_短视频seo厂家_2022最新国际新闻10条简短
定制app开发哪家比较好_网页设计平面设计哪个好_短视频seo厂家_2022最新国际新闻10条简短

性能测试作为软件开发中的关键环节,确保系统在高负载下仍能高效运行。面试中,相关问题常被问及,包括定义、类型、工具选择、规划与执行方法、常见瓶颈、敏捷环境下的处理、监控作用、虚拟用户数量确定、功能测试的区别、JMeter工作原理、HTTP与HTTPS的差异、测试数据处理、性能指标监控、优化方法、微服务性能测试方法以及CI/CD管道集成。本文将详细分析这些问题,提供答案,并结合实际案例和最佳实践,为面试准备提供全面指导。

本文基于多个权威来源整理了相关信息,包括Performance Testing、Stress Testing、Load Testing、JMeter、LoadRunner、Gatling、iperf、netperf、stress、sysbench等,结合面试常见问题,探讨性能测试的核心领域。内容包括问题分类、详细答案、案例分析和最佳实践,旨在为读者提供一个完整的面试准备框架。

性能测试的定义与类型

什么是性能测试?

性能测试是一种软件测试,测量系统在不同负载下的响应时间、吞吐量和资源利用率,确保在正常和高峰场景下表现良好。其目标是验证系统是否满足性能要求,防止因性能问题导致用户流失或业务中断。例如,测试一个电商网站,确保在双十一秒杀高峰期能处理百万并发请求。

性能测试有哪些类型?

性能测试包括以下类型:

  • 负载测试:模拟正常或预期负载,检查系统在日常使用下的性能。例如,测试网站在500个并发用户时的响应时间是否符合SLA。
  • 压力测试:超出系统容量,测试极限和故障点,关注系统在极端情况下的行为。例如,测试网站在2000个并发用户时的表现,观察是否崩溃。
  • 耐久测试(或浸泡测试):测试系统在长时负载下的表现,检查性能退化或失败。例如,24小时运行500用户,观察内存泄漏。
  • 尖峰测试:测试系统对突发流量增加的响应,例如模拟秒杀活动开始时的流量激增。
  • 可扩展性测试:测试系统随负载增加的性能,确定是否能高效扩展。例如,增加服务器后,响应时间是否线性改善。

 

类型目标示例场景
负载测试验证正常负载下的性能500用户浏览网站,测响应时间
压力测试找系统极限和故障点2000用户访问,测崩溃点
耐久测试检查长时负载下的稳定性24小时运行,观察内存使用
尖峰测试模拟突发流量,测响应秒杀开始,流量瞬间翻倍
可扩展性测试评估系统扩展能力增加服务器后,性能是否提升

这些类型在面试中常被问及,需清楚区分,结合项目场景解释。

工具与技术

常见性能测试工具有哪些?

常用工具包括:

  • JMeter:开源工具,适合负载和性能测试,支持HTTP、JDBC等协议,社区活跃。
  • LoadRunner:商业工具,支持多种协议,适合企业级测试,功能强大。
  • Gatling:开源工具,使用DSL定义测试场景,性能高,适合Web应用。
  • WebLoad:支持HTTP/HTTPS,适合Web应用测试,易于集成CI/CD。
  • NeoLoad:商业工具,提供负载测试和性能监控,适合复杂系统。

例如,JMeter常用于中小型项目,LoadRunner适合银行系统的高并发测试。

JMeter是如何工作的?

JMeter通过模拟用户发送请求,使用测试计划定义测试流程,包含采样器(发送请求)、监听器(显示结果)、断言(验证响应)和计时器(控制间隔)。例如,测试一个网站,设置100用户并发访问,JMeter记录响应时间和错误率。

HTTP和HTTPS在性能测试中有何差异?

HTTP不加密,传输快但不安全;HTTPS用SSL/TLS加密,安全但因加密开销可能增加延迟。测试时需考虑生产环境,如电商网站通常用HTTPS,需评估加密对性能的影响。

规划与执行

如何规划性能测试?

规划步骤包括:

  1. 确定目标:明确测试目标,如测响应时间或系统容量。
  2. 了解系统:分析系统架构、组件和预期行为。
  3. 定义场景:模拟真实用户交互,如登录、浏览、购买。
  4. 准备数据:确保测试数据真实,覆盖边缘案例。
  5. 设置指标:定义KPI,如响应时间<2秒,吞吐量>1000请求/秒。
  6. 选工具:根据需求选JMeter或LoadRunner。
  7. 配置环境:模拟生产环境,设置服务器和网络。
  8. 执行测试:按计划运行,监控系统表现。
  9. 分析结果:对比指标,找瓶颈。
  10. 报告发现:文档化结果,建议优化。

例如,测试电商网站,先模拟500用户正常浏览,再增加到2000用户找极限。

如何确定负载测试的虚拟用户数量?

确定虚拟用户数需:

  • 了解业务需求,如预期并发用户数。
  • 分析历史数据,估算高峰期流量。
  • 定义测试阶段,如渐进加载。
  • 考虑用户行为,如部分用户重操作。
  • 试点测试,从小规模开始,逐步增加。
  • 咨询利益相关者,确保符合预期。

例如,电商双十一预计1万用户,试点500用户后,逐步增至1万。

性能瓶颈与优化
应用中常见的性能瓶颈有哪些?

常见瓶颈包括:

  • 数据库查询慢:SQL未优化,索引缺失。
  • 网络延迟:带宽不足或远程服务慢。
  • 服务器资源不足:CPU、内存或磁盘瓶颈。
  • 代码优化差:算法低效,循环冗余。
  • 并发问题:多用户访问时锁竞争。
  • 外部依赖慢:第三方API响应慢。

例如,测试发现响应时间长,分析后优化数据库索引,性能提升50%。

基于性能测试结果如何优化系统?

优化步骤:

  1. 分析结果:识别慢组件,如数据库查询。
  2. 找根因:用监控工具分析CPU使用率,确定瓶颈。
  3. 优先优化:按影响排序,先修高优先级问题。
  4. 实施更改:如加索引、升级服务器或优化代码。
  5. 重新测试:验证优化效果,测新指标。
  6. 迭代优化:持续改进,直到达标。

例如,优化后响应时间从5秒降到2秒,满足SLA。

监控与指标
监控在性能测试中起什么作用?

监控实时收集数据,如CPU使用率、内存、响应时间,识别瓶颈,确保测试有效,分析结果优化系统。例如,监控发现CPU100%,需加服务器。

性能测试中监控哪些常见指标?

包括响应时间、吞吐量、错误率、资源利用率(如CPU、内存)、事务率和延迟。例如,响应时间>5秒,需优化。

1、性能测试怎么测试?

    性能测试其实就是通过自动化工具模拟多种正常、峰值以及异常负载来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,二者可结合使用。

    性能指标主要有平均响应时间、90%响应时间、吞吐量、吞吐率,每秒事务数,以及服务器的资源使用率(CPU 占比,mem 内存占比等)等。当并发用户数超过 300 时,为了让测试数据更准确,可以考虑分布式压测,通过 jmeter 客户端控制几台 jmeter 服务器进行测试。

    性能测试要先调试好脚本,主要考虑对脚本的数据参数化和添加断言。因为有些接口需要对业务逻辑或参数格式进行校验,为了能让所有线程数跑起来,需要将数据参数化。

数据参数化有这几种做法:

1、可以将一些固定值改成随机函数;

2、利用 JDBC 从数据库读取数据并关联变量;

3、Excel 数据参数化,

4、动态关联参数化,断言是为了判断用例是否

执行成功,并验证服务器的响应错误率。响应断言常用 json 断言,xml 断言用的最少,

 

    性能测试的目的是为了检验系统能否满足客户的性能需求,若性能需求无法满足时,则要考虑对系统进行性能调优,一般用排除法:

1、首先考虑网络方面问题:使用 ping 命令查看与目标服务器的连接是否正常、传输速度的快慢。通过提升服务器的带宽,看响应时间是否相应降低。

2、考虑数据库的问题,可以单独去压测数据库,查看数据库的最大连接数和 SQL 语句的执行时间,索引命中率和 sleep 等待时间等

3、考虑 Apache/Nginx 等中间件的问题,查看中间件设置的最大连接数是否合理,如果设置的连接数太小,会话数超过设定的最大连接数时会导致等待时间变长,出现响应超时情况

4、考虑服务器的硬件配置,如内存、CPU、磁盘读写速度等,可以用 top 命令来监控,也可以使用nmom 工具来监控,nmom 会把监控的数据形成表格形式,方便我们查看。

5、最后考虑开发代码写的好不好,处理时间长不长的问题。

举例:

在我之前的公司,我们主要是会考虑用户操作使用比较频繁的模块,比如借贷,充值,投资模块,我们一般会通过增加并发数来压测,观察 CPU、mem、磁盘读写、吞吐量和每秒事务数等性能指标,以前我老大要求我并发 100 个用户,我用 jmeter 把线程数设为 100,永久循环,持续时间半个小时,设置启动延退 55,在 Linux 启用 nmom 工具监控服务器。

当我运行脚本的时候我看聚合报告 90%的平均响应时间达到了 6s,吞吐量也比较小,用 top 命令监控资源发现 CPU 差不多到了 100%。于是我用 Navicat 工具通过 SQL 命令 show full processlist 取当前运行的 SQL 语句,发现有许多语句用的是左关联,在查看了这条 SQL 语句的执行计划发现没有用索引,再查看了索引的命中率,命中率倒是还行看了下 nmom 生成的报告,发现 CPU 一直是处于爆满状态,其中主要是 mysql 的占比很大,这个时候我基本上判断数据库的问题。

于是我就照着前面的步骤再次压测,同样还是用 nmom 工具去监控 CPU,mem 网络等状态,这次我是主要在 Navicat 上用命令去抓取 SQL 语句,还是一样有很多语句都是左关联,并发现很多空连接(sleep),我就用 show global variable like"wait_time"命令查看了设置的休眠时间(等待时间)发现时间很长 28800s,然后我就把这个休眠时间改成了 20s,因为 SQL 语句使用了很多左连接,我就用show variables like"tables_size"查看了临时表的空间大小、发现临时表只有 16m,我将空间改成了 1G再去压测了下,发现 CPU 只是降了 10%左右,nmom 报告上还是显示 mysql 占的 CPU 很大,然后运行的时候,用 top 命令监控,发现有的时候有很多 mysq 进程同时运行(因为没有设置连接池),我就用命令查看了下 mysql 的最大连接数,因为 SQL 语句的执行速度还是挺快的,所以就把 mysql 的连接数调小到 50,再去跑了一遍发现 CPU 降到了 40%左右,并且其他的性能指标也都还不错。最后把聚合报告的数据以及 nmom 的数据整理成性能报告给老大,其实做接口性能主要就是用排除法个一个去排除,发现性能问题就要先解决了性能问题再压测,不然其他的问题也有可能是这个性能问题导致的所以接口性能基本上就是观察,各个性能指标都在范围之内就差不多了。

2、性能测试流程是怎么样的?

另外一种问法:简单介绍下你们公司的性能测试流程是怎么样的?

我们那个项目的性能做得不多,公司要求也不严格。

对于流程这块,首先就要对整个系统进行详细的分析,确定基本的测试范围,看下系统的哪些业务是需要做性能测试的,还有就是做那方面的性能测试,对于我们那个项目,当时就做了几个业务做了些简单的并发压测(稳定性)这块,像登录的,搜索查询,下单,还有就是购物车里面的几个接口都有做过,然后就是对各个业务场景进行详细的场景分析与设计,确定每个业务场景的并发数,是否需要设置集合点啊,压测时间是多长,还有各个业务场景的性能指标等等,场景设计这块基本上都是老大跟产品哪个一起弄的,我参与的不是太多。

上面把个场景设置好了之后,提交给我们,我们就是根据老大设置好的那些场景编写了基本的性能测试用例,其实做性能测试,我觉得前期最关键的还是业务场景一定要设计好,后期我们主要的任务就是准备各自任务需要用到的一些测试数据,搭建好测试环境,还有就是测试脚本设计与开发,执行,并生出测试报告,对于测试结果我们一般会简单的做个分析,如果没有什么问题,基本后期就写一个性能测试报告。流程大概就是这样的。

3、你们性能观察哪些指标,大概指标范围是怎么样的?

对于指标这块,业务方面的指标主要有:并发数,90%用户的平均响应时间

错误率,吞吐量/吞吐率这些,例外还需要关注服务器资源的使用情况,像:CPU 的使用率、内存的占有率,磁盘 IO,网络。

我们那个项目当时只针对,登录,搜索查询,下订单,购物车相关接口,支付等业务做了些简单的并发,压测这块,指标大概是这样的:

单基准业务并发测试登录,注册,查询 1s 以内,下订单,购物车相关接口,支付 2s 以内,混合业务性能:5s 以内

响应时间:登录,注册业务<2s 之内查询,下订单,购物车,支付业务<3s

充值,提现,查看充值日志,查看提现日志业务查询标的,<3s

投标,申请借款<5s

错误率:0

吞吐量/吞吐率:200 左右请求/sec

CPU:80%以内

内存:80%以内

I/O: %util<=80%,%nowait<=20%

        %util: 磁盘一秒中有百分之多少的时间用于 I/O 操作,

        % nowait:磁盘等待处理时间占比

带宽:<=系统带宽的 30%,无丢包,无延迟,无阻塞

4、这个测试的环境配置,如转速度?

租用的服务器,一台数据库服务器,一台后端服务器

8 核 16G 网络带宽 1000M,2.5GHZ 磁盘 15000pm 转数

5、性能测试计划有哪些内容?

主要是时间进度安排与工作安排,主要是环境,测试任务,测试需求,测试方法与策略,测试环境准备,测试通过的标准。

比如说原来我们一个项目性能测试时做了 5 天,那我们计划是,测试策略与用例编写一天,测试准备需要 1 天,测试执行 2 天,报告总结 1 天。

6、有没有写过性能测试报告,具体包括哪些内容?

性能测试报告,需要每次 Jmeter 压测完成的 html 报告的数据跟 nmon 工具监控的数据,整理出一份性能测试报告,性能测试报告,主要包含:

1,测试资源(环境,测试数据,表里面需要多少数据,测试工具)

2,测试设计(测试业务,测试类型,测试时间,并发用户数)

3,测试分析(每一个场景都需要分析)

4,测试结论(能不能上线,不上线的原因)

5,优化和建议

6,测试通过的标准,平均响应时间<5s,资源利用率<75%,事务失败率<5%

7、什么是内存泄漏,什么是内存溢出?

内存泄漏:

是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。

内存溢出:OOM

    1. 指程序申请内存时,没有足够的内存供申请者使用 1M 实际要占用 2M 内存,

    就说分配的内存不够,导致内存溢出

    2. 给了你一块存储 int 类型数据的存储空间,但是你却存储 long 类型的数据

    3. 长期出现内存泄漏,导致系统内存越用越少,最终导致内存不够用,导致系统崩溃,出现 OOM

8、吞吐量,吞吐率?

吞吐量:KB

指在一次性能测试过程中网络上传输的数据量的总和(单位应该 KB),也可以这样说,在单次业务中,客户端与服务器端进行的数据交互总量;对交互式应用来说,吞吐量指标反映服务器承受的压力。

并不是吞吐量越高越高,一个服务器的性能,要从多个方面去考虑:

90%用户的平均响应时间、错误率、吞吐量/吞吐量、CPU、内存、磁盘 I/O、网络的占用情况,还有服务器的配置。

吞吐率:

吞吐量/传输时间,即单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量,它是衡量网络性能的重要指标。

12s  800M 数

800 * 1024 / 12 = 66666 KB/sec

通常情况下,吞吐率用“字节数秒”来衡量,当然,也可以用“请求数/秒”来衡量;

9、吞吐量与吞吐率跟负载有什么关系?

吞吐量/率和负载之间的关系:

1、上升阶段:吞吐量随着负载的增加而增加,吞吐量和负载成正比;

2、平稳阶段:吞吐量随着负载的增加而保持稳定,无太大变化或波动;

3、下降阶段:吞吐量随着负载的增加而下降,吞吐量和负载成反比;

总结:吞吐量/率干不过负载!

10、当服务器满了之后,吞吐量和响应时间怎么变化的?

吞吐量会所有下降,响应时间会变长

11、20 并发 40 次循环怎么做?

线程数设置 20 个,循环次数 40

12、需要插入 500 条数据,怎么插入?

1、使用存储过程来实现

2、可以通过 JMeter 来实现,调用注册接口,线程数设置为 500,账号,密码可以通过 JMeter 中的随机函数 randomString(),random()函数结合计数器来实现。

13、响应超时,你是怎么定位的?

这里一般我会采用排查法,首先考虑软件优化问题,之后考虑硬件问题,思路大概是这样的

1、首先考虑中间件(tomcat,Apache 的连接数的问题),可以尝试增加连接数,看是否变化。

2、还有就是数据库的连接数问可题,也可以尝试增加,看是否有变化。

3、要不就是看数据库的访问效率问题,这里要考虑数据库的操作是否添加索引,如果没有添加索引,可以让开发优化下数据库的访问速度,添加索引,或者优化 sql 语句。

4、再一个就可以尝试考虑后台代码的架构设计是否合理,代码算法是否足够优化。

5、如果以上问题都不能解决,那么只能考虑增加服务器的 CPU 内存,或者增加网络带宽,看响应时间是否可以得到优化。

总结

在软件测试领域,性能测试 是衡量系统稳定性、响应速度和可扩展性的关键环节。面试中,面试官往往会针对 基础概念、工具使用、实际案例分析、性能调优策略 等方面进行考察。以下整理了一些常见的性能测试面试问题及答案,助你轻松应对面试!

掌握性能测试的核心概念、工具使用、问题排查思路,能帮助你在面试中脱颖而出。希望这份性能测试面试问题及答案对你有所帮助

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com