性能测试快速入门1-简介

作者: python测试开发 | 来源:发表于2019-08-09 08:51 被阅读21次

    什么是性能测试?

    性能测试被定义​​为一种软件测试,以确保软件应用程序在其预期工作负载下运行良好。

    软件应用程序的性能如响应时间,可靠性,资源使用和可扩展性都很重要。 性能测试的目标不是发现错误,而是消除性能瓶颈。

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

    • 速度 - 确定应用程序是否快速响应
    • 扩展性 - 确定软件应用程序可以处理的最大用户负载。
    • 稳定性 - 确定应用在不同负载下是否稳定
    • 性能测试通常被称为“Perf测试”,是性能工程的一个子集。

    为何进行性能测试?

    性能测试旨在为利益相关者提供有关其应用程序的速度,稳定性和可扩展性的信息。 更重要的是,性能测试揭示了在产品上市之前需要改进的内容。 如果没有性能测试,软件可能会遇到以下问题:多个用户同时使用它们时运行缓慢,不同操作系统之间的不一致以及可用性差。

    性能测试将确定其软件是否满足预期工作负载下的速度,扩展性和稳定性要求。性能指标较差的应用程序可能会获得糟糕的声誉并且无法达到预期的销售目标。

    此外,应对空间发射计划或救生医疗设备等关键任务应用进行性能测试,以确保它们长时间运行而不会出现偏差。

    据Dunn&Bradstreet称,59%的财富500强企业每周经历约1.6小时的停机时间。 考虑到拥有至少10,000名员工的财富500强公司平均每小时支付56美元,这样一个组织的人工部分停工成本每周为896,000美元,每年超过4600万美元。

    性能测试的类型

    • 负载测试 -检查应用程序在预期的用户负载下执行的能力。 目标是在软件应用程序上线之前识别性能瓶颈。
    • 压力测试 -涉及在极端工作负载下测试应用程序,以了解它如何处理高流量或数据处理。 目标是确定应用程序的突破点。
    • 耐久性测试 -确保软件能够长期处理预期的负载。
    • 尖峰测试 -测试软件对用户产生的负载突然大幅尖峰的反应。
    • 容量测试
    • 扩展性测试 - 扩展性测试的目标是确定软件应用程序在“扩展”中的有效性,以支持用户负载的增加。 它有助于规划软件系统的容量增加。

    常见的性能问题

    大多数性能问题都围绕着速度,响应时间,加载时间和可扩展性差。 速度通常是应用程序最重要的属性之一。 运行缓慢的应用程序将失去潜在用户。 进行性能测试是为了确保应用程序运行得足够快以保持用户的注意力和兴趣。 看看以下常见性能问题列表,并注意速度是其中许多因素的共同因素:

    • 长加载时间 -加载时间通常是应用程序启动所需的初始时间。 通常应将其保持在最低限度。 虽然某些应用程序不可能在一分钟内完成加载,但如果可能,加载时间应保持在几秒钟内。
    • 响应时间差 -响应时间是指用户将数据输入应用程序直到应用程序输出对该输入的响应所需的时间。 一般来说,这应该非常快。 如果用户必须等待太长时间,他们会失去兴趣。
    • 可扩展性差 -当软件产品无法处理预期数量的用户或无法容纳足够多的用户时,其可扩展性较差。 应该进行负载测试以确保应用程序可以处理预期的用户数量。
    • 瓶颈 -瓶颈是系统中的障碍,降低了整体系统性能。 瓶颈是指编码错误或硬件问题导致某些负载下的吞吐量降低。 瓶颈通常是由一段错误的代码引起的。 解决瓶颈问题的关键是找到导致速度减慢的代码部分并尝试在那里修复它。 瓶颈通常通过修复运行不良的流程或添加额外的硬件来解决。 一些常见的性能瓶颈是
      • CPU利用率
      • 内存利用率
      • 网络利用率
      • 操作系统限制
      • 磁盘使用情况

    性能测试过程

    性能测试采用的方法可以有很大差异,但性能测试的目标保持不变。 它可以帮助证明您的软件系统满足某些预定义的性能标准。 或者它可以帮助比较两个软件系统的性能。 它还可以帮助识别软件系统中降低其性能的部分。

    以下是有关如何执行性能测试的一般过程


    图片.png
    • 确定您的测试环境 -了解您的物理测试环境,生产环境以及可用的测试工具。 在开始测试过程之前,请了解测试期间使用的硬件,软件和网络配置的详细信息。 它将帮助测试人员创建更有效的测试。 它还有助于确定测试人员在性能测试过程中可能遇到的挑战。
    • 确定性能验收标准 -包括吞吐量,响应时间和资源分配的目标和约束。 还有必要在这些目标和约束之外确定项目成功标准。 应该授权测试人员设置性能标准和目标,因为项目规范通常不会包含足够多的性能基准。 有时可能根本没有。 如果可能,找到类似的应用程序进行比较是设置性能目标的好方法。
    • 计划和设计性能测试 -确定最终用户的使用情况可能会有所不同,并确定测试所有可能用例的关键方案。 有必要模拟各种最终用户,规划性能测试数据并概述将收集哪些指标。
    • 配置测试环境 -在执行之前准备测试环境。 此外,安排工具和其他资源。
    • 实施测试设计 -根据您的测试设计创建性能测试。
    • 运行测试 -执行并监控测试。
    • 分析,调整和重新测试 - 整合,分析和共享测试结果。 然后进行微调并再次测试以确定性能是否有改善或降低。 由于每次重新测试时改进通常会变小,因此在CPU导致瓶颈时停止。 那么您可以考虑增加CPU。

    参考资料

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

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

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

    示例性能测试用例

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

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

    性能测试工具

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

    参见 https://www.jianshu.com/p/ab75be06ebb7 软件测试专家工具包2性能测试

    • LoadNinja - 正在彻底改变我们加载测试的方式。 这种基于云的负载测试工具使团队能够记录并即时回放全面的负载测试,无需复杂的动态关联,并在实际的浏览器中大规模运行这些负载测试。 团队能够提高测试覆盖率。 并将负载测试时间缩短60%以上。
    • NeoLoad -是专为DevOps设计的性能测试平台,可无缝集成到您现有的Continuous Delivery管道中。 使用NeoLoad,团队测试速度比传统工具快10倍,以满足整个Agile软件开发生命周期中的新级别要求 - 从组件到完整的系统范围负载测试。
    • HP LoadRunner -是当今市场上最受欢迎的性能测试工具。 该工具能够模拟成千上万的用户,将应用程序置于实际负载下,以确定其在预期负载下的行为。 Loadrunner具有虚拟用户生成器,可模拟实时人类用户的操作。
    • Jmeter -用于Web和应用程序服务器负载测试的主要工具之一。

    常问问题

    • 性能测试和性能工程有什么区别

    了解性能测试和性能工程之间的区别非常重要。 下面分享一个理解:

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

    性能工程是软件测试和调整的过程,旨在实现所需的性能。 此过程旨在优化最重要的应用程序性能特征,即用户体验。

    从历史上看,测试和调优已明显分开,而且往往是竞争领域。 然而,在过去几年中,一些测试人员和开发人员已经独立合作创建了调优团队。 由于这些团队取得了巨大成功,因此将性能测试与性能调优相结合的概念已经流行起来,现在我们将其称为性能工程。

    小结

    参考:软件测试精品文章与资源汇总 https://www.jianshu.com/p/faffa3983bbd

    在软件工程中,在营销任何软件产品之前,必须进行性能测试。 它确保客户满意度并保护投资者对产品故障的投资。 性能测试的成本通常可以通过提高客户满意度,忠诚度和保留率来弥补。

    相关文章

      网友评论

        本文标题:性能测试快速入门1-简介

        本文链接:https://www.haomeiwen.com/subject/gvbxjctx.html