工作经验开始积累存储下来。

性能测试基础

上一篇 / 下一篇  2010-12-08 16:13:08 / 个人分类:性能测试

loadrunner工具学习

性能测试

性能测试是系统测试的一种,作为一个优秀的系统测试工程师,需要通过“系统”的视角来分析被测试系统,分析包含以下两点:

1.      功能测试:某个功能点

2.      性能测试:整个系统,包括软件和硬件

软件质量模型中,性能测试是属于效率这一类的。我们先来了解一下这句话涉及的两个概念。

质量模型:一组特性及特性之间的关系,他提供规定质量需求和评价质量的基础。

软件效率:在规定条件下,相对于所用资源的数量,软件产品可提供适当的性能的能力,其中资源可能包括其他软件产品、系统的软件和硬件配置,以及物质材料。

衡量一个软件的性能,需要从软件效率的以下3点考虑:

时间特性:在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。

资源利用性:在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力。

效率依赖性:软件产品遵循与效率相关的标准或约定的能力。

所以性能测试(performance testing)的定义为:在一定的负载情况下,系统的响应时间等特性是否满足特定的性能需求。从某些角度来说,性能其实是功能的一种。

什么是负载?

当众多终端用户对系统进行访问时,用户越多,那么服务器需要处理的客户请求也就越多,从而形成了负载。

1、 系统实际用户

可能会有很多人使用同一个系统,但并不是所有的用户都会同时使用该系统,所以系统的实际用户是一个容量的问题,而不是负载的问题。

2、 系统在线用户

当系统用户对系统进行操作时,我们认为该用户为在线用户,这些用户对系统形成了负载,在线用户和实际用户的比例是根据系统特性决定的。

3、 并发操作

用户在线后会对系统产生负载,但是用户和用户之间的操作却不是并发的,这是因为首先用户的操作需求延时等待,其次每个用户的操作并不是完全相同。并发操作会对系统产生很大的负载,当多个用户同时对某个功能进行操作时,服务器必须对这些请求进行队列管理,依次处理。

性能测试的分类

性能测试的方法很多,名词也很多,从使用方便的角度来说,这里将性能测试分为6大种。

负载测试(load testing

负载测试是指在一定的软件、硬件及网络环境下,运行一种或多种业务,在不同虚拟用户数量的情况下,测试服务器的性能指标是否在用户的要求范围内,以此确定系统所能承载的最大用户数、最大有效用户数及不同用户数下的系统响应时间及服务器的资源利用率。

负载测试强调的是在一定的环境下系统能够达到的峰值指标,大多数的性能测试都是负载测试。

压力测试(stress testing

压力测试是指在一定的软件、硬件及网络环境下,模拟大量的虚拟用户向服务器产生负载,使服务器的资源处于极限状态下并长时间的持续运行,以测试服务器的高负载情况下是否能够稳定工作。与负载测试获得峰值性能数据不同,压力测试强调在极端情况下系统的稳定性,这个时候处理能力已经不重要了。

容量测试(volume testing

容量测试是指在一定的软件、硬件及网络环境下,在数据库中构造不同的数量级别的数据记录,运行一种或者多种业务在一定的虚拟用户数量的情况下,获取不同数量级别的服务器性能指标,以确定数据库的最佳容量和最大容量。容量测试不仅可以对数据库进行,还可以对硬件处理能力、各种服务器的连接能力等进行,以此来测试系统在不同容量级别下是否能达到指定的性能。

容量测试和负载测试的区别在于,容量测试主要关心how much,而负载测试同时强调how muchhow fast.

 

性能指标

 

响应时间

响应时间是反映完成某个业务所需要的时间。

例如:从单击登陆按钮到登陆完成返回登陆成功页面需要消耗1秒钟,那么就说这个操作的响应时间是1秒,

在性能测试中是通过事务函数来完成对响应时间的统计,事务是指做某件事情的操作,事务函数会记录开始做这件事情和该事情做完之间的时间差,使用transaction response time这个词来说明,也称为事务响应时间。

吞吐量

吞吐量反映单位时间内能够处理的事务条目。

例如对于系统来说一个用户登陆需要1秒钟,如果系统同时支持10个用户登陆,且相同时间是1秒,那么系统的吞吐量就是10/秒。

在性能测试工具中,吞吐量也被称为TPStransaction per second,每秒事务数)也就是说在单位时间内能完成的事务数目。TPS的计算一般是通过的事务除以时间。

服务器资源占用

服务器资源占用反映在负载下系统的资源利用率。资源的占有率低,说明系统越优秀。资源并不仅仅指运行系统的硬件,而是支持整个系统运行程序的一切软硬件平台。在性能测试中,我们需要监控系统在负载下的硬件和软件上各种资源的占用情况,例如CPU的占有率、内存使用率、查询cache命中率等。

有调查统计,对于一个用户来说,如果访问某系统的响应时间小于2秒,那么用户会感觉系统很快,比较满意;如果访问某系统的响应时间在2~5秒,那么用户可以接受,但是对速度有些不满;如果系统的响应时间超过10秒,用户将无法接受。

所以对于一个系统来说,需要尽可能保证每一个操作的响应时间控制在5秒以内,当然某些特殊的操作可能会大大超出这个响应时间,可以通过loading bar的方式来提前告诉用户。

 

性能分析及调优

性能测试的目的是为了发现性能的瓶颈并解决。性能分析是为了确定导致性能瓶颈的原因,而调优就是用来解决性能瓶颈。提高某些手段来让系统的性能得到提升是性能调优的主要目的。

 性能分析主要有以下两种方法:

指标达成法

将测试结果与客户需求进行比较,如果达成用户需要则测试通过

1、 系统满足10万注册用户(其中活跃用户数为1万)访问:

2、 系统处理能力:20个注册/秒,45个并发浏览/秒、30个登陆操作/秒:

3、 服务器资源利用率在满负荷的情况下,忙时的峰值CPU负载不超过75%,内存的占用不超过80%

最优化分析方法

通过分析消除系统性能瓶颈,使系统的处理能力最大化,系统资源实现充分利用。

1、 应用程序诊断

应用程序的诊断是性能测试的最初目的。通过模拟多用户操作形成的负载,检查应用程序是否能够满足用户性能需求。如果不能满足,则定为应用瓶颈,并寻找解决该瓶颈的方案,确保系统在修正后能够满足用户需求。对于一个项目来说,一般都以应用诊断为主。

2、 系统调优

性能测试的目的不是为了满足用户,而是超越自己,这个时候需要做的是让系统能够比以前更加优秀的运行,通过生成负载,对测试结果进行分析,并且准备大量的软硬件环境进行迭代测试,找出影响性能的要素,最终提升系统的性能。一般产品都会采用系统调优的方式逐步完善系统性能。

 

 

 

 常见的性能瓶颈

1、 硬件上的性能瓶颈

一般指的是CPURAM方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)。

例如确定了在数据库服务器上需要6CPU12GB内存。但是在测试时,发现CPU的持续利用率超过95%,这时可以认为在硬件上出现了性能瓶颈。

2、 应用软件上的性能瓶颈

一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。

例如:在web logic平台上配置了JDBC的连接池的参数,最大连接数为50,最小连接数为5,增加量为10。在测试时发现,当负载增加时,现有的连接数不足,系统会动态生成10个心的连接,导致交易处理的响应时间大大的增加。这时可以认为在应用软件上出现了性能瓶颈。

3、 应用程序上的性能瓶颈

一般指的是开发人员新开发出来的应用程序。

例如,某程序员开发了一个缴费处理程序。在测试时发现,这个缴费处理程序在处理用户的并发缴费请求时,只能串行处理,无法并行处理,导致缴费交易的处理响应时间非常长,这时就可以认为在应用程序上出现了性能瓶颈。

4、 操作系统上的性能瓶颈

一般指的是windowsUNIXLinux等操作系统。

例如:在windows操作系统中,对某软件进行性能测试,出现物理内存不足时,如果虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加。这时就可以认为在操作系统上出现了性能瓶颈。

5、 网络设备上的性能瓶颈

一般指的是防火墙、动态负载均衡器、交换机等设备

例如:在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的应用资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡机制没有起到相应的作用,这时可以认为在网络设备上出现了性能瓶颈。

 

                       


TAG:

 

评分:0

我来说两句

春天梅花

春天梅花

2008年9月份参加工作,一直从事软件测试工作,参加工作半年后开始做测试管理工作,并开始学习性能测试。

我的栏目

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 1557
  • 日志数: 3
  • 建立时间: 2010-12-02
  • 更新时间: 2010-12-13

RSS订阅

Open Toolbar