本文概述
- 什么是性能测试?
- 我们何时使用性能测试?
- 性能测试的类型
- 性能测试示例
- 性能测试流程
- 性能测试中出现问题
- 性能测试工具
以下是我们在本节中将理解的主题:
什么是性能测试? 这是非功能测试的最重要部分。
通过施加一些负载来检查应用程序的行为称为性能测试。通常, 此测试定义服??务器对用户请求的响应速度。
在对应用程序进行性能测试时, 我们将专注于各种因素, 例如应用程序的响应时间, 负载和稳定性。
响应时间:响应时间是服务器响应客户端请求所花费的时间。
负载:这里的负载是指同时有N个用户同时使用该应用程序或一次将请求发送到服务器时。
稳定性:关于稳定性因素, 我们可以说, 当N个用户同时在特定时间使用该应用程序时。
我们何时使用性能测试? 一旦软件稳定并移至生产环境, 我们将进行性能测试, 并且可能会被多个用户同时访问, 因此, 可能会出现一些性能问题。为了避免这些性能问题, 测试人员将执行一轮性能测试。
由于这是非功能测试, 并不意味着我们始终使用性能测试, 因此仅在应用程序功能稳定时才进行性能测试。
注意:性能测试无法手动进行, 因为无法维持其昂贵且准确的结果。 性能测试的类型 以下是性能测试的类型:
- 负载测试
- 压力测试
- 可扩展性测试
- 稳定性测试
文章图片
让我们逐一讨论, 以使你对负载, 压力, 可伸缩性和稳定性性能测试有完整的了解。
负载测试
负载测试用于通过施加一些小于或等于所需负载的负载来检查应用程序的性能, 这称为负载测试。
例如:在下图中, 由客户指定的期望负载为1000个用户, 而执行负载测试时我们希望达到的目标是3 /秒。
文章图片
压力测试
压力测试是一种测试, 它通过施加大于所需负载的负载来检查应用程序的行为。
例如:如果我们以上述示例为例, 将所需的负载增加1000个到1100个用户, 目标是4 /秒。在这种情况下执行压力测试时, 它会通过, 因为负载大于(100 up)实际所需的负载。
文章图片
可扩展性测试
通过按特定比例(用户数量)增加或减少负载来检查应用程序的性能称为可伸缩性测试。向上可伸缩性测试和向下可伸缩性测试称为可伸缩性测试。
可伸缩性测试分为以下两个部分:
- 向上扩展性测试
- 向下扩展性测试
这是在测试中, 我们在特定规模上增加用户数量, 直到达到崩溃点。我们将使用向上的可伸缩性测试来找到应用程序的最大容量。
向下扩展性测试
如果未通过负载测试, 则使用向下的可伸缩性测试, 然后开始减少no。特定时间间隔内的用户数, 直到达到目标为止。这样就很容易识别瓶颈(错误)。
稳定性测试
通过在特定时间段内施加负载来检查应用程序的性能称为稳定性测试。
性能测试示例 让我们举一个示例, 在该示例中, 我们将测试所需负载小于1000或等于1000个用户的应用程序的行为。
【开发必读(什么是性能测试(如何使用?))】在下图中, 我们可以看到100个up用户不断增加以检查最大负载, 这也称为向上可扩展性测试。
- 方案1:当我们有1000个用户作为所需的负载, 并且目标时间为2.7 / sec时, 这些方案将在执行负载测试时通过, 因为在负载测试中, 我们将专注于否。个用户, 根据要求, 该数量等于1000个用户。
- 方案2:在下一个方案中, 我们将所需负载增加100个用户, 目标时间将达到3.5 \ sec。如果我们执行压力测试, 则此场景将通过, 因为此处的实际负载大于所需负载(1000)的(1100)。
- 方案3:在这种情况下, 如果我们将所需负载增加三倍,
1200→3.5 \ sec:[不小于或等于所需的负载, 这就是失败的原因]
1300→4 \ sec:[不小于或等于所需的负载。即失败]
1400→坠毁
文章图片
注意1:容量和均值测试是一种测试, 但不是性能测试。 量测
容量测试是一种测试, 它通过在数据方面插入大量负载来帮助我们检查应用程序的行为, 这称为容量测试, 在这里, 我们将专注于数据速率而不是用户数量。
注2:体积是容量, 而负载是数量, 即负载测试表示否。用户数量, 而容量测试意味着数据量。 浸泡测试
在这种类型的测试中, 我们将检查应用程序在环境中的行为, 这种行为在很长一段时间内不支持, 这称为浸泡测试。
通常, 浸泡测试是负面的测试, 因为我们已经知道服务器或环境不支持。
性能测试流程 由于以下原因, 无法手动执行性能测试:
- 我们需要大量资源, 这成为一种成本更高的方法。
- 当我们手动跟踪响应时间时, 精度无法保持。
- 确定性能方案
- 计划和设计性能测试脚本
- 配置测试环境并分配负载
- 执行测试脚本
- 结果
- 分析结果
- 找出瓶颈
- 重新运行测试
文章图片
如果我们对性能测试过程进行积极的处理, 则可以遵循以下过程:
确定性能方案
首先, 我们将基于以下因素确定性能方案:
最常见的情况:这意味着我们可以根据这些情况找到性能情况, 例如Gmail应用程序中常用的情况;我们将执行登录, 收件箱, 发送项目以及撰写邮件和注销。
最关键的情况:关键情况是指在Gmail应用程序的登录, 撰写, 收件箱和注销中, 经常使用且对类似业务很重要的情况。
巨大的数据交易:如果我们拥有巨大的数据, 则意味着n个用户同时使用该应用程序。
确定性能方案后, 我们将继续进行下一步。
计划和设计性能测试脚本
在这一步中, 我们将把工具安装在Test Engineer Machine中并访问测试服务器, 然后根据测试场景编写一些脚本并运行该工具。
一旦完成脚本编写, 我们将进入下一步。
配置测试环境并分配负载
编写测试脚本后, 我们将在执行之前安排测试环境。并且, 根据” 使用模式” 管理工具, 其他资源并分配负载, 或者提及持续时间和稳定性。
执行测试脚本
完成分配负载后, 我们将执行, 验证和监视测试脚本。
结果
执行测试脚本后, 我们将获得测试结果。并检查结果是否在给定的响应时间内达到目标, 并且响应时间可以是最大值, 平均值和最小值。
如果响应未达到所需的时间响应, 那么我们将进行负向流程, 将执行以下步骤:
分析结果
首先, 我们将分析测试结果是否满足响应时间。
找出瓶颈
之后, 我们将确定瓶颈(错误或性能问题)。由于诸如代码问题, 硬件问题(硬盘, RAM处理器), 网络问题和软件问题(操作系统)等这些方面, 可能会出现瓶颈。找到瓶颈后, 我们将执行调整(修复或调整)以解决此瓶颈。
重新运行测试
解决瓶颈后, 请重新运行测试脚本并检查结果是否满足要求的目标。
性能测试中出现问题 在应用程序上执行性能测试时, 可能会出现一些问题, 这些问题也称为性能问题。
性能问题如下:
- 响应时间问题
- 可伸缩性问题
- 瓶颈
- 速度问题
响应时间表示服务器响应客户端请求的速度。如果用户的请求未在给定的响应时间内完成, 则可能会使用户失去对特定软件或应用程序的兴趣。因此, 应用程序或软件应具有完美的响应时间, 以便快速响应用户的请求。
可伸缩性问题
当应用程序无法同时获取n个用户和预期的用户请求时, 会发生可伸缩性问题。这就是为什么我们将进行向上可伸缩性测试(检查应用程序的最大容量)和向下可伸缩性测试(预期时间与实际时间不匹配)的原因。
瓶颈
瓶颈是bug的非正式名称, 当应用程序受单个组件限制并且对系统性能产生严重影响时, 就会出现。
瓶颈的主要原因是软件问题(与操作系统有关的问题), 硬件问题(与硬盘, RAM和处理器有关的问题)和编码问题等。
以下是最常见的性能瓶颈:
- 内存利用率
- 磁盘使用情况
- CPU利用率
- 操作系统限制
- 网络利用率
当我们在应用程序上执行性能测试时, 应用程序的速度应该更快以引起用户的关注和关注, 因为如果应用程序的速度很慢, 则可能会失去用户对应用程序的兴趣。
性能测试工具 我们在市场上提供各种类型的性能测试工具, 其中一些是商业工具和开源工具。
商业工具:LoadRunner [HP], WebLOAD, NeoLoad
开源工具:JMeter
LoadRunner
它是性能测试中最强大的工具之一, 用于支持各种协议, 技术数量和应用程序环境的性能测试。
它可以快速找出导致性能问题的最常见原因。并且还可以准确预测应用程序的可伸缩性和容量。
杰米特
Apache JMeter软件是一个开放源代码工具, 它完全是一个Java应用程序, 旨在加载功能测试行为并衡量性能。
通常, 它是为测试Web应用程序而设计的, 但现在也扩展到了其他测试功能。
Apache JMeter用于测试静态和动态资源以及动态Web应用程序的性能。
它可用于在服务器, 网络或对象, 服务器组上重载负载, 以测试其强度或分析不同负载类型下的整体性能。
Web加载
WebLOAD测试工具, 用于测试负载测试, 性能测试和压力测试Web应用程序。
WebLOAD工具将性能, 可伸缩性和完整性结合为一个用于验证Web和移动应用程序的单一过程。
NeoLoad
Neotys开发了一种称为NeoLoad的测试工具。 NeoLoad用于测试性能测试方案。借助NeoLoad, 我们可以找到Web和移动应用程序开发过程中的瓶颈区域。
与传统工具相比, NeoLoad测试工具更快。
除此之外, 还有一些其他工具, 如电力负载, Web压力工具, LoadUI Pro, StresStimulus, LoadView, LoadNinja和RedLine13, 它们可以帮助测试软件或应用程序的性能。
推荐阅读
- 测试计划详细介绍
- Alpha测试图文详解介绍
- 静态测试与动态测试有什么区别()
- 非功能测试介绍
- 负载测试与压力测试有什么区别()
- Beta测试详细解读
- 软件测试中的错误介绍
- 自动化测试与手动测试有什么区别呢()
- Alpha测试和Beta测试之间有什么区别()