性能测试基础知识

1.1软件性能概述

  在软件质量模型中,性能被定义为软件的一种特性,软件质量模型如下图所示:性能测试基础知识_第1张图片 
  在软件质量模型中效率特性即为软件的性能,其包含两个方面的特性:时间特性和资源特性。时间特性指系统处理客户请求的响应时间;资源特性是指在进行性能测试的过程中,系统资源消耗的情况,常见的系统资源主要包括处理器(CPU)、内存和磁盘的使用情况。 
  虽然软件性能包含两个方面,但是不同的人所关注的性能层面有所不同。通常情况下,关注软件性能的人主要包含3类:用户、系统管理员和性能测试工程师、软件开发工程师。

1.2性能测试相关术语

1.2.1 响应时间

  响应时间是指应用系统从发出请求开始到客户端呢接收到所有数据所消耗的时间。 
  以一个WEB应用的页面响应时间为例,从客户端发送请求到服务器处理完成的整个过程如图所示。从图中可以看到,页面的响应时间可分解为“网络传输时间”(N1+N2+N3+N4)和“应用服务器处理的时间”(A1+A3),“数据库处理的时间”为A2,所以整个WEB页面请求的响应时间为N1+N2+N3+N4+A1+A3+A2。 
  性能测试基础知识_第2张图片

1.2.2 并发用户数

  并发用户数是指同一时间与服务器进行数据交换的所有用户的数量。 
  并发用户这个概念的误区:一是系统所有的用户都叫并发用户;二是认为所有在线的用户都是并发用户。在线用户不一定是并发用户,原因是在线用户不一定就与系统进行了数据交互 
  并发用户数如何计算:并发用户数很大程度上是根据经验和行业的一些标准来计算的。 
  一般情况下,可以参考如下方法来确定性能测试时的并发用户数: 
  (1)参考其他同类产品 
  (2)分析历史数据 
  如果有历史数据,可以分析后台统计到的历史数据,分析一年或半年的交易量,可以得到服务器每天需要处理的业务数量,进而可以确定系统需要支持的并发用户数。 
  (3)试上线运行 
  如果没有同类产品可以参考,那么试上线运行也是一种方法

1.2.3 吞吐量

  吞吐量是指单位时间内服务器处理的字节数,吞吐量的单位是B/s,吞吐量的大小直接体现服务器的承载能力。 
  当系统没有遇到性能瓶颈时,可以采用下面的公式来计算: 
  F=Nvu*R/T 
  式中,F为吞吐量,Nvu为VU(Virtual User,虚拟用户)的个数,R为在T时间内每个VU发出的请求字节数,T为性能测试所用时间。 
  吞吐量在VU增长到一定数量时,软件系统出现性能瓶颈,此时吞吐量的值并不会随着VU数量的增加而增大,而是趋于平衡。

1.2.4 吞吐率

  吞吐率是指单位时间内从服务器返回的字节数,也可以指单位时间内服务器处理客户提交的请求数,吞吐率=吞吐量/测试时间

1.2.5 TPS

  TPS(Transaction Per Second)表示服务器每秒处理的事务数,它是衡量系统处理能力的重要指标。如果每个事务对应的为一笔业务,那么TPS即表示服务器每秒中处理的业务笔数,处理业务数的值越大说明处理器的处理能力越强。

1.2.6 点击率

  点击率(Hit Per Second)是指每秒钟用户向服务器提交的HTTP数量。对于WEB系统来说,“点击率”是服务器处理的最小单位,点击率的值越大,说明服务器所需承受的压力越大。因此通常情况下,WEB服务器都有防刷新机制

1.2.7 资源利用率

  资源利用率是指服务器系统中不同硬件资源被使用的程度,资源使用率=资源实际使用量/总的可用资源量。主要包括CPU利用率、内存利用率、硬盘利用率、网络等,资源利用率是分析系统性能指标进而改善性能的主要依据,在配置调优测试的过程中,通过比较配置调优前后系统资源的利用率来判断调优的效果。

1.2.8 性能计数器

  性能计数器是指描述服务器或操作系统性能的一些数据指标。主要通过添加计数器来观察系统资源的使用情况。性能计数器包括操作系统性能计数器、数据库计数器、应用服务器计数器等。 
  一般情况下,单一的性能计数器只能体现系统性能的某一个方面,在性能测试过程中分析测试结果是,必须基于多个不同的计数器进行分析。在性能测试过程中,常用资源利用率进行横向对比。

1.2.9 思考时间

  思考时间(Think Time),也称为“休眠时间”,是指用户在进行操作时,每个请求之间的时间间隔。 
  在测试脚本中,思考时间为脚本中两条请求语句之间的间隔时间。

web_url("mer_login.gif",
"URL=http://localhost:1080/WebTours/images/mer_login.gif",
"Resource=1",
"RecContentType=image/gif",
"Referer=http://localhost:1080/WebTours/nv.pl?in=home",
"Snapshot=t9.inf",
LAST);
web_concurrent_end(NULL);
lr_think_time(5);
.............
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.3 性能测试划分

性能测试的方法主要包括以下几种: 
负载测试(Load Testing) 
压力测试(Stress Testing) 
配置测试(Configuration Testing) 
并发测试(Concurrency Testing) 
可靠性测试(Reliability Testing) 
基准测试(Benchmark Testing)

1.3.1 负载测试

  负载测试是通过对被测试系统不断地加压,直到超过预定的指标或者部分资源已经达到了一种饱和状态不能再加压为止。 
  该方法主要是为了找到系统最大的负载能力,为性能调优提供数据。该测试方法有以下几个特点: 
  (1)目的:找到系统最大的负载能力。 
  (2)环境:该方法需要在特定的环境下进行测试。 
  (3)手段:不断对系统进行加压,知道系统中部分资源达到极限。

1.3.2 压力测试

  压力测试是指系统已经达到一定的饱和程度(如CPU、硬盘等已经处于饱和状态),此时系统处理业务的能力,系统是否会出现错误。 
  该测试方法有以下几个特点: 
  (1)目的:测试在系统已经达到一定的饱和程度时,系统处理业务的能力。 
  (2)手段:使用模拟负载等方法,使系统资源达到一个较高水平 
  (3)该方法一般用于系统稳定性测试。

1.3.3 配置测试

  配置测试是通过调整系统软硬件环境,了解各种不同环境对系统性能的影响,从而找到系统的最优配置。 
  该测试方法有以下几个特点: 
  (1)目的:通过调整环境了解不同因素对系统性能的影响情况,从而找到调优的方法。 
  (2)手段:通过调整系统软硬件环境,使系统在不同环境下进行性能测试。 
  (3)该方法一般用于系统调优和规划能力。

1.3.4 并发测试

  并发测试是通过模拟用户并发访问,测试多用户同时访问同一应用、模块或数据,观察系统是否存在死锁、系统处理速度是否明显下降等其他的一些性能问题。 
  该测试方法有以下几个特点: 
  (1)目的:当多用户并发访问时,系统是否存在一些可能的并发问题。 
  (2)手段:模拟多用户同时并发操作。

1.3.5 可靠性测试

  可靠性测试是当系统在一定的业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定性,此处强调在一定业务压力下持续运行的能力,可靠性测试必须给出一个明确的要求,如系统能够持续无故障运行多少天。 
  该测试方法有以下几个特点: 
  (1)目的:测试系统在一定的业务压力下系统可持续运行的时间。 
  (2)环境:指明系统在一定的业务压力环境下持续运行。 
  (3)测试过程中要关注系统运行的情况

1.3.6 基准测试

  在一定的软件、硬件及网络环境下,模拟一定数量虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或者系统评测过程中,通过运行相同的业务场景并比较测试结果确定调优是否达到效果或者为系统的选择提供决策数据。 
  基准测试主要包括以下两个目的: 
  (1)度量改善性能测试的情况。 
  (2)测试并且调优,保证系统达到性能要求或服务协议要求,在这个测试过程中,基准测试与性能测试迭代配合,以确定调优的情况。

1.3.7 各类测试执行阶段

  一般 情况下载编码阶段进行并发测试、压力测试、和容量测试,因为在编码阶段需要快速地发现性能的问题,编码阶段结束后,系统进入测试阶段,此时更多的是测试系统的稳定性和对系统进行调优,是系统的性能最优化,所以测试阶段主要是进行负载测试、基准测试和配置测试。

1.4 性能测试应用领域

  性能测试从应用领域来划分,分为以下四大领域: 
 ● 能力验证 
  ● 规划能力 
  ● 性能调优 
  ● 缺陷发现

1.4.1 能力验证

  能力验证是性能测试最常用的一个领域。一般能力验证采用这样的描述方式:“某系统能否在条件A下具备B性能”。重点在于验证系统是否具备某种能力。 
  能力验证领域有以下几个特点: 
  (1)要求在一个已确定的环境下运行 
  (2)需要根据典型场景来设置测试方案与测试用例。

1.4.2 规划能力

  能力验证强调的是在某个条件下具备什么样的能力,而规划能力体现系统如何才能达到要求的性能指标。规划能力问题常常会这样描述:“系统如何才能支持未来用户增长的需要”,这里强调的是未来能力增长的一个需求,着眼于未来系统的规划。 
  规划能力领域的特点如下: 
  (1)对此系统能力的一种探索性的测试 
  (2)可以了解系统的性能及系统性能的可扩展性

1.4.3 性能调优

  性能调优是通过测试来调整系统的环境,最终使系统性能达到最优的状态。这是一个持续调优的过程。主要调优的对象有数据参数、应用服务器、系统硬件资源等。 
  一个标准的性能调优的步骤如图所示。 
  性能测试基础知识_第3张图片 
  (1)确定本次性能测试的基准环境、基准负载和基准的性能指标,目的是将这些基准数据作为后期测试数据的参考对象。 
  (2)对系统进行调优(调优的对象包括代码、数据库、应用服务器、系统资源等),再调整系统运行环境和测试方案,重复进行性能测试,并记录测试的结果。 
  (3)将调整后的测试结果与基准数据进行比较,以确定调优的效果,重复执行步骤2直到性能指标满足要求。来发现系统存在的缺陷。

1.4.4 缺陷发现

  性能测试应用领域的主要目标是通过性能测试的手段

1.5 小结

  本章主要介绍性能测试的基础知识。

你可能感兴趣的:(性能测试基础知识)