zoukankan      html  css  js  c++  java
  • 性能测试指南

     
     
     

    Why--为什么要做性能测试

    为了更好地从技术上来规避系统上线后的风险,评估线上系统的真实能力,根据业务模型摸底线上能力,以提前应对可能发生的突发状况。

    When--什么时候做性能测试

    1

    • 新系统上线:在新系统上线前,通过执行性能压测能够对系统的负载能力有较为清晰的认知,从而结合预估的潜在用户数量保障系统上线后的用户体验;准确探知站点能力,防止系统一上线即被用户流量打垮;
    • 技术升级验证:在系统重构过程中,通过性能压测验证对比,可以有效验证新技术的高效性,指导系统重构。
    • 业务峰值稳定性:在业务峰值到来前,通过充分的性能压测,确保大促活动等峰值业务稳定性,保障峰值业务不受损。
    • 站点容量规划:通过性能压测实现对站点精细化的容量规划,指导分布式系统机器资源分配。
    • 性能瓶颈探测:通过性能压测探测系统中的性能瓶颈点,进行针对性优化,从而提升系统性能。

      综上所述,性能压测伴随着系统开发、重构、上线到优化的生命周期,因此有效的性能压测对系统的稳定性具有重要的指导意义,是系统生命周期中不可或缺的一部分。

    What—什么是性能测试

    性能压测是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
    通过模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。

    从测试目的上性能压测又可以划分为负载测试、压力测试、并发测试、配置测试以及可靠性测试。

    基准测试
    当我们拿到一个性能测试项目的时候,我们会对这个系统架构做个了解,了解最好的方式是做一个基准测试,先谈谈它的基本情况。所以会去定一个小并发,比如5-10个人的并发,先去测一测,看它的响应时间,然后将此作为我们的基准。

    负载测试

    测试当负载逐渐增加时,系统各项性能指标的变化情况。为了获取性能拐点,我们叫最佳性能。当达到这个点的时候,系统能力、极限能力是多少?这个通常用来做线上流量评估。

    压力测试

    为了获取极限性能指标。比如可以设置一个3小时压测场景,每10分钟加10个用户,那到3小时后,可能就是180个用户了。这个时候观察,在压力不断增大过程中系统的表现,获得系统能提供的最大服务级别。

    并发测试

    通过模拟用户并发访问,测试多用户并发访问同一个软件、同一个模块或者数据记录时是否存在死锁等性能问题。

    配置测试

    通过对被测系统的软/硬件环境的调整,了解各种不同方法对软件系统的性能影响的程度,从而找到系统各项资源的最优分配原则。

    可靠性测试

    在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。如把用户真实会发生的场景放大3-5倍,然后在线上运行24小时,在这个阶段会发现很多稳定性问题, list回收,java list回收,一旦回收出现问题,可能会出现内存溢出,这个在日常测试过程中,是很难测出来的,所以用稳定性测试查出这些问题。

    容量测试
    当业务越来越复杂的时候,比如一场大促,应该怎么评估线上的性能?如何去做合理的扩容?这个就属于容量测试范畴。

    总的来说,性能压测是在对系统性能有一定程度了解的前提下,在确定的环境下针对压测需求进行的一种测试。

    性能测试实施过程中关键的技术主要包括:

    • 系统环境
    • 测试指标
    • 业务模型
    • 数据量
    • 测试模型
    • 测试类型、脚本(API)、场景
    • 监控
    • 瓶颈分析、调优
    • 性能测试压测工具

    How--如何做性能测试

    1、确定性能压测目标

    性能压测目标可能源于项目计划、业务方需求等

    2.、确定性能压测环境

    为了尽可能发挥性能压测作用,性能压测环境应当尽可能同线上环境一致

    3、确定性能压测通过标准

    针对性能压测目标以及选取的性能压测环境,制定性能压测通过标准,对于不同于线上环境的性能压测环境,通过标准也应当适度放宽

    4、设计性能压测

    编排压测链路,构造性能压测数据,尽可能模拟真实的请求链路以及请求负载。

    形成测试方案,组会评审,直至通过后方开始执行

    5、执行性能压测

    借助性能压测工具,按照设计执行性能压测

    6、分析性能压测结果报告

    分析解读性能压测结果报告,判定性能压测是否达到预期目标,若不满足,要基于性能压测结果报告分析原因;调优后继续第5步直至达到预期目标

    7、输出整体测试总结报告,涵盖迭代测试步骤、结果、优化方案、最终结果等信息

    工具选型对比

    对于性能测试来说,工具并不是核心,分析、评估、找出性能问题才是核心,这些是主观因素,工具是客户因素。所以工具选择时我们有几个方面要考虑。

    (1)专业、稳定、高效,工业级性能负载工具。

    (2)简单易上手,在测试脚本上不用花太多时间。

    (3)有技术支持,文档完善,不用在疑难问题上花费时间,集中精力在性能分析上。

    (4)要考虑投入产出比。自研或者使用开源不一定比商业工具更省钱,因为要做技术上的投资,时间上的投资。

    压测工具 学习成本 安装部署成本 是否免费 是否支持多协议 压测结果是否能够图形化展示 是否支持TPS模式 是否有链路、场景编排管理支持 是否支持场景录制
    Apache Bench

    否:针对HTTP协议

    否:命令行测试工具
    LoadRunner
    JMeter
    PTS

    Where--何处做性能测试

    根据不同的业务场景进行区分,如硬件性能可能需要在特定的实验室开展,软件在专网环境、公网环境下展开,具体情况具体分析。

    Who--谁来做性能测试

    一般分为如下几种情况

    1、公司内部有单独的性能组负责性能测试,项目测试负责人提交性能测试需求,配合对方提供各种资料,开展性能测试工作,具体的方案、脚本、执行、报告均由性能组负责

    2、公司内部无单独的性能组,需要项目组功能测试负责,此时方案、脚本、执行、报告均由功能测试承担,所谓能者多劳

    3、公司内部项目无测试人员,此时开发人员承担起测试人员的责任,负责方案、脚本、执行、报告,这种情况相对较少

    4、公司直接将测试外包给三方,由三方负责

    参考资料:

    https://zhuanlan.zhihu.com/p/71839185

  • 相关阅读:
    《编程珠玑番外篇-O 中间语言和虚拟机漫谈》
    《编译原理之美》笔记——后端部分
    《编译原理之美》笔记——前端部分
    《从语言编译器源码入手,编译原理该这么学》
    知识图谱简介
    支持向量机原理讲解(一)
    一个完整的机器学习项目在Python中演练(四)
    多GPU使用详解
    数据可视化
    详解谱聚类原理
  • 原文地址:https://www.cnblogs.com/emma-lucas/p/13304223.html
Copyright © 2011-2022 走看看