文档章节

一个完整的性能测试综述

我爱睡觉
 我爱睡觉
发布于 2017/06/24 16:06
字数 2252
阅读 6
收藏 0

 一、了解性能测试

  性能测试是不断的通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡。

  我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求,发现系统可能存在的性能瓶颈,进而改善优化并系统的性能,提高系统的可扩展性、稳定性。

  从上面的描述可以看出,性能测试的主要工作包括:获得预估的性能需求、搭建测试环境、执行测试、分析测试结果。其中,最为重要两个工作是确定测试的目的、方案,并对结果进行分析。

  二、确认测试目的

  性能测试的需求包含但不限于用户的需求。在性能测试前我们同样需要充分了解开发、运维对系统的关注点。此外,要对被测模块的设计有深入了解,基本判断该模块是cpu密集型或是io密集型。以上这些是为更确立测试的目的,并有针对性的梳理测试方案和分析做好准备。

  性能测试的目的包括:

  (1)验证系统是否满足预期需求;

  (2)验证系统在高压下的表现;

  (3)验证系统是否能持续稳定的运行;

  (4)探测系统的瓶颈和产生瓶颈的原因;

  (5)探测系统设计与资源之间的最佳平衡,改善并优化系统的性能。

  三、确认测试方案

  根据性能测试目的的不同,所实施的测试方案也不同。

  一般,性能测试主要包括如下几种:

  1)验证系统在预估负载下的表现:负载测试

  2)验证系统在极端负载下的表现:压力测试

  3)验证系统是否能持续稳定的运行:稳定性测试

  以下是对上述三种测试的图示。一般,常态负载低于瓶颈负载,从常态负载到瓶颈负载区间系统的承受能力可以看作是可扩展能力。当瓶颈负载小于等于常态负载时,说明该系统的性能没有满足预计要求,是存在问题的。探测常态负载与瓶颈负载的关系,正是负载测试所要完成的工作。压力测试则验证从系统到达瓶颈之后,继续持续加压时系统的表现。

  根据性能测试的目的,选择是进行负载、压力、稳定性测试还是几种测试。每种测试中一般会安排几个场景,场景的变换主要根据压力值、系统配置等参数而改变。首次测试一把根据预估的性能需求和经验值开决定,后续的测试场景依赖于首次测试的各项指标的特征。例如,首次测试后,发现系统的性能很好,完全满足预期且机器各项负载指数很低,后续可以考虑n倍压力值探测系统瓶颈。如果首次测试的结果表现出不能满足预期,则需要调整各参数值进行测试,通过比较个参数值下的性能表现来分析系统瓶颈。

  四、准备环境数据

  1 搭建测试环境

  什么是测试环境?测试环境=软件+硬件+网络+数据+测试工具

  原则1 以假乱真

  软、硬件配置要与生产环境的配置一致,如果条件有限,则要尽量逼近于生产环境的真实条件。同时,要保证测试工具的稳定性。如果性能测试环境不够真实、稳定,则测试的结果的可靠性无法满足。

  原则2 以静制动

  一般,我们将压力程序、被测模块部署在不同的机器上。(即便是生产环境中压力来自于被测模块所在的机器,我们一般也是分开部署;这是保证被测模块的干净,避免对测试结果的干扰)。因此信息交互是通过网络来完成的。保证环境干净的另一个原因是,一般线上部署是多模块统计部署,在线下没有必要搭建通线上一样的模块,因此使用一套干净的环境进行测试,可以在后期分析中引入多模块统计部署的因素进来,推算上线后的效果。

  2 准备测试数据

  原则3 以小见大

  测试数据是测试环境的一部分,但与环境不同,测试数据很难达到与生产环境一模一样。一方面,生产环境的数据是动态、持续变化的,而测试中我们需要的数据是静态的,我们无法保证数据的实时性;另一方面,生产环境的数据是庞大的,而测试环境中数据量是有限的。

  在数据准备中既要关注数据的质、又要关注量。

  1)质——指数据的频率、分布要尽可能和线上一致。

  2)量——指数据的规模要达到、接近或者超过线上现有水平。

  通常,可以采用同比例缩放或扩放的方式,即使用过去一段时间的生产环境数据来进行测试。一般可以保证数据的频率、分布和真实环境中是一致的。

  五、性能指标分析

  1 性能指标的关注

  性能测试的指标可分为产品指标和资源指标两类。对测试人员而言,性能测试的需求来自于用户、开发、运维的三方面。用户和开发关注的是与业务需求相关的产品指标,运维关注的是与硬件消耗相关的资源指标。

  1)从用户角度关注的指标:用户关注的是单次业务相关的体验效果,譬如一次操作的响应快慢、一次请求是否成功、一次连接是否失败等,反映单次业务相关的指标包括:

  (1)成功率=成功响应次数/统计时间

  (2)失败率=失败响应次数/统计时间

  (3)响应时间

  2)从开发角度关注的指标: 开发人员更关注的是系统层面的指标。

  (1)容量:系统能够承载的最大用户访问量是多少?系统最大的业务处理量是多少?

  (2)稳定性: 系统是否支持7*24小时(一周)的业务访问?

  3)从运维角度关注的指标:运维人员更关注的是硬件资源的消耗情况。

  需要注意的是,在预估性能压力和指标时,需要给线上运维操作留有必要的性能空间。


其中,资源消耗往往是制约产品指标的重要因素,是我们在性能测试中需要特别关注的指标。资源消耗包括CPU、内存、硬盘、网络带宽等。

  2 性能指标的统计

  1) 单次业务相关的指标可以通过统计日志信息来计算。

  2) 连续业务相关指标需要从长时间、高压力的性能中统计和分析。

  3) 资源消耗指标可以通过监控进程占用的资源、机器系统的资源变化来观测。

  其中,常见的性能分析工具有vmstat、top、free、iostat等。

  3 性能指标的分析

  指标分析的原则是“具体问题具体分析”,但是总的方法是盯住单场景,观察各项指标变化趋势;针对多场景,分析不同参数下的变化。需要注意到是,操作系统总是尽可能的去使用CPU和内存等资源,因此CPU满负荷或者内存free较小并不能说明该资源出现不足。

  在判断资源短缺和瓶颈时需要综合分析资源间的制约关系,并观察各个资源值的变化。下面主要对资源消耗的各个指标进行分析。

  其中,资源间的制约关系:

  1)物理内存不够时会使用交换内存,使用swap会带来磁盘I0和cpu的开销。

       2)Linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好。

  六、总结

  希望这份总结对大家有所帮助,总结是必要的,但仅仅是总结而已。个人理解,性能测试是一门意会大于言传的测试。屡试不爽、受益匪浅。



本文转载自:http://blog.csdn.net/rachel_luo/article/details/8107032

我爱睡觉
粉丝 3
博文 2120
码字总数 0
作品 0
南昌
私信 提问
面向对象数据库--Perst

Perst——开源、面向对象数据库   Perst是McObject公司的开源、双重授权、面向对象的内存实时数据库系统(ODBMS)。Perst有两个可用版本,其一是全Java版本的内存实时数据库,另一版本则是...

Kayla_McObject
2014/08/02
1K
0
性能测试综述

一、了解性能测试 性能测试是不断的通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡。 我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境...

不最醉不龟归
2016/11/12
37
1
《Istio官方文档》设计理念

《Istio官方文档》设计理念 并发编程网 – ifeve.com2018-01-071 阅读 service 原文链接 译者:carvendy 设计理念 这页概述了Istio的核心设计理念。 Istio的架构里有一些关键的设计理念,是在...

并发编程网 – ifeve.com
2018/01/07
0
0
henrylee2cn/lessgo

Lessgo Web Framework 概述 Lessgo是一款Go语言开发的简单、稳定、高效、灵活的 web开发框架。它的项目组织形式经过精心设计,实现前后端分离、系统与业务分离,完美兼容MVC与MVVC等多种开发...

henrylee2cn
2016/04/10
0
0
Golang Web 框架--Lessgo

Lessgo Web Framework 概述 Lessgo是一款Go语言开发的简单、稳定、高效、灵活的 web开发框架。它的项目组织形式经过精心设计,实现前后端分离、系统与业务分离,完美兼容MVC与MVVC等多种开发...

henrylee2cn
2016/04/06
4.2K
1

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部