性能测试2

性能测试的类型

  • 负载测试-检查应用程序在预期的用户负载下的执行能力。目的是在软件应用程序上线之前确定性能瓶颈。
  • 压力测试-涉及在极端工作负载下测试应用程序,以查看其如何处理高流量或数据处理。目的是确定应用程序的断点。
  • 耐久性测试-已完成以确保软件可以长时间处理预期的负载。
  • 峰值测试-测试软件对用户产生的负载突然大峰值的反应。
  • 体积测试 -在“体积测试”下,没有。的。数据被填充到数据库中,并且监视整个软件系统的行为。目的是检查在不同数据库容量下软件应用程序的性能。
  • 可伸缩性测试 - 可伸缩性测试的目的是确定软件应用程序在“向上扩展”以支持用户负载增加方面的有效性。它有助于计划软件系统的容量增加。

常见的性能问题

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

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

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

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

            

      第一种方法:识别测试环境   ==> 确定性能标准  ==> 规划设计 ==> 配置测试环境==》实现测试设计==》运行测试==》分析提示和重新测试

  •  第二种方法:做性能测试之前,首先产品会给到一份性能需求文档,我们从需求文档中提取性能指标,明确测试时间、测试环境、测试工具的选择。 建立性能测试模型,编写性能测试用例,搭建性能测试环境,准备性能测试数据,通过性能测试用例,录制性能测试脚本并调优,设置检查点、参数化、关联、集合点、事务,调整思考时间等等 脚本录制完成后,开始设计性能场景,并使用nmon工具监控服务器,然后运行场景、分析性能测试结果,如果有问题(性能瓶颈),收集相关的日志提单给开发修改,开发修改好后,回归性能测试,输出性能测试报告

     

  •  

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

    性能测试指标:监控参数

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

    性能测试案例示例

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

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

    性能测试工具

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

    • NeoLoad -是性能测试平台设计的DevOps可以无缝地集成到现有的连续式输送管道。使用NeoLoad,团队可以比传统工具更快地测试10倍,从而在整个敏捷软件开发生命周期(从组件到整个系统范围的负载测试)中满足新水平的要求。
    • LoadNinja –正在彻底改变我们的负载测试方式。这款基于云的负载测试工具使团队能够记录并立即回放全面的负载测试,而无需复杂的动态关联,并且可以在实际的浏览器中大规模运行这些负载测试。团队能够增加测试范围。并将负载测试时间缩短60%以上。
    • HP LoadRunner的-是最流行的表现目前市场上的测试工具。该工具能够模拟成千上万的用户,将应用程序置于实际负载下,以确定其在预期负载下的行为。Loadrunner具有一个虚拟用户生成器,可以模拟人类用户的行为。
    • JMeter的 -的用于Web和应用服务器的负载测试的主要工具之一。
posted @ 2020-03-16 10:40  Xiao_野猪  阅读(181)  评论(0编辑  收藏  举报