性能测试相关概念、指标

性能是一个很广泛的概念,通常的性能一般都是指服务的快慢和吞吐。确切地说应该包含但不限于压力、负载、性能、稳定性、容量、高可用等等

压测常用指标

常用指标

  • 每秒处理事务(TPS) 每秒系统处理事务(通过、失败以及停止)的数量。通过它可以确定系统在任何给定时刻的时间事务负载。
  • 事务平均响应时间(Average Transaction Response Time) 每一事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。
  • 最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应)的最大时间。
  • 最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响应)的最少时间。 - 90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第90%的响应时间
  • CPU利用率(CPU Usage) CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间/CPU总的执行时间。
  • CPU负载情况,对于多核计算机尤其重要
  • 内存使用率(Memory usage) 内存占用率指的是此进程所开销的内存。
  • 磁盘IO(Disk input/ output) 磁盘的读写包速率。
  • 网卡负载(Network Load) 网卡的进出带宽,包量。
  • 网卡队列情况,系统高压的情况需要密切关注
  • 可执行队列(Runable Que),从另外一个维度了解系统负载情况
  • 如果是云化环境,还需要关注宿主机相关资源情况(根据应用类型IO密集、计算密集、网络密集等)

压力测试指标

  • 并发:周期内统计和应用程序交互的请求
  • 并发用户数: 在同一时刻与服务器进行了交互的在线用户数量
  • 最大并发数: 指同时登录站点的最大人数或者服务器同时接收下载的最大数量。

负载测试指标

  • 请求访问数量:指发送请求压力的数量
  • HTTP错误率: 在选定时间段内,HTTP错误数量与请求数量的比率
  • 吞吐率: 是场景运行过程中服务器每秒的吞吐量。其度量单位是字节,表示每个请求连接在任何给定的每一秒从服务器获得的数据量。

相关概念

并发测试

多用户同时访问同一个应用、同一个模块或者数据记录时是否存在隐藏的并发问题,如内存泄漏、线程锁、资源争用问题

这个并发一般从两个角度:一个是用户并发(需要保持一定量的线程并发)、一个是业务并发(服务器的直接处理能力,与多少线程无关,主要评估服务器吞吐),根据实际使用情况来决定,这两者是有区别的

  • 发现系统中可能隐藏的并发访问时的问题
  • 系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题

场景测试

泛指情景,可以理解为一种特定的使用流程(比如购买流程:登录-加购物车-结算-付款)

  • 主要目的是找到系统中所存在的性能问题
  • 用来了解系统的性能容量,或是配合性能调优来使用

接口测试

接口测试是测试系统组件间接口的一种测试

  • 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点
  • 接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试
  • 接口测试的目的是测试接口,外部接口测试一般是作为系统测试来看待的

容量测试

通过性能测试,如果找到了系统的极限或苛刻的环境中系统的性能表现,在一定的程度上,就完成了负载测试和容量测试。

  • 通过测试预先分析出反映软件系统应用特征的某项指标的极限值

  • 了解该软件系统的承载能力或提供服务的能力,同时也可以帮助用户经济地规划应用系统,优化系统的部署
    ##性能调优
    指为软件提供较佳的性能,用于处理系统响应速度太慢等。尝试列出系统中各个组件合理的性能消耗,可以帮助理清整个系统访问中,各个组件所占的性能消耗比例,哪些部分有可以调整的空间。另外,再搭配调整该部分的成本有多高,了解调整的优先级,并对系统的极限有更佳的认识

  • 系统响应速度太慢

  • 每秒所完成的系统输出/入低于预期

  • 相同的环境,但每秒钟所完成的批操作较先前少

  • 系统资源(如CPU、内存、硬盘或网络等)长时间处于耗尽的状态

性能调优,首先是要确定性能调优的目标是什么(可以参考上面提到的性能指标)

稳定性测试

在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定

  • 这种性能测试方法的主要目的是验证是否支持长期稳定的运行。
  • 这种性能测试方法需要在压力下持续一段时间的运行(根据实际情况一般是一个维护周期,即人工干预运行的时长)
  • 测试过程中需要关注系统的运行状况
  • 也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态(一般为峰值的60~80%的业务量)

压力测试

模拟实际应用的软硬件环境及用户使用过程的系统负荷,确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等

  • 主要目的是检查系统处于压力性能下时,应用的表现
  • 一般通过模拟负载等方法,使得系统的资源使用达到较高的水平
  • 一般用于测试系统的稳定性
  • 让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题
指标 关注人群
响应时间 用户角度
服务器资源 系统角度
吞吐量 业务角度

欢迎补充~

持续整理工作记录…… 东西好碎,有些环境已经不在了,相当于重新搞一遍这里写图片描述

你可能感兴趣的:(性能测试)