如何做性能测试?

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 如何做性能测试?

大家好,我是阿萨。 今天看一个性能测试的例子。


什么是性能测试?


性能测试是一种软件测试过程,用于测试软件应用程序在特定工作负载下的速度、响应时间、稳定性、可靠性、可伸缩性和资源使用情况。性能测试的主要目的是识别和消除软件应用程序中的性能瓶颈。它是性能工程的一个子集,也被称为“性能测试”。

性能测试的重点是检查软件程序的性能

  • 速度-确定应用程序是否快速响应
  • 可伸缩性——决定软件应用程序可以处理的最大用户负载。
  • 稳定性——确定应用程序在变化的负载下是否稳定


为什么要进行性能测试?


软件系统所支持的特性和功能并不是唯一的关注点。软件应用程序的性能(如响应时间、可靠性、资源使用和可伸缩性)确实很重要。性能测试的目标不是发现bug,而是消除性能瓶颈。

执行性能测试是为了向涉众提供有关其应用程序的速度、稳定性和可伸缩性的信息。更重要的是,性能测试揭示了在产品推向市场之前需要改进的地方。如果没有性能测试,软件可能会遇到如下问题:当多个用户同时使用它时运行缓慢,不同操作系统之间的不一致,以及糟糕的可用性。

性能测试将确定他们的软件在预期工作负载下是否满足速度、可伸缩性和稳定性要求。由于不存在或糟糕的性能测试而发送到市场的应用程序的性能指标很可能会获得坏名声,并且无法达到预期的销售目标。

此外,像太空发射计划或救生医疗设备这样的关键任务应用程序应该进行性能测试,以确保它们能够长时间运行而不出现偏差。

根据Dunn & Bradstreet的数据,59%的财富500强公司每周估计会有1.6小时的停机时间。考虑到拥有至少1万名员工的财富500强公司平均每小时支付56美元,对于这样的组织来说,停机成本的人工部分每周将达到896,000美元,换算成每年超过4,600万美元。

据估计,谷歌网站(8月19日至13日)宕机5分钟就会给这家搜索巨头造成高达54.5万美元的损失。

据估计,由于最近亚马逊网络服务中断,公司每秒钟损失1100美元的销售额。

因此,性能测试非常重要。


性能测试的类型


  • 负载测试——检查应用程序在预期用户负载下执行的能力。目标是在软件应用程序上线之前确定性能瓶颈。
  • 压力测试——包括在极端工作负载下测试应用程序,看它如何处理高流量或数据处理。目标是确定应用程序的断点。
  • 耐久性测试——是为了确保软件能够在很长一段时间内处理预期的负载。
  • 峰值测试——测试软件对用户产生的负载突然大幅峰值的反应。
  • 批量测试-在批量测试下的大编号。的。数据被填充到数据库中,整个软件系统的行为被监视。目的是检查软件应用程序在不同数据库容量下的性能。
  • 可扩展性测试——可伸缩性测试的目标是确定软件应用程序在“扩展”以支持用户负载增加方面的有效性。它有助于规划软件系统的容量增加。


常见性能问题


大多数性能问题都与速度、响应时间、加载时间和糟糕的可伸缩性有关。速度通常是应用程序最重要的属性之一。运行缓慢的应用程序将失去潜在用户。性能测试可确保应用程序运行速度足够快,以保持用户的注意力和兴趣。看看下面列出的常见性能问题,并注意速度是如何成为其中许多问题的共同因素的:

  1. 加载时间长——加载时间通常是应用程序启动所需的初始时间。这通常应该保持在最低限度。虽然有些应用程序不可能在一分钟内完成加载,但如果可能的话,加载时间应该保持在几秒钟以内。
  2. 较差的响应时间——响应时间是从用户向应用程序输入数据到应用程序输出对该输入的响应所花费的时间。一般来说,这应该很快。如果用户需要等待太长时间,他们就会失去兴趣。
  3. 糟糕的可伸缩性——当软件产品不能处理预期的用户数量或不能容纳足够广泛的用户时,它就会遭受糟糕的可伸缩性。应该进行负载测试,以确保应用程序可以处理预期的用户数量。
  4. 瓶颈——瓶颈是系统中会降低整体系统性能的障碍。瓶颈是指在某些负载下,编码错误或硬件问题导致吞吐量下降。瓶颈通常是由一段错误的代码引起的。解决瓶颈问题的关键是找到导致速度变慢的代码段,并试图修复它。瓶颈通常可以通过修复运行不良的进程或添加额外的硬件来解决。一些常见的性能瓶颈是

  • CPU利用率

  • 内存利用率

  • 网络利用率

  • 操作系统限制

  • 磁盘使用情况


如何进行性能测试


用于性能测试的方法可以有很大的不同,但是性能测试的目标是相同的。它可以帮助演示您的软件系统满足某些预定义的性能标准。或者它可以帮助比较两个软件系统的性能。它还可以帮助识别降低软件系统性能的部分。

下面是关于如何执行性能测试的一般流程

步骤1)确定您的测试环境

了解您的物理测试环境、生产环境以及可用的测试工具。在开始测试过程之前,了解测试过程中使用的硬件、软件和网络配置的详细信息。它将帮助测试人员创建更有效的测试。它还将帮助识别测试人员在性能测试过程中可能遇到的挑战。

步骤2)确定性能验收标准

这包括吞吐量、响应时间和资源分配的目标和约束。确定这些目标和约束之外的项目成功标准也是必要的。测试人员应该被授权设置性能标准和目标,因为项目规范通常不包括足够广泛的性能基准。有时可能根本没有。如果可能的话,找到一个类似的应用程序进行比较是设置性能目标的好方法。

步骤3)计划和设计性能测试

确定最终用户之间的使用情况可能如何变化,并确定用于测试所有可能用例的关键场景。有必要模拟各种终端用户,计划性能测试数据并概述将收集哪些指标。

步骤4)配置测试环境

在执行前准备好测试环境。此外,安排工具和其他资源。

步骤5)实施测试设计

根据测试设计创建性能测试。

步骤6)运行测试

执行和监视测试。

步骤7)分析、调优和重新测试

整合、分析和共享测试结果。然后再进行微调和测试,看看性能是否有所改善或下降。由于每次重新测试的改进通常会越来越小,当CPU导致瓶颈时就停止。然后,您可以考虑增加CPU功率。


性能测试指标:被监控的参数


性能测试期间监测的基本参数包括:

  • 处理器使用率——处理器执行非空闲线程所花费的时间。
  • 内存使用-计算机上进程可用的物理内存量。
  • 磁盘时间-磁盘忙于执行读或写请求的时间量。
  • 带宽-显示网络接口每秒使用的比特数。
  • 私有字节数——一个进程分配的不能在其他进程之间共享的字节数。它们用于测量内存泄漏和使用情况。
  • 提交内存量—使用的虚拟内存量。
  • 内存页数/秒——为解决硬页错误而写入或从磁盘读取的页数。硬页错误是指从其他地方调用不是来自当前工作集的代码并从磁盘检索。
  • 页面错误/秒——处理器处理错误页面的总速率。当进程需要来自其工作集之外的代码时,同样会发生这种情况。
  • 每秒CPU中断数——是处理器每秒接收和处理的平均硬件中断数。
  • 磁盘队列长度-为平均。在采样间隔内为选定磁盘排队的读和写请求。
  • 网络输出队列长度-数据包中输出数据包队列的长度。超过两个就意味着延迟,需要停止瓶颈。
  • 每秒网络字节总数——在接口上发送和接收字节的速率,包括分帧字符。
  • 响应时间——从用户输入请求到接收到响应的第一个字符的时间。
  • 吞吐量计算机或网络每秒接收请求的速率。
  • 连接池的数量-连接池满足的用户请求的数量。池中的连接满足的请求越多,性能就越好。
  • 最大活动会话-一次可以活动的最大会话数。
  • 命中率——这与缓存数据处理的SQL语句数量有关,而不是昂贵的I/O操作。这是解决瓶颈问题的一个很好的开始。
  • 每秒点击率是第一。负载测试中每秒钟web服务器上的点击率。
  • 回滚段——在任何时间点可以回滚的数据量。
  • 数据库锁——需要对表和数据库的锁进行监视和仔细调优。
  • 顶部等待——被监视,以确定在处理从内存中检索数据的速度时可以减少什么等待时间
  • 线程数——应用程序运行状况可以通过线程数来衡量。正在运行和当前活动的线程。
  • 垃圾收集——它与将未使用的内存返回给系统有关。为了提高效率,需要监控垃圾收集。


性能测试用例示例


  • 测试用例01:验证当1000个用户同时访问网站时,响应时间不超过4秒。
  • 测试用例02:在网络连接较慢的情况下,验证应用程序负载下的响应时间在可接受的范围内
  • 测试用例03:检查应用程序在崩溃前可以处理的最大用户数。
  • 测试用例04:当同时读写500条记录时,检查数据库执行时间。
  • 测试用例05:检查应用程序和数据库服务器在峰值负载条件下的CPU和内存使用情况
  • 测试用例06:验证应用程序在低、正常、中等和重载负载条件下的响应时间。

在实际性能测试执行过程中,模糊的术语如可接受范围、重载等被具体的数字所取代。性能工程师根据业务需求和应用程序的技术前景来设置这些数字。


性能测试工具


市场上有各种各样的性能测试工具。您选择的测试工具取决于许多因素,如支持的协议类型、许可成本、硬件要求、平台支持等。下面是一些常用的测试工具。

  • LoadNinja -是革命性的方式,我们加载测试。这个基于云的负载测试工具使团队能够记录和即时回放全面的负载测试,而无需复杂的动态关联,并在大规模的真实浏览器中运行这些负载测试。团队能够增加测试覆盖率。将负载测试时间缩短60%以上。
  • HeadSpin -为用户提供业界最好的性能测试能力。用户可以通过HeadSpin平台的性能测试功能,通过识别和解决应用程序、设备和网络的性能问题,优化他们的数字体验。HeadSpin提供真实的、真实的数据,消除来自数千个设备、网络和位置的不确定性。用户可以利用先进的人工智能功能,在性能问题影响用户之前自动识别测试中的性能问题。
  • BlazeMeter -由热衷于开源的工程师设计和建造。BlazeMeter可以让您直接从IDE进行大规模负载和性能测试。另外,通过结合UX和负载测试,看看用户在负载下看到了什么。最棒的是什么?一切都在这里:性能、功能、无脚本、API测试和监视、测试数据和模拟服务。
  • HP LoadRunner -是当今市场上最流行的性能测试工具。该工具能够模拟成千上万的用户,将应用程序置于实际负载下,以确定它们在预期负载下的行为。Loadrunner的特点是虚拟用户生成器,模拟真人用户的操作。
  • Jmeter -用于web和应用服务器负载测试的领先工具之一。


常见问题解答


我们应该测试哪些应用程序?


性能测试总是只针对基于客户端-服务器的系统进行。这意味着,任何不是基于客户机-服务器架构的应用程序都不需要性能测试。

例如,Microsoft Calculator既不是基于客户端-服务器的,也不运行多个用户;因此它不是性能测试的候选。


性能测试与性能工程的区别是什么?


了解性能测试与性能工程的区别具有重要意义。现达成如下共识:

性能测试是一门涉及在各种参数下测试和报告软件应用程序当前性能的学科。

性能工程是为了实现所需性能而对软件进行测试和调优的过程。这个过程旨在优化最重要的应用程序性能特征,即用户体验。

从历史上看,测试和调优是截然不同的领域,而且通常是相互竞争的领域。然而,在过去的几年里,一些测试人员和开发人员已经独立合作创建了调优团队。因为这些团队已经取得了巨大的成功,所以将性能测试与性能调优耦合起来的概念已经流行起来,现在我们称之为性能工程。


结论


在软件工程中,在销售任何软件产品之前,性能测试是必要的。它确保客户满意并保护投资者的投资免受产品失败的影响。性能测试的成本通常可以通过提高客户满意度、忠诚度和保留率来弥补。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
5月前
|
测试技术
性能测试场景设计
**性能测试场景设计**涉及模拟用户行为和负载以评估系统在真实环境下的性能、稳定性和可靠性。常用的测试方法包括:**负载测试**,模拟实际使用以检查不同负载下的性能;**压力测试**,超负荷运行以检测系统极限;**稳定性测试**,验证系统长时间高负载的稳定性;**并发测试**,检查多用户访问时的性能和问题;以及**容量测试**,确定系统处理能力和资源利用率。测试场景多样,旨在确保系统应对未来增长需求的能力。
|
6月前
|
测试技术
性能测试包括哪些方面?
性能测试是评估电力系统响应时间、吞吐量和资源利用率的关键步骤,确保系统在不同负载下表现良好。它包括响应时间、吞吐量、资源利用率和稳定性测试,通过负载、压力、基准和故障恢复测试来检验系统性能。性能测试对于系统正常运行、问题发现及优化升级至关重要。
性能测试包括哪些方面?
|
7月前
|
SQL 中间件 Java
性能测试的理解误区
性能测试的理解误区
69 0
|
监控 关系型数据库 MySQL
学会这些性能测试干货知识点,才好拿捏性能测试
学会这些性能测试干货知识点,才好拿捏性能测试
|
SQL 缓存 监控
性能测试(23)——完整性能项目案例
性能测试需求分析与传统的功能测试需求有所不同 功能测试需求分析:重点在于分析被测系统的功能是否满足产品功能需求规格(正向、逆向) 性能测试需求分析:重点在于分析被测系统是否能满足特定的业务需求场景(时间、资源) 需要从业务场景、程序代码、服务器、硬件配置等多个维度分析系统可能存在性能瓶颈
2782 1
|
域名解析 缓存 监控
性能测试 性能测试方案设计思路总结
性能测试 性能测试方案设计思路总结
388 0
|
测试技术
视频一对一源码,正确认识压力测试和性能测试
视频一对一源码,正确认识压力测试和性能测试
|
Web App开发 移动开发 JavaScript
h5性能测试实践结果分析
背景 由于在标准组件参与了比较多运营活动h5页面的性能测试,在终端h5测试过程中发现随着移动设备和网络环境的复杂,使得性能测试越来越重要,所以在此对H5页面的性能测试结果(以及容易出问题的点),做一个总结,给H5测试的同学一个参考。
1905 0
|
NoSQL 测试技术 应用服务中间件
性能测试实践分享
性能测试实践分享 性能点:营销招商活动,提交报名   前言:     以下是我在项目中完成的另一次性能测试实践,对性能测试还处于摸索阶段,如果有不准确的地方欢迎指点。 一、简介 批量提交报名,libra2manager应用处理请求,调用libra2center服务进行相关商品和卖家信息的判断,调用qc服务进行卖家商品资质判断是否可报名、成功后插入到数据库。
1257 0
|
Java 测试技术 应用服务中间件