|不懂性能测试,被面试官挂了...


【51CTO.com原创稿件】性能测试旨在检查应用程序或软件在特定负载下工作时的响应性和稳定性 , 从而检测应用程序/软件在响应速度、可扩展性和稳定性方面是否达到预期的要求 。
|不懂性能测试,被面试官挂了...
本文插图

图片来自 Pexels
简而言之 , 性能测试目标就是为了识别并消除应用程序中的性能瓶颈 。
本文将为大家详细介绍性能测试主要类型、性能测试流程规划以及面对项目如何开展性能测试策略 , 如何设计不同场景下的性能测试用例 , 助你从此远离性能测试的盲区 。
性能测试类型
性能测试主要有[负载测试] , [压力测试] , [容量测试]和[可靠性/可恢复性测试]这四大主要类型 , 下面将对这四大主流性能测试类别逐一展开介绍:

|不懂性能测试,被面试官挂了...
本文插图

负载测试
负载测试用于测试应用程序在正常和峰值情况下的性能 。 在负载测试中 , 我们对应用程序性能好坏的判定依据主要源于该应用程序对用户请求的响应情况 , 以及它在不同负载变化下(可接受的程度内)一致响应的能力来检测的 。
负载测试中的核心关注点:

  • 在应用程序出现异常情况前 , 该应用程序所能容纳的最大负载量是多少?
  • 在系统变慢或出现崩溃之前 , 数据库所能处理的数据量有多少?
  • 是否有任何与网络相关的问题需要解决?
压力测试
压力测试旨在寻找破坏系统的方法 。 该测试同时还能为我们找到系统可以承受的最大负载范围 。
通常 , 压力测试采用增量方法 , 通过逐步增加负载来观察系统各项性能指标的变化情况 。
首先 , 我们可以从应用程序已经测试过的负载开始(例如当前用户数 100 个);然后慢慢地增加更多的负载来给系统增加压力(例如从 100 个用户数逐步增加到 10000) 。
当我们发现服务器没有响应请求的那个点开始 , 这个点就被认为是断点(在一些性能测试报告图表中 , 往往也视为性能拐点) 。
在压力测试过程中 , 我们需要关注的问题有:
  • 系统在崩溃前能承受的最大负载是多少?
  • 在实施压力测试过程中 , 系统是如何崩溃的?系统能否在崩溃后自行恢复?
  • 被测系统/应用程序在处理异常负载时 , 有哪几种中断方式?
容量测试
容量测试是为了验证应用程序的性能不受应用程序正在处理的数据量的影响 。 为了执行容量测试 , 需要向数据库中输入大量数据 。
此类测试可以视为增量式测试或稳定性测试 。 在增量式测试中 , 数据量是逐渐增加的 。
通常 , 随着应用程序的使用 , 数据库容量会随数据而增长 , 例如一个新建立的教育网站 , 最初只有少量的数据需要存储 , 但在 5-10 年后 , 该网站数据库中的数据存储就已有相当规模了 。
因此针对数据量逐步递增至规模庞大的情况下 , 对应用程序进行容量测试很有必要 。
此外容量测试还有另一层含义:应用程序是否能够在正常及峰值负载条件下满足当前正在处理的业务量需求?
这通常是为了系统将来可能面临的情况而进行的可预见性测试 , 需要纳入考察的核心点有:
  • 应用程序能够支持未来的负载吗?
  • 环境是否能够承受即将增加的负载?
  • 要使环境具备足够的能力 , 需要哪些额外的资源?
为了确保 Web 应用程序将支持在给定的用户和/或事务数 , 且满足性能要求 , 我们在测试过程中需要考虑修改处理器容量、网络带宽、内存使用情况、磁盘容量等资源 , 从而满足目标 。 对网上银行实施容量测试就是一个典型案例 。
可靠性/可恢复测试
可靠性测试或恢复测试用于验证应用程序在出现故障或异常行为后 , 是否能够恢复到正常状态 , 以及恢复阶段需要经过多长时间 。


推荐阅读