zoukankan      html  css  js  c++  java
  • 8-26接口压力测试-2性能测试入门

    1. 性能测试基本概念

    1.1 如何衡量一个接口的性能

    • 在<font color#FF0000>4核8G的服务器上压测,<font color#FF0000>20并发下,我们测试得到的<font color#FF0000>TPS为200,MRT为150ms,RT90值为250ms,CPU使用率为65%
    • 服务器的配置:CPU、显卡好,能承受的IO一定是高的;网卡大,能承受的流量很大。性能与硬件是有关系的,要把硬件描述出来。
    • 衡量性能的指标
      
      • 并发数
      • TPS
      • MRT、RT90值、RT99值 (RT:Response time)
      • 资源使用率(CPU、内存、网络、磁盘)

    1.2 吞吐量

    • 每秒钟成功处理的事务数/请求数
    • 衡量指标
      * TPS:Transaction per second 对于接口来说,TPS是最主要的
      * IOPS:IO per second
      * BPS: Bytes per second
      * QPS:Query per second 数据库-每秒查询的事件

    1.3 响应时间:

    • 从客户端发起一个请求开始,到客户端接收到从服务器端返回的最后一个字节结束,这个过程所耗费的时间
    • 响应时间=(N1+N2+N3+N4)+(A1+A2+A3)

      如果一个接口响应很慢,通常需要打点,将慢的部分找出来。
      响应时间的衡量指标:
    • MRT(Mean Response Time):平均响应时间
    • STD DEV:标准差,响应时间波动,波动越小越好
    • RT90:90%请求的响应时间小于该值,产品响应及时要求不同,如网络延迟要求99.99%在某值范围
    • MAX:最大值,长尾时间

    1.4 资源使用率

    • 资源使用率指对不同系统资源的使用程度
      * 系统资源:CPU/内存/磁盘IO/网络IO
      * 应用资源:队列,锁,现层,GC,连接数等。
      * 当接口响应慢,也要考虑硬件的因素

    1.5 四个常见的性能测试概念


    a点:性能期望值
    b点:高于期望,系统资源处于临界点
    c点:高于期望,性能处于拐点,系统能承受的最大的TPS值
    d点:系统资源出现瓶颈,性能下降

    • 性能测试:通常在a点和b点之间进行
    • 负载测试:b点到c点
    • 压力测试:b点到d点,压倒最高点c,再加大线程,TPS反而下降,得出的c点即为系统能承受的最大的TPS值
    • 稳定性测试:a-b,不要超过c(超过c是没有意义的)

    2. 如何开展性能测试

    2.1 性能测试目标和测试类型的选择

    • 上线的功能是否有性能问题?
      * 评估系统性能:性能测试、负载测试
      * 检查系统性能瓶颈点:负载测试、压力测试
    • 优化后的接口,是否有性能提升
      * 回归测试、负载、压力测试
    • 验证稳定性、可靠性等:稳定性测试、异常测试
    • 容量评估:线上压测

    2.2 哪些接口需要进行性能测试

    • 核心功能
    • 高频调用接口(不一定是核心的,但调用量很大)
    • 业务逻辑复杂的接口、大量数据库读写操作

    2.3 性能测试环境要求

    • 软硬件环境要求一致
      * 线上集群的最小集合
      * 硬件配置最好一致
      * 拒绝多个服务混部在同一台服务器上
      * 软件配置和线上保持一致

    2.4 测试准备

    • 测试数据
      * 用户账号
      • 预估三个月或半年后活跃用户数
      • 避免随便几十个用户账号就开始测试
    *    参数化数据,数据量、数据大小符合真实分布
    *    设置[铺底数据](测试库数据量大小和线上保持一致,否则几十条数据测试正常,而放到线上几十万条就引发性能问题),从镜像库导线上数据到测试库
    
    • 测试脚本和工具:Jmeter、Grinder
    • 性能测试平台

    2.5 测试执行

    • 做好监控:把一切监控起来
      * 性能指标:TPS、MRT、RT90值、失败率
      * 资源监控:
      • 监控点:CPU、内存、网络、磁盘
      • 监控机器:压测机器、nginx、应用服务、数据库、缓存、消息队列
    *    日志监控:检查错误、异常,及时发现错误
    *    Java监控:堆内存、线程状态、线程数量等
    

    2.6 流程文档

    • 性能测试准入标准
      * 提测任务描述清楚
      * 功能(第一轮)测试通过
    • 提侧需求文档
      * 测试目的、测试内容、测试环境、通过标准、被测系统架构
    • 性能测试通过标准
      * 遗留bug:无major级别以上的bug
      * 是否符合预期:符合预期指标
  • 相关阅读:
    边工作边刷题:70天一遍leetcode: day 58-1
    边工作边刷题:70天一遍leetcode: day 58
    边工作边刷题:70天一遍leetcode: day 59
    边工作边刷题:70天一遍leetcode: day 90
    边工作边刷题:70天一遍leetcode: day 60-2
    边工作边刷题:70天一遍leetcode: day 60-1
    边工作边刷题:70天一遍leetcode: day 60
    边工作边刷题:70天一遍leetcode: day 61-7
    边工作边刷题:70天一遍leetcode: day 61-6
    边工作边刷题:70天一遍leetcode: day 61-5
  • 原文地址:https://www.cnblogs.com/csj2018/p/11722867.html
Copyright © 2011-2022 走看看