性能测试基础

一、性能测试的含义

1. 什么是性能测试

  • 测试软件的性能表现,考量软件运行的如何。
    • 一般关注时间/效率、资源占用等情况。
    • 既要马儿快点跑,又要马儿少吃草。

2. 什么时候进行性能测试

  • 已通过系统测试,功能比较稳定。

3. 谁关注性能

  • 用户
    • 用户体会到的性能是软件对用户操作的响应时间,是用户从提交或输入一个 url 地 址到系统将全部数据呈现出来的时间。
  • 系统管理员和性能测试工程师
    • 除与用户的视角一样外,还关注与系统状态相关的信息,如系统资源的使用情况, 包括 CPU 的使用、内存的使用情况、磁盘 I/O、数据交互等。
    • 还关注硬件资源的可扩展性即规划性能部分,如系统支持 100 个用户并发没问题, 支持 200 个呢?
  • 软件开发工程师
    • 关注以上所有问题,还关注内存泄露、数据库是否死锁、中间件以及和应用程序服 务器等问题。

二、性能测试术语

1. 请求

  • 客户端向服务器发出的请求获得数据或文件、图片等资源。

2. 响应

  • 服务器向客户端发送数据或文件、图片等资源。

3. 协议

  • 传输层协议
    • tcp、udp
  • 应用层协议
    • ftp、http、dns、dhcp、smtp、pop

4. 响应时间

  • 应用系统从用户发出请求开始,到客户端接收到所有数据所消耗的时间。
  • 网页响应时间细分
    • 网络传输时间:N1+N2+N3+N4。
    • 应用服务器处理数据:A1+A3。
    • 数据库处理时间:A2。
      在这里插入图片描述

5. 在线用户

正在使用软件的用户。

6. 并发用户

  • 指同一时刻与服务器进行数据交互的所有用户数量。
    • 在线用户未必是并发用户。
  • 计算并发用户数
    • 一般都根据以往经验和行业标准进行估算。
      • 如电信业并发用户数常为在线用户的万分之一;
      • OA 软件并发用户数一般在在线用户数的 5%-20%。
    • 参考其他同类产品。
    • 分析历史数据(一年或半年内的每天需要处理的交易业务量)。
    • 试上线运行。

7. 虚拟用户

  • 性能测试工具使用虚拟用户模拟真实用户的行为

8. 吞吐量与吞吐率

  • 吞吐量
    • 指一段时间内服务器处理的字节数,直接体现服务器的承载能力。
      在这里插入图片描述
  • 从吞吐量和 VU 关联图可看出,吞吐量在 VU 增长到一定数量时,软件系统出现性 能瓶颈,此时吞吐量不再随 VU 增多而增大,而是趋于平衡。
  • 实际测试时,吞吐量在测试前是不知道的,必须通过不断添加虚拟用户来测试,以 找到吞吐量的拐点,即吞吐量的最大值。
  • 吞吐率(Throughout)
    • 指单位时间内从服务器返回的字节数,即吞吐量/测试时间,也可以是单位时间内 处理的客户请求数。
    • 它是衡量网络性能一个重要指标。通常情况下吞吐量越大,吞吐率的值也越大,吞 吐率越大表示系统的负载能力越强。

9. 每秒事务数(TPS,Transaction Per Second)

  • 表示每秒系统处理的事务数,是衡量系统处理能力的重要指标。
  • 如果每个事务对应一笔业务,那么 TPS 即表示服务器每秒处理的业务笔数。

10. 点击率(Hit Per Second)

  • 指每秒钟用户向服务器提交的 HTTP 请求的数量。
  • 点击一次可能会向服务器发出多个 HTTP 请求。
    • 通常服务器都具有防刷新机制,以防刷新导致的巨大压力。
  • 点击率仅仅反映客户端提交的请求数,不能表现服务器当前承受的压力,因为服务器不 能处理全部请求时可以拒绝客户端的部分请求。
  • 若把每次点击作为一次提交事务来对待,则点击率与 TPS 同义。

11. 思考时间(Think Time)

  • 也称"休眠时间"、等待时间。
  • 指用户在进行操作时,每个请求之间的时间间隔。
  • 负载测试一般忽略思考时间,压力或可靠性测试根基实际情况设置一个思考时间。通常 思考时间设置为 3-5s。

12 资源利用率

  • 资源利用率
    • 指服务器系统中不同硬件资源被占用的程度,主要包括 CPU 利用率、内存利用率、 磁盘利用率、网络等。
    • 性能测试中常用资源利用率进行横向对比,如 CPU 使用率很高,而其他资源较低, 可知 CPU 是系统瓶颈。
    • 配置调优测试中,通过比较配置调优前后的系统资源利用率来判断调优效果。
  • 性能计数器(Counter)
    • 是描述服务器或操作系统性能的一些数据指标。主要是通过添加计数器来观察系统 资源的使用情况。
    • 计数器在性能测试中发挥着“监控和分析”的关键作用,尤其是分析系统可扩展性 和定位性能瓶颈时。
    • 性能测试中分析测试结果时,必须基于多个不同的计数器进行分析。

三、性能测试分类

1. 负载测试(Load Testing)

  • 通过对被测试系统不断的加压,直到超过预定的指标或者部分资源已经达到了一种饱和 状态不能再加压为止。
  • 此方法主要是为了寻找系统最大的负载能力,为性能调优提供依据。

2. 压力测试(Stress Testing)

  • 当系统已经达到一定的饱和程度(如 CPU、磁盘等已经处于一种饱和状态)时,测试 系统处理业务的能力,测试系统是否会出现崩溃等。
  • 一般通过模拟负载等方法,使系统资源达到一个较高水平。
  • 此方法一般用于系统稳定性测试。

3. 并发测试(Concurrency Testing)

  • 通过模拟用户并发访问,测试多用户同时访问同一应用、模块或数据,观察系统是否存 在死锁、系统处理速度明显下降等性能问题。

4. 容量测试(Volume Testing)

  • 寻找软件系统某项指标的极限值(如最大并发用户数、数据库记录数、最大负载、工作 量等)的测试,是一种测试目标。

5. 可靠性测试(Reliability Testing)

  • 或称稳定性测试,健壮性测试。
  • 当系统在一定的业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定 性。
  • 可靠性测试一般必须给出一个明确的要求,如系统能够持续无故障运行多少天。
  • 是一种测试目标。

6. 配置测试(Configuration Testing)

  • 配置测试
    • 通过调整系统软/硬件环境,了解不同环境对系统性能的影响,从而找到系统的最 优配置。
    • 此方法一般用于系统调优和规划。
  • 基准测试
    • 在一定的软硬件及网络环境下,模拟一定数量的虚拟用户运行一种或多种业务,将 测试结果作为基线数据,在系统调优或系统评测过程中,通过运行相同的业务场景 来比较测试结果确定调优是否达到效果或为系统的选择提供决策依据。

四、性能测试流程

性能测试过程分为四个阶段:测试设计、构建、执行、分析。

1. 设计阶段

定义待测试的业务流程、业务的平均处理量、业务处理量的最高峰值、组合业务流程、 系统的整体用户和响应时间目标。

2. 构建阶段

  • 设计设置和配置测试系统及基础设施、使用自动化性能测试解决方案构建测试脚本和负 载方案。
  • 具体包括:编写脚本、增强脚本、设计场景。

3. 执行阶段

包括运行负载方案和测量系统性能,对系统资源进行监控。

4. 分析、诊断和调节阶段

主要测量系统性能并使负载测试进入下一级别,重点查找问题原因以帮助开发工程师迅 速解决问题,并实时调节系统参数以提高性能。

五、主流性能测试工具

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值