性能测试思考及入门

笔记(茹炳晟老师 第28课 带你一起解读不同视角的软件性能与性能指标 )

谈及软件性能,谈的到底是什么?--从对象群体分类

web类应用和手机端应用:一般以终端用户感受到的端到端的响应时间来描述系统的性能。

非交互式应用(比如典型的电信和银行后台处理系统):响应时间关注更多的是事件处理的速度,以及单位时间的事件吞吐量


衡量软件性能的四个维度
  不同的对象群体分为四大类:终端用户、系统运维人员、软件设计开发人员、性能测试人员

终端用户:软件系统的最终使用者(直接决定系统的应用前景)
其他三类人员:直接决定一个系统交付到用户手中的性能

终端用户(软件系统使用者):
   软件性能表现为用户进行业务操作时的主观响应时间。
   响应时间是终端用户对系统性能的最直观印象,包括系统响应时间和前端展示时间

   系统响应时间:反应的是系统能力。进一步细分:应用系统处理时间、数据库处理时间、网络传输时间等
   前端展示时间:取决于用户端的处理能力

系统运维人员

    单个用户的响应时间
    【主要关注点】大量用户并发访问的负载及高负载情况下的系统健康状态、并发处理能力、当前部署的系统容量、可能的系统瓶颈、系统配置层面的调优、数据库的调优、长时间运行稳定性和可扩展性

    系统运维人员必须在最大并发用户数和系统响应时间之间权衡取舍。

    从全局利益最大化角度,系统具有更大并发用户承载能力的价值更大。

    目前,有些系统为了能够承载更多的并发用户,会牺牲等待时间而引入预期的等待机制(如:火车票购票网站)

软件设计人员
    
    关注点:性能相关的设计和实现细节

    软件性能包括5大方面:算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性

    算法设计:
      核心算法的设计与实现是否高效;
      必要时,设计上是否采用buffer机制以提高性能,降低I/O;
      是否存在潜在的内存泄漏;
      是否存在并发环境下的线程安全问题;
      是否存在不合理的线程同步方式;
      是否存在不合理的资源竞争;

    架构设计:
       站在整体系统的角度,是否可以方便地进行系统容量和性能扩展;
       应用集群的可扩展性是否经过测试和验证;
       缓存集群的可扩展性是否经过测试和验证;
       数据库的可扩展性是否经过测试和验证。

    ......

    系统部署级别的性能测试不在软件开发人员考虑范围内

性能测试人员
    关注点:算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性

    需要具备的技能

  •       性能需求的总结和抽象能力
  •       根据性能测试目标,精准的性能测试场景设计和计算能力
  •       性能测试场景和性能测试脚本的开发和执行能力
  •       测试性能报告的分析解读能力
  •       性能瓶颈的快速排查和定位能力
  •       性能测试数据的设计和实现能力
  •       互联网产品全链路压测的设计与执行能力,能够和系统架构师一起处理流量标记、影子数据库等的技术设计能力
  •       深入了解性能测试工具的内容实现原因,可以对性能测试工具进行扩展二次开发
  •       极宽的知识面。面:系统架构、存储架构、网络架构等全局知识;点:数据库SQL语句的执行计划调优、JVM垃圾回收(GC)机制、多线程常见问题等

      

猜你喜欢

转载自blog.csdn.net/qq_24166417/article/details/106386160
今日推荐