性能测试基础

1、性能测试简介

在软件系统日益复杂的今天,性能已经成为了软件质量重要的衡量标准之一。目前IT系统无处不在,给用户带来方便的同时,也对开发和测试人员提出了新的要求。性能测试对测试人员的要求很高,不但要求测试人员有很强的技术能力,还要具备综合分析问题的能力。

性能测试是最能体现测试工程师能力的测试工作之一,要求测试人员具有多方面的技能,例如:

  1. 掌握LoadRunner、JMter等性能测试工具的使用
  2. 具备一定的程序开发能力,例如:C、.net、Java
  3. 掌握Oracle、DB2等主流数据库的使用和基础调优方法
  4. 掌握UNIX/Linux操作系统的使用和基础调优方法
  5. 掌握Weblogic/Websphere等应用服务器的使用和基础调优方法
  6. 综合分析与定位系统性能问题的能力

1、系统环境

在进行性能测试之前,我们需要了解当前待测系统的各项环境。一般来说,都会存在测试环境与生产环境,测试环境搭建的标准:

  • 测试环境架构与生产环境架构完全相同。
  • 测试环境机型与生产环境机型尽量相同,云化的资源确保是同规格ECS或者容器。
  • 测试环境软件版本与生产环境软件版本完全相同,版本主要包括:操作系统、中间件相关、数据库、应用等。
  • 测试环境参数配置与生产环境完全相同,参数主要包括:操作系统参数、中间件参数、数据库参数、应用参数。
  • 测试环境基础数据量与生产环境基础数据量需在同一个数量级上。
  • 只能减少测试环境机器台数,并且需要同比例缩小,而不能只减少某一层的机器台数。
  • 理想的测试环境配置是生产环境的1/2,1/4。

在搭建好测试环境之后,我们需要对环境中的参数进行调研,部分内容如下:

  • 系统架构:系统如何组成的,每一层功能是做什么的,与生产环境有多大差异,主要为后面进行瓶颈分析服务和生产环境性能评估,这个很重要。
  • 操作系统平台:操作系统是哪种平台,进行工具监控。
  • 中间件:哪种中间件,进行工具监控和瓶颈定位。
  • 数据库:哪种数据库,进行工具监控和瓶颈定位。
  • 应用:启动多少个实例,启动参数是多少,进行问题查找和瓶颈定位。

 

 

 

2、性能测试典型指标

接下来介绍一些在性能测试中出现的频率比较高的词汇。

前端主要关注的点:

  • 响应时间:用户从客户端发出请求,并得到响应,以及展示出来的整个过程的时间。
  • 加载速度:通俗的理解为页面内容显示的快慢。
  • 流量:所消耗的网络流量。

后端主要关注的点:

  • 错误率:失败的事务数/事务总数。
  • 响应时间:接口从请求到响应、返回的时间。
  • 内存占用:也就是内存开销。
  • 并发用户数:同一时间点请求服务器的用户数,支持的最大并发数。
  • 资源使用率:CPU占用率内存使用率磁盘I/O网络I/O
  • 吞吐量(TPS):Transaction Per Second, 每秒事务数。在没有遇到性能瓶颈时:TPS=并发用户数*事务数/响应时间。

从性能测试分析度量的度角来看,主要可以从如下几个大的维度来收集考察性能指标:系统性能指标、资源性能指标、稳定性指标

1、系统性能指标

系统性能指标:指系统在利用系统硬件平台和软件平台进行信息处理的能力。系统处理能力通过系统每秒钟能够处理的交易数量来评价,交易有两种理解:一是业务人员角度的一笔业务过程;二是系统角度的一次交易申请和响应过程。前者称为业务交易过程,后者称为事务(事务是用户某一步或几步操作的集合)。两种交易指标都可以评价应用系统的处理能力。

一般情况下,系统处理能力又用以下几个指标来度量:

HPS(Hits Per Second) :每秒点击次数,单位是次/秒。

TPS(Transaction per Second):系统每秒处理交易次数,单位是笔/秒。

QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。

并发用户:

一般分两种情况,一种是严格意义上、狭义上的并发,即所有的用户在同一时刻做同一件事或者操作。多适用于性能测试、负载测试、压力测试;(单一测试场景)另一种是广义的并发,即多个用户对系统发出了请求或进行了操作,但这些请求和操作是不同的。对整个系统而言,仍然有很多用户同时进行操作。广义并发不限制对系统的请求操作,多适用于稳定性测试;(混合测试场景)

 

用户并发数量:

有两种误解(一是使用系统的全部用户数,一个是在线用户数),这些都不应该是用户并发的数量。实际上应该是在同一时刻与服务器进行交互的在线用户数量,特点是与服务器进行了交互。

 

请求响应时间(RT):

指的是客户端发出请求到得到响应的整个过程的时间,在一些工具中被称为TTLB(Time to Last Byte),请求响应时间的单位一般是秒(s)或毫秒(ms),一次请求的过程如下图所示:

image.png

请求响应时间为“网络响应时间”和“应用程序与系统响应时间”之和。具体由七部分组成,即(N1+N2+N3+N4)+(A1+A2+A3)。

 

事务响应时间(TPS):

一个事务可能由一系列请求组成,此时间主要是针对用户而言,属于宏观上的概念,可以等同于业务响应时间。是直接衡量系统性能的参数。

 

吞吐量Network Throughput)

是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。

网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。

指的是在单位时间内网络上传输的数据流量的总和。吞吐量/传输时间=吞吐率。

 

吞吐率:

通常值的单位时间内网络上传输的数据流量,特定条件下可以用来代表单位时间内处理的客户端请求数量,一般用来衡量网络传输性能。单位一般是字节数/秒,请求数/秒。从业务上也可以用业务数/天,访问量/天来衡量

 

错误率(FR):

简称FR,指系统在负载情况下,失败交易的概率。错误率=(失败交易数/交易总数)*100%。

 

2、资源性能指标

资源指标:如CPU资源利用率内存利用率I/O内核参数(信号量、打开文件数)等。

CPU:

又称为中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。

 

内存:

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。

现在的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内存是否有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。

 

3、应用性能指标

应用指标:如空闲线程数数据库连接数GC/FULL GC次数、函数耗时等。

4、前端性能指标

前端指标:如页面加载时间、网络时间(DNS、连接时间、传输时间等)。

3、性能测试类型

在性能测试当中,存在着很多种类的测试,例如:峰值测试、负载测试、压力测试、强度测试、容量测试、并发测试、可靠性测试、配置测试等。在一般的性能测试当中,一般会结合起来实施。这些测试类型的本质上都是对并发用户的性能测试:或者调整加压方式、或者调整加压时间、或者调整压力大小,再配合测试环境、测试参数的调整,便得到了不同种类的性能测试。

简述常用的几种类型如下:

1、压力测试(Stress Test)

含义:压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

例子:测试一个Web网站,在大量的负荷下,何时系统的事务响应时间将变得不可接受或者不能正常执行。

特点:高度负荷、长时给压、破坏性

2、负载测试(Load Test)

含义:通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。

例子:找到一个系统的负载临界点。

特点:逐步递增、定位瓶颈、目标负荷

3、容量测试(Capacity Test)

含义:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如用户可以接受的响应时间上限、资源占用率上限、数据库记录数等,这些极限值为业界定义或者产品/开发人员预设的目标),系统在该系列极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。

例子:在某一个极限的标准下,可以进行正常操作的数据容量。

特点:逐级递增、达到瓶颈、

4、强度测试

含义:主要是为了测试系统在异常情况下的处理能力

例子:正常压力下客户点击率为1000次/秒,运行点击率为2000次/秒的场景

特点:异常场景、稳定性

5、并发测试

含义:主要用来测试多用户同时访问同一系统/同一模块/同一业务功能/同一数据记录时是否存在性能问题,几乎所有的性能测试都会设计并发测试

6、大数据量测试

含义:分两种,一种是对于系统进行大数据查询时的测试;一种是历史大数据测试,测试数据量达到一定量级时的性能。

7、配置测试

含义:主要时通过测试找到系统各项资源的最优分配原则,通过测试不断调整应用服务器各项参数,使之达到一个较好的性能。

8、可靠性测试

含义:测试系统在一定压力下长时间运行是否稳定可靠,主要用来测试系统是否可以长时间稳定对外提供可口的服务。

 

4、性能调整基础

在性能测试工作中,得到测试结论之后,对系统进行调整是非常非常重要的。性能调整比性能调优是更准确的说法,例如可能为了调优某一部分,使另一部分调的不优。

所谓的性能调整是为了改变系统特性而对系统软件或硬件进行修改,性能调整不是测试人员的职责,性能测试工程师的主要任务是发现并定位性能问题,对于调整,通常由性能测试工程师、DMA、开发人员共同解决,但是性能测试工程师需要了解相关知识。通常性能调整分为五个步骤:

  1. 确定问

通常情况下,首先确定系统是否存在问题,并对问题进行正确的定位,可以从以下几个方面考虑

    • 程序代码:通常性能问题都是写出来的,因此对于发现瓶颈的模块,应该先检查一下代码。
    • 数据库配置:会引起整个系统运行缓慢,一些大型的数据库都需要DBA进行正确的参数调整
    • 硬件设置:磁盘速度、内存大小等都是容易引起瓶颈的原因,都是分析的重点。
    • 网络:网络负载过重会导致网络冲突和网络延迟。
  1. 确定原因
    • 问题的影响是什么,是响应时间还是业务吞吐量,或者引起了其他问题
    • 是少数用户还是大量用户遇到了问题,少数用户的操作是什么
    • 系统资源监控的结果是否异常,CPU的使用是否达到极限?I/O情况如何?
    • 问题是否集中在某一类模块中
    • 系统硬件配置是否够用?
    • 是客户端还是服务器出现了问题?
    • 是否实际负载超过了系统的负载能力?
  1. 确定调整目标和解决方案

找到了问题的原因之后,首先要确定调整目标,然后设计解决方案。调整目标的主要作用是明确何时停止调整系统。每个系统都有各自的特点,因此调整的目标可能不同,下面这些都是系统调整的目标

    • 提高系统吞吐量
    • 缩短响应时间
    • 更好地支持开发
  1. 测试解决方案

确定了解决方案之后,就要对方案进行测试,测试方案尽量在仿真测试环境下进行。因为生产环境下可能会带来破坏,除非充分估计了测试的风险,并且准备了充分的补救方案。

  1. 分析调整结果

性能调整的最后一步就是分析调整结果,如果没有解决问题,就要重复前面的工作。分析结果主要需要考虑下面的问题:

    • 系统调整是否达到或者超出了预定目标?
    • 系统是整体性能得到了改善,还是牺牲了某部分性能来解决问题?
    • 调整是否可以结束了?

 

 

5、常见的性能测试详细指标

Web服务器指标

指标                                                                         说明

Requests Per Second(Avg Rps)                       平均每秒钟响应次数=总请求时间 / 秒数

Avg time to last byte per terstion (mstes)      平均每秒业务脚本的迭代次数 ,有人会把上面那个混淆

Successful Rounds                                               成功的请求

Failed Requests                                                    失败的请求

Successful Hits                                                     成功的点击次数

Failed Hits                                                            失败的点击次数

Hits Per Second                                                    每秒点击次数

Successful Hits Per Second                                   每秒成功的点击次数

Failed Hits Per Second                                          每秒失败的点击次数

Attempted Connections                                       尝试链接数

数据库服务器性能指标

指标                                                                          说明

User 0 Connections                                               用户连接数,也就是数据库的连接数量

Number of deadlocks                                            数据库死锁

Butter Cache hit                                                     数据库Cache的命中情况

系统的瓶颈定义

性能项                                   命令                                指标

CPU限制                             vmstat                             当%user+%sys超过80%时

磁盘I/O限制                        Vmstat                            当%iowait超过40%(AIX4.3.3或更高版本)时

应用磁盘限制                     Iostat                               当%tm_act超过70%时

虚存空间少                         Lsps,-a                          当分页空间的活动率超过70%时

换页限制                            Iostat, stat                        虚存逻辑卷%tm_act超过I/O(iostat)的30%,激活的虚存率超过CPU数量(vmstat)的10倍时

系统失效                            Vmstat, sar                       页交换增大、CPU等待并运行队列

稳定系统的资源状态

性能项                               资源                                             评价

CPU占用率                          70%                                            好

                                           85%                                            差

                                           90%+                                          很差

磁盘I/0                                <30%                                           好

                                          <40%                                           差

                                          <50%+                                        很差

网络                                   <30% 带宽                                    好

运行队列                            <2*CPU数量                                   好

内存                                  没有页交换                                     好

                                        每个CPU每秒10个页交换                差

                                        更多的页交换                                  很差

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值