zoukankan      html  css  js  c++  java
  • 第一天学习:性能测试理论概述

    一.性能测试的概念:


     性能测试:通过一定的手段,在多并发下情况下,获取被测系统的各项性能指标,验证被测系统在高并发下 的处理能力、响应能力,稳定性等,能否满足预期。定位性能瓶颈,排查性能隐患,保障系统的 质量,提升用户体验。


    二.适合做性能测试的系统:


    ◼ 用户量大,PV比较高的系统

    ◼ 系统核心模块/接口

    ◼ 业务逻辑/算法比较复杂

    ◼ 促销/活动推广计划

    ◼ 新系统,新项目

    ◼ 线上性能问题验证和调优

    ◼ 新技术选型

    ◼ 性能容量评估和规划

    ◼ 日常系统性能回归


    三.性能测试的指标


    1.TPS(Transaction Per Second )】:每秒处理的事务数。

    事务:在性能测试领域里,衡量一个系统性能的好坏,主要看的是单位时间内,系统可以处理多少业务量。 各个系统的业务各不相同,为了方便使用统一指标来衡量业务的性能。用事务来代表业务操作,一 个事务可以代表一个业务,也可以代表多个业务操作。事务是用户定义的,想测试什么业务的性能, 就把该业务加到事务中。

    比如:查询银行卡的余额是一个业务;取钱也是一个业务;查询+取钱也是一个业务。

    2.平均响应时间】:在测试过程中,所有请求的平均耗时。

    一个请求的响应时间包含的时间有:

     响应时间=网络传输的总时间+各组件业务处理时间

    3.【TOP响应时间】:将所有请求的响应时间先从大到小进行排序,计算指定比例的请求都是小于某个时间。该指标统计 的是大多数请求的耗时。

    Tp90(90%响应时间):90%的请求耗时都低于某个时间

    Tp95(95%响应时间):95%的请求耗时都低于某个时间

    Tp99(99%响应时间):99%的请求耗时都低于某个时间

    4.【并发数/虚拟用户(Vuser)】:压测工具中设置的并发线程/进程数量。

    5.【成功率】:请求的成功率。

    6.【PV(Page View)】: 页面/接口的访问量。

    7.【UV(Unique Visitor)】 :页面/接口的每日唯一访客。

    8.【吞吐量】: 网络中上行和下行的流量总和,吞吐量代表网络的流量,TPS越高,吞吐量越大。

    思考:TPS,响应时间和并发数三者之间的关系是怎样的?

    1)在系统达到性能瓶颈之前,TPS和并发数成正比关系

    2)在一定的并发数下,响应时间与TPS成反比关系

    3)响应时间单位为秒的情况下:(理论上,适合单接口的业务)

    TPS = 1 / 响应时间 * 并发数

    TPS = 并发数 / 响应时间

    9.【操作系统级别监控】: CPU使用率、内存使用率、网络IO(input/output)、磁盘(read/write/util)

    10.【中间件监控】 :连接数、长短连接、使用内存

    11.【应用层监控】: 线程状态、JVM参数、GC频率、锁

    12.【DB层监控】: 连接数、锁、缓存、内存、SQL效率


    四.性能测试的流程


    1• 需求调研

    ◼ 项目背景

    ◼ 测试范围

    ◼ 业务逻辑 & 数据流向

    ◼ 系统架构

    ◼ 配置信息

    ◼ 测试数据量(量级要一致)

    ◼ 外部依赖

    ◼ 系统使用场景,业务比例

    ◼ 日常业务量

    ◼ 预期指标

    ◼ 上线时间


    2• 测试计划

    ◼ 项目描述

    ◼ 业务模型及性能指标

    ◼ 测试环境说明

    ◼ 测试资源

    ◼ 测试方法以及场景设计原则:

                ◼ 基准测试 ◼ 单交易负载测试 ◼ 混合场景测试 ◼ 高可用性测试 ◼ 异常场景测试 ◼ 稳定性测试 ◼ 其他特殊场景

    ◼ 测试进度安排及测试准则


    3• 环境搭建

    测试要点:

    测试机器硬件配置尽量和线上一致

    ◼ 系统版本与线上一致

    ◼ 测试环境部署线上最小单元模块

    ◼ 应用、中间件、数据库配置要与线上一致

    ◼ 其他特殊配置


    4• 数据准备

    测试数据分为两部分:基础数据和参数化数据 通常采用以下三种方法进行构造 :

    ◼业务接口 -- 适合数据表关系复杂 -- 优点:数据完整性比较好

    ◼存储过程 -- 适合表数量少,简单 -- 优点:速度最快

    ◼脚本导入 -- 适合数据逻辑复杂 -- 自由度比较高

    5• 脚本编写

     选择工具(Loadrunner、Jmeter、Locust等)

    ◼ 选择协议(Http、TCP、RPC)

    ◼ 参数化

    ◼ 关联

    ◼ 检查点

    ◼ 事务判断

    6• 压测执行

     ◼分布式执行

    ◼ 监控 -- Linux -- Jvm -- 数据库

    ◼ 收集测试结果

    ◼ 数据分析

    ◼ 瓶颈定位

    7• 调优回归

    ◼ 性能调优需要整个团队完成

    ◼ 反复尝试

    ◼ 回归验证

    ◼ 监控工具

    ◼ 全链路排查

    ◼ 日志分析

    ◼ 模块隔离

    8• 测试报告

    ◼ 概述

    ◼ 测试环境

    ◼ 结果与分析

    ◼ 调优说明

    ◼ 项目时间表

    ◼ 结论

    ◼ 建议

     

  • 相关阅读:
    SpringCloud采用Dubbo远程调用(SpringCloud Alibaba)
    服务注册与发现Nacos
    Nacos配置管理
    Spring Cloud Stream
    MySQL查询优化explain
    索引
    MySQL架构
    mysql事务、视图
    多表查询
    分布式为什么使用python
  • 原文地址:https://www.cnblogs.com/smilecindy/p/14288954.html
Copyright © 2011-2022 走看看