性能测试基础理论知识

性能测试需要具备的技能

  • 掌握一门编程语言
  • 掌握计算机原理+操作系统知识
  • 良好的网络基础
  • 掌握数据库知识
  • 中间件
  • 性能测试工具

1.性能测试概述

1.1什么是性能测试

? 系统在一定的压力情况下,查看cpu,内存,磁盘,网络带宽,TPS、响应时间、并发用户数、等各项指标,通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求,就是在特定的运行条件下验证系统的能力状况。

1.2性能测试目的

目的:验证是否达到用户的性能指标;发现软件中存在的性能瓶颈并优化
1.评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。
2.识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。
3.系统调优:重复运行测试,验证调整系统的活动是否达到预期结果,从而改进性能。如:长时间的执行可导致内存泄漏
4.验证稳定性:在一定生产负荷下执行测试的一定的时间,以评估系统稳定性和可靠性是否满足要求。

1.3性能测试关注点

1.从用户角度:响应时间(还要我等多久)、稳定性(为什么总是失败)
2.从管理员的角度:资源利用率、可扩展性、系统容量、稳定性
3.从开发视角:架构设计、数据库设计、代码
4.从测试工程师角度:测试人员需要考虑全面的性能,包括、用户、开发、管理员等各个视角的性能
测试人员在做性能测试时除开要关注表面现象如响应时间,也要关注本质,比如用户看不到的服务器资料利 用率

2.常用性能指标

2.1响应时间

客户端到服务端的请求时间,从服务端返回数据到客户端的时间,页面渲染时间

2.2吞吐量

1.从性能测试角度,吞吐量指单位时间内系统处理用户的请求数

2.从业务角度看,吞吐量可以用请求数/秒、页面数/秒、人数/天或业务数/每小时等单位来衡量用请求数/秒、页面数/秒来衡量

3.从网络角度,吞吐量可以用:字节/秒来衡量

4.对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力

2.3并发数

并发:用于从业务的角度模拟真实用户访问,并发分为严格并发、广义并发
并发数:同时访问系统的用户数,并发用户数决定于具体的业务场景,在确定并发用户数之前,必须先对用户的业务进行分解,分析出其典型的用户场景(用户最常 用、最关注的业务操作),然后基于场景获得其并发用户数。常见场景:网址首页、登录功能、核心业务功能、个人中心
平均并发用户数的计算

\[C=nL/T\]

C是平均的并发用户数 n是平均每天访问用户数 L是一天内用户从登录到退出的平均时间 T是考察时间长度
并发用户数峰值

\[C‘=C + 3\sqrt{C}\]

C‘是并发用户峰值 C是平均并发用户数

2.4系统性能计数器

描述服务器或操作系统性能的一些数据指标;比如:内存、cpu、磁盘等资源使用率等

2.5思考时间

思考时间是指用户在进行操作时,每个请求之间的间隔时间
在测试脚本中,思考时间体现为脚本中两个请求语句之间的间隔时间。
设置思考时间是为了更加真实的模拟用户操作。

2.6每秒事务数-TPS

? 事务是用户的一个完整操作或者几步操作的集合。比如用户对某一个页面的一次请求,用户对某系统的一次登录,淘宝用户对商品的一次确认支付过程。这些我们都可以看作一个事物。那么如何衡量服务器对事物的处理能力。引出一个概念-TPS

TPS(Transaction Per second),每秒钟系统能够处理事务或交易的数量,它是衡量系统处理能力的重要指标。

2.7每秒点击数

每秒钟用户向WEB服务器提交的HTTP请求数,这个指标是WEB应用特有的一个指标。WEB应用是“请求-响应”模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念,容易看出,点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单机操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求。

3.性能测试方法

3.1验收性能测试

? 通过模拟生产运行的业务压力量和使用场景组合,测试系统能否满足生成性能要求。主要用来验证系统是否 能达到宣称的能力。是一种完全确定了系统系统运行环境和测试行为。
内容:确定用户场景、给出需要关注的性能指标、测试执行、测试分析。
示例:要求系统在100个并发用户的条件下进行A业务操作,响应时间不应超过5s

3.2负载测试

? 负载测试主要是考察软件系统在既定负载下的性能表现。对负载测试有如下解:负载测试是站在用户的角度去观察在一定条件下,软件系统的性能表现;负载测试的预期结果是用户的性能需求得到满足。此指标一般为响应时间、交易容量、并发容量、资源使用率等。

3.3压力测试

为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户数。注意,这个极端条件并不一定是用户的性能需求,可能 远远高于用户的性能需求。

压力测试与负载测试的区别:
    压力测试关系的是系统本身
    负载测试关心的是用户需求
    压力测试的预期结果就是系统出现问题,我们考察的是系统处理问题的能力。
    负载测试是考察软件系统在既定负载下的性能表现。
    压力测试是能让我们识别系统的弱点和在极限负载下程序将如何运行

3.4并发测试

? 验证系统的并发处理能力。一般是和服务器端建立大量的并发连接,通过客户端的响应时间和服务器端的性能监测情况来判断系统是否达到了既定的并发能力指标
? 之所以把并发测试单独提出来,是因为并发测试往往涉及服务器的并发容量,以及多进程/多线程协调同步可能带来的问题。这是要特别注意,必须测试的

3.5基准测试

? 当软件中增加一个新的模块的时候,需要做基准测试,以判断新模块对整个软件系统的性能影响。按照基准测试的方法,需要打开/关闭新模块至少各做一次测试。关闭模块之前的系统各个性能指标标记下来作为基准,然后与打开模块情况下的系统性能指标作比较,以判断模块对系统性能的影响。

3.6可靠性测试

? 测试系统在一定负载下运行长时间后是否会发生问题。软件系统的有些问题是不能一下子就暴露出来的,或者是需要时间积累才能达到能够度量的程度。这种问题一般是程序占用资源却不能及时释放而引起的。比如,内存泄漏就是经过一段时间累积才会慢慢变得显著,在运行初期却很难检测出来。客户端和服务器连接通路,不能有效地及时释放。

3.7配置测试

? 通过对被测系统软硬件环境得调整,了解各种不同环境对系统性能影响得程度,从而找到系统各项资源得最优分配原则。一般用于性能调优和规划能力。

3.8可恢复性测试

针对有冗余备份和负载均衡得系统设计的。用来检验如果系统局部发生故障,用户是否能够继续使用系统,以及如果这种情况发生,用户将受到多大程度的影响。测试系统能否快速地从错误状态中恢复到正常状态

特点:

  1. 主要目的是验证在局部故障情况下,系统能否继续使用。一般的业务系统都会采用热备份或负载均衡的方式实现。
  2. 当问题发生时能支持多少用户访问。
  3. 不是所有的系统都需要进行失效性测试。

4.性能测试应用

4.1能力验证

? 当能力验证时性能测试中最简单也最常用的一个应用领域,通常会采取这样的描述方式:“某系统能否在A条件下具备B能力”

能力验证领域的特点:
1.要求在已确定的环境下运行
2.需要根据典型场景设计测试用例和方案

常用方法:负载测试、可靠性测试、压力测试和失效恢复测试

4.2规划能力

? 关心的是“应该如何使系统具有我们要求得性能能力”或是“在某种可能发生的条件下,系统具有如何的性能能力”

规划能力领域特点:
1.它是一种探索性测试
2.它可被用于了解系统的性能以及获得扩展性能得方法
常用方法:负载测试、配置测试、压力测试

4.3性能调优

性能调优应用领域主要应用于对系统性能进行调优。一个标准的性能调优过程包括以下
步骤:
1.确定基准环境、基准负载和基准性能指标
2.调整系统运行环境和实现方法,执行测试 硬件环境的调整、系统设置的调整、应用 级别的调整
3.记录测试结果,进行分析
常用方法:配置测

4.4缺陷发现

? 缺陷发现应用领域的主要目的是通过性能测试手段来发现系统中存在的缺陷,并没有可参照的性能指标或需要达到的性能目标,因此主要采用并发测试的方法。如果还需要关注压力及失效恢复过程中的问题,则可以采用压力测试和失效恢复测试的方法。

4.5性能基准比较

? 性能基准比较,就是在不设定明确的性能目标的情况下,通过比较得到每次迭代中的性能表现变化,根据这些变化决定迭代是否达到了预期目标

常用方法:压力测试、并发测试

5.性能测试流程

5.1性能需求分析

性能需求分析要得到的结论
1、明确到底要不要做性能测试
2、明确被测系统特点、基本业务、 关键业务、用户行为
3、测试范围
4、测试目标及性能指标
5、性能测试策略(方法)

5.2性能测试计划

测试目的
测试质量目标
测试环境
测试阶段和范围
测试策略
测试时间和人员安排
测试用例

5.3准备与计划

主要任务:
1、测试环境准备
2、测试用例设计
3、测试脚本开发与调试
4、测试数据准备

5.4性能测试执行

准备好环境和部署好测试脚本及场景后, 就可以执行测试并记录测试结果。

在测试工具的辅助下, 测试执行是非常简单的操作,
一般只需要使用菜单或按钮l就可以完成, 记录测试的
工作也可以依靠工具完成。

5.5性能测试分析与报告

性能测试目标、 性能测试环境

性能测试数据构造规则、 性能测试策略

性能测试结果、 性能测试优说明(重要)

性能测试过程中遇到的问题和解决办法等