一、什么是性能测试?算法
二、不一样角色对性能测试的关注点?服务器
三、什么是压力测试?什么是负载测试?区别是?网络
四、性能测试的经常使用术语并发
********************************************************工具
一、什么是性能测试?性能
性能测试是指被测系统,在必定的负载下运行,监控系统的各项指标,是否符合需求(指标,指的CPU,内存,事务响应时间,等)若是不符合,就发现了系统的性能瓶颈测试
********************************************************大数据
二、不一样角色对性能测试的关注点?网站
用户视角.net
响应时间
管理员的视角
响应时间
系统状态相关的信息
开发的视角
响应时间
扩展性
性能瓶颈
*******************************************************
三、什么是压力测试?什么是负载测试?区别是?
负载测试
模拟实际软件系统所承受的负载条件的系统负荷,经过不断加载(如逐渐增长模拟用户的数量)或其它加载方式来观察不一样负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现了一种方法或一种技术。
压力测试
是在**强负载(大数据量、大量并发用户等)**下的测试,查看应用系统在峰值使用状况下操做行为,从而有效地发现系统的某项功能隐患、系统是否具备良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载状况下致使系统崩溃的破坏性压力测试。
压力测试能够被看做是负载测试的一种,即高负载下的负载测试,或者说压力测试采用负载测试技术。经过压力测试,能够更快地发现内存泄漏问题,还能够更快地发现影响系统稳定性的问题。例如,在正常负载状况下,某些功能不能正常使用或系统出错的几率比较低,可能一个月只出现一次,但在高负载(压力测试)下,可能一天就出现,从而发现有缺陷的功能或其它系统问题。经过负载测试,能够证实这一点,某个电子商务网站的订单提交功能,在10个并发用户时错误率是零,在 50个并发用户时错误率是1%,而在200个并发用户时错误率是20%。
负载测试是为了发现系统的性能问题,负载测试须要经过系统性能特性或行为来发现问题,从而为性能改进提供帮助,从这个意义看,负载测试能够看做性能测试的一部分。但它们二者的目的是不同的,负载测试是为了发现缺陷,而性能测试是为了获取性能指标。由于性能测试过程当中,也能够不调整负载,而是在一样负载状况下改变系统的结构、改变算法、改变硬件配置等等来获得性能指标数据,从这个意义看,负载测试能够看做是性能测试所属的一种技术,即性能测试使用负载测试的技术、使用负载测试的工具。性能测试要得到在不一样的负载状况下的性能指标数据。
经过负载测试和压力测试均可以得到系统正常工做时的极限负载或最大容量。容量测试,天然也是采用负载测试技术来实现,而在破坏性的压力测试中,容量的肯定能够看做是一种副产品——间接结果。
---------------------
简单总结以下,
负载测试是经过改变系统负载方式、增长负载等来发现系统中所存在的性能问题。负载测试是一种测试方法,能够为性能测试、压力测试所采用。
性能测试是为获取或验证系统性能指标而进行测试。多数状况下,性能测试会在不一样负载状况下进行。
压力测试一般是在高负载状况下来对系统的稳定性进行测试,更有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患等。
***************************************************************
四、性能测试的经常使用术语
负载
对被测系统不断施加压力,直到性能指标超过预期或某项资源使用达到饱和,以验证系统的处理极限,为系统性能调优提供依据;
并发
①狭义上的并发:全部用户在同一时间点进行一样的操做,通常指同一类型的业务场景,好比1000个用户同时登录系统;
②广义上的并发:多个用户与系统发生了交互,这些业务场景能够是相同的也能够是不一样的,交叉请求和处理较多;
压力
系统在必定饱和状态下,例如CPU、内存等饱和状况下,系统可以处理的会话能力,以及系统是否会出现错误
特色:主要目的是检查系统处于压力状况下应用的性能表现,重点在于有无出错信息产生,系统对应用的响应时间等
事务
性能测试中,事务指的是从端到端,一个完整的操做过程,好比一次登陆、一次筛选条件查询,一次支付等;
吞吐量
指在一次性能测试过程当中网络上传输的数据量的总和,也能够这样说在单次业务中,客户端与服务器端进行的数据交互总量;
对交互式应用来讲,吞吐量指标反映服务器承受的压力,容量规划的测试中,吞吐量是重点关注的指标,它可以说明系统级别的负载能力,另外,在性能调优过程当中,吞吐量指标也有重要的价值;
吞吐量和负载之间的关系:
①上升阶段:吞吐量随着负载的增长而增长,吞吐量和负载成正比;
②平稳阶段:吞吐量随着负载的增长而保持稳定,无太大变化或波动;
③降低阶段:吞吐量随着负载的增长而降低,吞吐量和负载成反比;
总结:吞吐量干不过负载!!!
以下图所示:
a1面积越大,说明系统的性能能力越强,a2面积越大,说明系统稳定性越好,a3面积越大,说明系统的容错能力越好(啧啧,图有点丑。。。)
吞吐率
吞吐量/传输时间,即单位时间内网络上传输的数据量,也能够指单位时间内处理客户请求数量,它是衡量网络性能的重要指标。
一般状况下,吞吐率用“字节数/秒”来衡量,固然,也能够用“请求数/秒”和“页面数/秒”来衡量;
TPS
Transaction Per Second:每秒事务数,指服务器在单位时间内(秒)能够处理的事务数量,通常以request/second为单位;
PS:看到不少博客或性能测试人员将QPS和TPS混为一谈,我的认为,他们是以测试结果的统计获得该结论的;
QPS是查询,而TPS是事务,事务是查询的入口,也包含其余类型的业务场景,所以QPS应该是TPS的子集!
QPS
Query Per Second:每秒查询率,指服务器在单位时间内(秒)处理的查询请求速率;
PS:TPS和QPS都是衡量系统处理能力的重要指标,通常和并发结合起来判断系统的处理能力;
PV
Page View:页面浏览量,一般是衡量一个页面甚至网站流量的重要指标;
细分的话,有独立访问者数量、重复访问者数量、单独页面访问数量、用户停留时间等类型;
RT/ART
Response Time/average Response Time:响应时间/平均响应时间,指一个事务花费多长时间完成;
通常来讲,性能测试中平均响应时间更有表明意义。细分的话,还有最小最大响应时间,50%、90%用户响应时间等;
Thinking Time
思考时间,在性能测试中,模拟用户的真实操做场景。用户操做的事务与事务之间是有必定间隔的,引入这个概念是为了并发测试(有交叉业务场景)时,业务场景比率更符合真实业务场景;
链接池
链接池是一个进程,多个链接在一个进程中存储、管理,它是共享、可复用的;
当客户端发起请求,先检查是否有闲置链接,若是有,则分配该链接给其使用;若是没有,则请求进入等待队列(等待空闲链接分配,这个取决于调度配置)或新建一个链接对象供其使用
(取决于链接池有多少链接以及容许的最大链接数);
每次客户端发起请求,若是都新建链接,会消耗不少的资源,链接池的存在及其特性,减小了链接的创建所消耗的资源以及节省了不少链接建立时间,给系统提供了更好的伸缩性,也有助于
服务器性能的提高。
关于链接池中线程的状态,可参考此篇博客:https://my.oschina.net/cctester/blog/991744
标准方差
各数据偏离平均数的距离(离均差)的平均数,它能反应一个数据集的离散程度。离散程度越大,数据越不可靠;
性能测试中引入这个术语,是为了对高峰期、平缓期的系统响应时间分布,不一样业务场景的响应时间分布,以及I/o数在时间段上的分布等状况进行分析,以判断系统的稳定性。
资源使用率
以下图所示,资源指标与硬件资源消耗直接相关,而系统指标则与用户场景及需求直接相关:
资源指标:
CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间状况下,通常可接受上限不超过85%;
内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,通常至少有10%可用内存,内存使用率可接受上限为85%;
磁盘I/O: 磁盘主要用于存取数据,所以当说到IO操做的时候,就会存在两种相对应的操做,存数据的时候对应的是写IO操做,取数据的时候对应的是是读IO操做,通常使用% Disk Time
(磁盘用于读写操做所占用的时间百分比)度量磁盘读写性能;
网络带宽:通常使用计数器Bytes Total/sec来度量,其表示为发送和接收字节的速率,包括帧字符在内;判断网络链接速度是不是瓶颈,能够用该计数器的值和目前网络的带宽比较;
系统指标:
并发用户数:单位时间内与系统发生交互的用户数;
在线用户数:某段时间内访问系统的用户数,这些用户并不必定同时向系统提交请求;
平均响应时间:系统处理事务的响应时间的平均值;事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间;
事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登陆、保存订单、提交订单操做都可定义为事务,单位时间内系统能够成功完成多少个定义的事务,
在必定程度上反应了系统的处理能力,通常以事务成功率来度量;
超时错误率:主要指事务因为超时或系统内部其它错误致使失败占总事务的比率;