28 | 带你一起解读不同视角的软件性能与性能指标

不同群体对性能的关注点

终端用户:用户进行业务操作时的主观响应时间,包括了系统响应时间和前端展现时间;

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

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

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

性能工程

第一,算法设计:

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

第二,架构设计:

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

第三,性能最佳实践:

  •         代码实现是否遵守开发语言的性能最佳实践;
  •         关键代码是否在白盒级别进行性能测试;
  •         是否考虑前端性能的优化;
  •         必要的时候是否采用数据压缩传输;
  •         对于既要压缩又要加密的场景,是否采用先压缩后加密的顺序。

第四,数据库:

  •         数据库表设计是否高效;
  •         是否引入必要的索引;
  •         SQL 语句的执行计划是否合理;
  •         SQL 语句除了功能是否要考虑性能要求;
  •         数据库是否需要引入读写分离机制;
  •         系统冷启动后,缓存大量不命中的时候,数据库承载的压力是否超负荷

第五,软件性能的可测试性:

  •         是否为性能分析(Profiler)提供必要的接口支持;
  •         是否支持高并发场景下的性能打点
  •         是否支持全链路的性能分析。

优秀的性能测试工程师,一般需要具有以下技能:

  1.         性能需求的总结和抽象能力;
  2.         根据性能测试目标,精准的性能测试场景设计和计算能力;
  3.         性能测试场景和性能测试脚本的开发和执行能力;
  4.         测试性能报告的分析解读能力;
  5.         性能瓶颈的快速排查和定位能力;
  6.         性能测试数据的设计和实现能力;
  7.         面对互联网产品,全链路压测的设计与执行能力,能够和系统架构师一起处理流量标记、影子数据库等的技术设计能力;
  8.         深入理解性能测试工具的内部实现原理,当性能测试工具有限制时,可以进行扩展二次开发;
  9.         极其宽广的知识面,既要有“面”的知识,比如系统架构、存储架构、网络架构等全局的知识,还要有大量“点”的知识积累,比如数据库 SQL 语句的执行计划调优、JVM 垃圾回收(GC)机制、多线程常见问题等等。

衡量软件性能的三个最常用的指标

并发用户数:是性能需求与测试最常用,也是最重要的指标之一。它包含了业务层面和后端服务器层面的两层含义。

响应时间:反映了完成某个操作所需要的时间,其标准定义是“应用系统从请求发出开始,到客户端接收到最后一个字节数据所消耗的时间”,是用户视角软件性能的主要体现

        响应时间,分为前端展现时间和系统响应时间两部分。其中,前端时间,又称呈现时间,取决于客户端收到服务器返回的数据后渲染页面所消耗的时间;而系统响应时间,又可以进一步划分为 Web 服务器时间、应用服务器时间、数据库时间,以及各服务器间通信的网络时间。

        对于软件服务器端的性能测试肯定要采用标准定义,而对于前端性能评估,则应该采用用户主观感受时间的定义。

系统吞吐量:最能直接体现软件系统负载承受能力的指标。

        “Bytes/Second”和“Pages/Second”表示的吞吐量,主要受网络设置、服务器架构、应用服务器制约;

        “Requests/Second”表示的吞吐量,主要受应用服务器和应用本身实现的制约

项目实践

        如果考察HTTP或者业务层面,可以选择“Requests/Second”“Pages/Second”

        如果考察系统层面或网络层面,可以选择“Bytes/Second”,即网卡每秒接收/发送到字节数        

性能工具

        后端性能工具推荐loadrunner和jmeter

        前端性能工具推荐webpagetest和Yslow

你可能感兴趣的:(自动化测试,测试,性能测试,性能调优,软件性能)