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