性能测试

性能测试概述

性能的概念

  • 什么是性能?
    • 时间:系统处理用户请求的响应时间
    • 资源:系统运行过程中,系统资源的消耗情况
  • 什么是性能测试
    • 使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程
  • 什么是性能测试的目的
    • 评估当前系统能力
    • 寻找性能瓶颈,优化性能
    • 评估软件是否能够满足未来的需要

性能测试和功能测试

  • 不同:
    • 功能测试:验证系统的功能需求规格。焦点:功能(正向、逆向)
    • 性能测试:验证系统的业务需求场景。焦点:时间、资源
  • 一般项目中,先功能测试通过后,后进行性能测试

性能测试分类

基准测试

  • 什么是基准测试
    • 狭义上讲,就是单用户测试。(单用户循环多次得到的数据)
    • 广义上讲,建立基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响
  • 基准测试数据的用途
    • 基准测试不会单独存在
    • 为多用户并发测试和综合场景测试等提供参考依据
    • 为系统/环境配置、系统优化前后的性能提升/下降提供参考指标

负载测试

  • 概念:
    • 通过逐步增加系统负载,确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能够承受的最大负载量的测试
  • 作用:
    • 系统最大负载量达到用户要求时,系统才能正式上线使用
      image
  • 注意
    • 通过负载测试,可以确定系统的最大负载量和极限负载量
    • 系统对外宣称的最大负载量
    • 负载测试的时间一般为1-2小时

稳定性测试

  • 概念:
    • 在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并保证最终服务器能满足线上业务需求。
  • 作用
    • 系统在用户要求的业务负载下运行达到规定的时间时,系统才能正式上线使用。

压力测试

  • 概念:
    • 在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力
  • 测试场景
    • 极限负载情况下的破坏性压力测试
    • 高负载下的长时间的稳定性压力测试
  • 分类:
    • 高负载下的长时间稳定性压力测试 (如:B-C区间内进行24/3*24小时长时间测试)
    • 极限负载下的破坏性压力测试(如:C-D区间内进行测试)

并发测试

  • 概念:
    • 并发测试(绝对并发):是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。
  • 应用场景
    • 特定活动场景,如:抢红包、秒杀、抢购等。
  • 与负载测试对比:
    • 负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题(双11活动)
    • 并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题(抢红包、秒杀)

性能测试的指标

响应时间

  • 指从客户端发起请求开始,到客户端接收到结果的总时间
  • 包括:服务器处理时间 + 网络传输时间
    image

并发用户数

  • 某一时刻同时向服务器发送请求的用户数
    image

吞吐量

  • 吞吐量(Throughput):指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力
    image
  • QPS
    • QPS(Query Per Second)每秒查询数:即控制服务器每秒处理的指定请求的数量
      image
  • TPS
    • TPS(Transactions Per Second)每秒事务数:即控制服务器每秒处理的事务请求的数量
      image

点击数

  • 所有的页面元素(如:图片、链接、框架等)的请求总数量
  • 注意:点击数是请求数,不是页面上的一次点击

错误率

  • 指系统在负载情况下,失败业务的概率
  • 注意:
    • 错误率是性能指标,是高负载下的失败业务的概率
    • 随机bug是功能bug,先解决随机bug才能进行性能测试

资源利用率

  • 概念:系统各种资源的使用情况(资源的使用量/总的资源可用量*100%)
  • 常见资源指标
    • CPU使用率:不高于75%-85%
    • 内存(大小)使用率:不高于80%
    • 磁盘IO(速率):不高于90%
    • 网络(速率):不高于80%

性能测试的流程

image

需求分析

image

性能测试计划

  • 测什么
    • 项目背景
    • 测试目的
    • 测试范围
  • 谁来测
    • 进度与分工
    • 交付清单
  • 怎么测
    • 测试策略

性能测试用例

image

性能测试执行

image

性能测试分析和调优

  • 性能测试分析人员经过对结果的分析以后,如果不符合性能需求,则会提出性能bug,然后由开发人员进行后续的调优。

性能测试报告

image

性能测试工具

JMeter和Loadrunner工具对比

image

JMeter环境搭建

安装JDK:
•下载JDK – 安装JDK – 配置环境变量 – 验证
安装Jmeter:
•下载Jmeter – 安装Jmeter – 配置环境变量 – 启动验证
注意点:
•下载JDK时,注意电脑操作系统是32位/64位
•下载Jmeter时,注意与本机安装的JDK版本匹配
•安装Jmeter时,安装路径中不能有中文/空格

JMeter的功能概要

  • JMeter文件目录结构
    image
  • 基本配置
    image

JMeter元件及基本作用域

  • 基本元件
    image
  • 作用域的原则
    image
  • 元件执行顺序
    image
  • 案例:执行顺序
    image
    image

JMeter案例

image

JMeter三个重要组件

  • 线程组
    image
    image
    image
    image
  • HTTP请求
    image
    image
    image
    image
  • 查看结果树
    image

JMeter参数化

image

  • 用户定义的变量
    image
  • 用户参数
    image
  • CSV数据文件设置
    image
  • 函数
    image
  • 四种参数化方式的对比
    image

image
image

image
image

JMeter断言

image

  • 响应断言
    参数:
    image
    image
    案例
    image
    image
  • JSON断言
    参数:
    image
    image
  • 断言持续时间
    image
    image
    image

JMeter关联

image
image
image
image

  • 正则表达式提取器
    image
    案例:
    image
    image
    方法1:
    image
    方法2:
    image
    image

image
image
image

  • xpath提取器
    image
    image
    案例:获取传智播客首页的title,并作为参数传递
    image
  • json提取器
    image
    案例:提取天气接口中的城市信息,作为参数在访问百度首页时传递
    image

Jmeter属性

image
image
案例:
image

自动录制脚本

原理:
image

image
image
image
image
image
image
image
image

直连数据库的作用

image

JMeter直连数据库

  • 步骤
    image
    image
    image
    image
    image
    image
  • 案例:
    image
    image

image
image

逻辑控制器

  • 如果(if)控制器
    image
    image
  • 循环控制器
    image
    image
    image
  • ForEach控制器
    image
    image
    image
    image
    image

定时器

  • 同步定时器
    image
    image
    image
    image
  • 常数吞吐量定时器
    image
  • 固定定时器
    image
    image
    image
    image
posted @ 2023-09-01 16:06  lemonHZZ  阅读(47)  评论(0)    收藏  举报