1、软件性能测试,2,目录,什么是性能测试,性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标,发现软件系统存在的性能瓶颈,进而加以优化。 一般来说,性能测试的目的分为以下以下几种: 验证系统在给定的条件下处理性能是否达到设计目标与用户要求。 探测系统在给定的条件下极限处理能力。 通过对系统各参数的调整,测试系统的最优性能配置。 通过性能测试发现功能测试难以发现的缺陷。 在我们日常的性能测试中,第一种测试目的是最多的。第三种要求较高,相对来说,较少用到。,性能测试的类型,验收性能测试(狭义) 性能测试方法是通过
2、模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。通俗地说,这种方法就是要在特定的运行条件下验证系统的能力状态。 特点: 1、这种方法的主要目的是验证系统是否具有系统宣称具有的能力。 2、这种方法要事先了解被测系统经典场景,并具有明确的性能目标。 3、这种方法要求在已经确定的环境下运行。 也就是说,这种方法是对系统性能已经有了了解的前提,并对需求有明确的目标,并在已经确定的环境下进行的。,性能测试的类型,负载测试(Load Test) 通过在被测系统上不断加压,直到性能指标达到极限(例如“响应时间”)超过预定指标或某种资源已经达到饱和状态。 特点: 1、这种方法的主要
3、目的是找到系统处理能力的极限。 2、这种测试方法需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景,使得测试结果具有业务上的意义。 3、这种方法一般用来了解系统的容量,或是配合性能调优来使用。 也就是说,这种方法是对一个系统持续不断的加压,看你在什么时候已经超出“我的要求”或系统崩溃。,性能测试的类型,压力测试(Stress Test) 压力测试方法测试系统在一定饱和状态下,例如CPU、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。 特点: 1、这种测试方法的主要目的是检查系统处于压力下应用的表现。 2、这种测试方法一般通过模拟负载等方法,使得系统
4、的资源使用达到较高的水平。 3、这种测试方法一般用于测试系统的稳定性。 也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。,性能测试的类型,并发测试(Concurrency Test) 并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用,同一个模块或者数据记录时是否存在死锁或者其他性能问题。 特点: 1、这种测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。 2、这种测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄露、线程锁和资源争用方面的问题。 3、这种测试方法可以在开发的各个阶段使用,需要相关的测试工具的配合和支持。 也就是说,这
5、种测试关注点是多个用户同时(并发)对一个模块或操作加压。,性能测试的类型,配置测试(Configuration Test) 配置测试方法通过对被测系统的软硬件环境的调整,了解不同配置对系统的性能影响的程度,从而找到系统各项资源的 最优分配原则。 特点: 1、这种测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。 2、这种测试方法一半呢在对系统性能状况有了初步了解后进行。 3、这种性能测试方法一般用于性能调优和规划能力。 也就是说,这种测试关注点是“微调”,通过对软硬件的不断调整,找出他们的最佳状态,使系统达到一个最强的状态。,性能测试的类型,可靠性测试(
6、Reliability Test) 通过给系统加载一定业务压力(例如资源在70%-90%的使用率),使系统运行一段时间,以此检测系统是否稳定运行。 特点: 1、这种测试方法的主要目的是验证是否支持长期稳定的运行。 2、这种测试方法需要在压力下持续一段时间的运行(23天)。 3、测试过程中需要关注系统的运行状况。如果测试过程中发现,随着时间的推移,响应时间有明显的变化,或是系统资源使用率有明显波动,都可能是系统不稳定的征兆。 也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。,性能测试关注的指标,并发用户数 反应系统负载压力的大小 区别以下用户数概
7、念: 系统用户数:系统额定的用户数量(设计容量) 在线用户数:所有正在访问系统用户(不一定做操作) 并发用户数:同时对服务器产生请求的用户总数 响应时间 反应系统处理效率指标 一般标准:3秒、2-5-10秒,性能测试关注的指标,TPS(Transaction Per Second) 反应系统处理能力的指标,是单位时间内完成工作的度量,随着负载的增加,往往增长到一个峰值后,然后下降,等待队列变长。 系统资源 反应系统处理能力指标 CPU占用率:Windows95%, Unix85% 内存可用数:10%或4M,说明内存太小,或有内存泄露 内存页交换率:page in/s80 CPU的队列长度:一直
8、超过二,可能表示处理器堵塞,服务器的CPU可能是个瓶颈,性能测试关注的指标,如何估算并发用户数? 1 、二八原则 2、最大在线用户的5%20% 3、C=nL/T 并发用户数=(登录用户的会话数量*每个会话的平均在线时长)/考察的时间长度 4、并发用户峰值: C=C+3*C(泊松分布),性能测试关注的指标,如何估算并发用户数 举例: 如同百米赛跑,并发用户数指的是参赛的选手数量,每个选手(测试中使用的虚拟用户)的出发时间是一样的,完成操作的时间会稍有不同。 一般每天访问量在100万以下的网站,并发的用户数不会超过100(除非访问时间非常集中),因此根据情况调整性能测试要求的相关数据。 假设预计每
9、天有100万的用户访问网站首页,访问高峰期为10小时,每次访问需要3秒的时间,按以上公式(C=nL/T)可以得到并发数大致在80左右。 80Vuser*10H/200Vuser=4H,性能测试过程,补充知识,Tomcat相关配置(配置文件server.xml) minProcessors:最小空闲连接线程数,用于提供系统处理性能,默认值为10 maxProcessor:最大链接线程数,即:并发处理的最大请求数,默认值为75 acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 enableLookups:是否反查域名,取值为:true或false。为了
10、提高处理能力,应设置为false connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。,补充知识,Tomcat相关配置(配置文件server.xml) 其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。Web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。 Tomcat默认可以使用的内存为128MB。 数据库相关参数 User Connections:用户连接数,也就是数据库的连接数量 Number of deadlocks:数据库死锁(此数必须为0) Buffer Cache hit:数据库Cache的命中情况,17,Thank you!,