2.性能测试术语
术语-负载、TPS、RT
1.负载:模拟业务操作对服务器造成压力的过程,比如模拟100个用户进行发帖。
2.TPS:每秒完成的事务数,通常指每秒成功的事务数,性能测试中重要的综合性性能指标。一个事务是一个业务度量单位,有时一个事务会包含多个子操作,但是为了方便统计,我们会把这多个子操作记为一个事务。比如一笔电子支付操作,在后台系统中可能会经历会员系统、账务系统、支付系统、会记系统、银行网关等。但对于用户来说只想知道整笔支付话费了多长时间。
3.RT/ART:响应时间/平均响应时间,指一个事务花费多长时间完成(多长时间响应客户请求),为了使这个响应时间更具代表性,会统计更多的响应时间然后取平均值,即得到了事务平均响应时间(ART),为了方便大家通常会直接用RT来代替ART,ART与RT是代表同一个意思。
术语-PV
4.PV(Page View):每秒用户访问页面的次数,此参数用于分析平均每秒有多少用户访问页面。
性能测试环境下,将这个概念做了延伸,用户通过浏览器访问页面,对应用服务器产生的每一次请求(例如:接口请求),也可记为一个PV。
一个PV从狭义上来讲等价于一个TPS,测试中可以将页面元素从测试结果中分析出来,所以也可以用TPS和PV进行整合,但是广义上来说,一个页面是很多的图片、链接、css等,而这里的每一个图片、链接都是PV。
Peak PV(高峰Page View) 即PV峰值,指一天中PV数达到的最高峰。
术语-并发
5.Concurrency并发,并发分为狭义和广义两类。狭义的并发,即所有的用户在同一时刻做同一件事情或操作,这种操作一遍针对同一类型的业务,或者所有用户进行完全一样的操作,目的是测试数据库和程序对并发操作的处理。广义的并发,即多个用户对系统发出了请求或者进行了操作,但是这些请求或者操作可以是不同的。对整个系统而言,仍然有很多用户同时进行操作。狭义并发强调对系统的请求是完全相同的,广义并发不限制对系统的请求操作,多适用于混合场景、稳定性测试场景。
术语-场景、思考时间、标准差
6.场景(Scenario):性能测试过程中为了模拟真实用户的业务处理过程,在LR中构建的基于事务、脚本、虚拟用户,运行设置、运行计划、监控、分析等的一系列动作的集合,称之为性能测试场景。场景中包含了待执行脚本、脚本组、并发用户数、负载生成器、测试目标、测试执行时的配置条件等。
7.思考时间(Think Time):模拟正式用户在实际操作时的停顿间隔时间。从业务的角度来讲,思考时间指的是用户在进行操作时,每个请求之间的间隔时间,在测试脚本中,思考时间体现为脚本中两个请求语句之间的间隔时间。
8.标准差(Std.Deviation):该标准差根据数理统计的概念得来,标准差越小,说明波动越小,系统越稳定,反之,标准差越大,说明波动越大,系统越不稳定。包括响应时间标准差、TPS标准差、Running Vuser Resources标准差等。举例响应时间标准差。
术语-响应时间
9.什么是响应时间
指的是客户发出请求到得到响应的整个过程的时间
什么是系统响应时间
- 网络传输时间:N1+N2+N3+N4
- 应用服务器处理时间:A1+A3
- 数据库服务器处理时间:A2
- 响应时间:N1+A1+N2+A2+N3+A3+N4
在性能测试结果分析中,性能场景中事务的响应时间,事务响应时间分为事物最小响应时间、事务平均响应时间、事务最大响应时间、90%事务响应时间。平时多使用90%事务响应时间。即取测试过程中90%的业务用例多久。例如:一个小时内pay业务进行了1000次,其中900次pay业务响应时间是0.2秒,100次的在0.2上下浮动。那么90%Response Time为0.2秒。
术语-虚拟用户、注册用户
虚拟用户(Virtual user),虚拟用户是测试工具产生的用户(jmeter和loadrunner都可以产生虚拟用户),用户模拟真实用户进行的一系列的操作。虚拟用户模拟的步骤都被记录在虚拟用户脚本里。Vuser脚本用于描述Vuser在场景中执行的操作。虚拟用户和真实的在线用户是有一定的比例关系的,也就是(虚拟用户:在线用户!= 1:1)
用户数:在实际情况我们经常会看到有下面的描述:“一个系统注册用户达到6000万,其中每小时的活跃用户大概60万左右”。这段描述给我们讲述了几个信息,一个是6000万指的是注册用户、另一个60万指的是真实在线用户。
注册用户:6000万指的注册用户也就是存在系统中数控库表里面的基础用户量,这一部分用户是系统拥有的所有用户群体,这里面的用户是不会全部对系统造成压力的,唯一的压力是这些用户用例系统的存储,响应了数控库的容量。
术语-在线用户、并发用户
在线用户:60万指的就是用时在线人数,这部分也就是真实产生压力的用户,这些用户是系统压力的根源。也就是我们系统需要能支持最大60万人同时在线做业务。
并发用户:在线用户是真实的用户,但是不是所有在线用户会在系统上做操作,可能有些用户在浏览网页,有些在做业务。有些开着浏览器就什么事都不做了。这时候60万用户中能对系统产生压力的用户大概在60个,而这60个就是60万用户中的有效并发用户。
术语-Pacing步调
可以通过设置2次迭代之间的间隔时间,来调整各个action之间的步调(或者称之为节奏)。从定义上来看,Pacing和iteration绑定在一起的,可以认为是iteration Pacing.
会对服务器产生的负载大小产生影响
术语-HPS、TPS、QPS
一般情况下,用以下几个指标来度量:
- HPS(Hits Per Second):每秒点击次数,单位是次/秒。用HPS来表示对服务器的点击请求
- TPS(Transaction per Second): 事务数/秒。它是软件测试结果的测量单位。一个事物是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
- QPS(Query per Second):意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
对于互联网业务中,如果某系业务有且仅有一个请求连接,那么TPS=QPS=HPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器点击请求。
术语-并发量与吞吐量(TPS)的关系
并发量(或叫并发用户数): 是指同一时间点对业务功能同时操作的用户数。
吞吐量(TPS): 一段时间内系统处理用户的请求数量。
其实我们可以用多线程模型来解释它们,并发量就相当于线程数,吞吐量就是所有线程处理请求数之和。
通常我们做性能测试主要考察和评估的是TPS, 而并发量是一个相对较虚的概念,比如我们说一个系统支持同时1K人操作,一般不在评估的范围内。
术语-性能单元测试、性能测试集成测试
性能测试单元测试:性能单元测试以模拟黑盒的业务为主,通过业务来衡量整体系统的极限性能,这个测试中只需关注被测试系统的性能,而无需关注外界系统的干扰。
性能测试集成测试:集成测试能模拟真实的线上环境,以关键业务为主线不断集成其他的系统到集成测试环境,使集成环境逐渐接近真实的现网,最终达到线下模拟线上的效果。
术语-同步、异步、阻塞、非阻塞
什么是同步和异步
说到烧水,我们都是通过热水壶来烧水的。在很久之前,科技还没有这么发达的时候,如果我们要烧水,需要把水壶放到火炉上,我们通过观察水壶内的水的沸腾程度来判断水有没有烧开。随着科技的发展,现在市面上的水壶都有了提醒功能,当我们把水壶插电之后,水壶水烧开之后会通过声音提醒我们水开了。
对于烧水这件事来说,传统水壶的烧水就是同步的,高科技水壶的烧水就是异步的。
同步请求,A调用B,B的处理是同步的,在处理之前他不会通知A,只有处理之后才会明确的通知A。
异步请求,A调用B,B的处理是异步的,B在接到请求后先告诉A我已经接到请求了,然后异步去处理,处理完之后通过回调等方式再通知A。
所以说,同步和异步最大的区别就是被调用方的执行方式和返回时机。同步指的是被调用方做完事情之后在返回,异步指的是被调用方先返回,然后再做事情,做完之后再想办法通知调用方。
什么是阻塞和非阻塞
还是那个烧水的例子,当你把水放到水壶里面,按下开关后,你可以坐在水壶前面,别的事情什么都不做,一直等着水烧好。你还可以先去客厅看电视,等着水开就好了。
阻塞请求,A调用B,A一直等着B的返回,去客厅看电视等着水开就是非阻塞的。
非阻塞请求,A调用B,A不用一直等着B的返回,先去忙别的事情了。
所以说,阻塞非阻塞最大的区别就是在被调用方返回结果之前的这段时间内,调用方是否一直等待。阻塞指的是调用方一直等待别的事情什么都不做。非阻塞指的是调用方先去忙别的事情。
AJAX技术是异步,普通B/S模式是同步
术语-页面渲染
页面渲染,是针对Web页面的数据项和操作的元素(HTML标签),进行修饰性处理,以增强页面元素的可表现能力和可介入处理能力。
页面渲染是影响web性能的关键因素之一,**web页面的响应时间分为渲染时间(呈现时间)+应用处理时间。
通过loadrunner测试工具录制方式测试到的是系统响应时间,内部应用的处理时间可以通过日志得到,页面渲染性能可以通过雅虎公司的YSlow工具进行分析。
Firefox、Chrome和Safari是基于两种渲染引擎构建的,Firefox使用Geoko——Mozilla自主研发的渲染引擎,Safari和Chrome都使用webkit。
渲染引擎首先通过网络获得所请求文档的内容,通常以8K分块的方式完成。下面是渲染引擎在取得内容之后的基本流程:
解析html以构建dom树->构建render树->布局render树->绘制render树
DOM Tree:浏览器将HTML解析成树形的数据结构。
CSS Rule Tree:浏览器将CSS解析成树形的数据结构。
Render Tree:DOM和CSSOM合并后生成Render Tree。
layout:有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。
painting:按照算出来的规则,通过显卡,把内容画到屏幕上。
术语-软解析、硬解析
Sql执行将进行以下几个步骤的处理过程:
- 1.语法检查(syntax check)检查此sql的拼写是否符合语法。
- 2.语义检查(semantic check)诸如检查sql语句中的访问对象是否存在即该用户是否具备相应的权限。
- 3.对sql语句进行解析(parse)利用内部算法对sql进行解析,生产解析树(parse tree)及执行计划(execution plan)。
- 4.执行sql,返回结果(execute and return)。其中,软、硬解析就发生在第三个过程里。
数据库利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值。假设存在,则将此sql与cache中的进行比较。假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这就是软解析的过程。
硬解析:如果上面的2个假设中有一个不成立,那么优化器都将进行创建解析树、生产执行计划的动作。这个过程叫硬解析。
术语-死锁
如果在一个系统中以下四个条件同时成立,那么就能引起死锁:
1.互斥: 至少有一个资源必须处于非共享模式,即一次只有一个进程可使用。如果另一进程申请该资源,那么申请进程应等到该资源释放为止。
2.占有并等待:一个进程应占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。
3.非抢占:资源不能被抢占,即资源只能被进程在完成任务后资源释放。
4.循环等待:有一组等待进程{P0,P1,...,Pn},P0等待的资源为P1占有,P1等待的资源为P2占有,......,Pn-1等待的资源为Pn占有,Pn等待的资源为P0占有。
1.线程1:A,wait B
2.线程2:B,wait A