响应时间(response time)

响应时间,是指系统对用户操作的反馈时间。我们可以举一个163邮箱登录的例子:
我们如何来测试邮箱的登录响应时间呢?我们首先进入mail.163.com网页,输入合法的用户名和密码,点击“登录”,直到登录后的邮箱界面完全显示出来为止。那么响应时间从什么时候开始计算呢?是我们输入用户名的时候,还是点击“登录”的时候?
显然,我们应该从按下“登录”按钮的那一瞬间开始计时,到登录后页面完全显示出来为止,这才是真正的用户登录时间,而不包括用户输入用户名和密码的时间以及思考停顿的时间(think time)

登录响应时间其实包括3个部分:网络传输时间,服务器处理时间,浏览器显示时间
即登录响应时间=网络传输时间*2+服务器处理时间+客户端显示时间
网络传输是双向的,所以要乘以2。网络传输时间又可以包括接入网的传输时间和互联网中的传输时间,它的大小和你所使用的上网方式有关,比如光纤一般要比adsl要快。
服务器包括web服务器和数据库服务器,服务器处理时间是我们测试的重点,也是我们能够控制的部分,因为终用户用什么机器上网,什么接入方式上网我们是控制不了的。我们要重点测试服务器的处理速度如何,以及能否承受较大的压力,我们可以用工具(比如Loadrunner)来模拟大量用户同时登录访问服务器,来查看服务器的承载能力。
客户端显示时间,如何将服务器传过来的页面尽快地显示到浏览器上,是开发人员需要考虑的问题,这里面涉及到算法优化的问题,这也是开发人员容易忽略的地方。
由此可见,响应时间是可以分解成若干个时间段的,任何一个环节出问题都会影响到终的响应时间,这需要我们在实际工作中结合具体情况加以分析。
后再说明一点,响应时间的快慢是一个相对的概念,没有的标准,比如对于163邮箱登录来说,用户可以接受的时间可以在10秒以内,而对于一个实时的军工软件来说,相应时间要精确到毫米级别甚至更低。
对于普通的web网站来说,一个普遍被接受的响应时间标准是2/5/10,即用户对2秒钟以内的的响应时间非常满意,对于5秒钟以内的响应时间基本满意,对于10秒钟以上的响应时间则无法接受。

吞吐量(throughput)

吞吐量,是指单位时间内流经被测系统的数据流量,一般单位为b/s,即每秒钟流经的字节数。
吞吐量是大型门户网站以及各种电子商务网站衡量自身负载能力的一个很重要的指标,一般吞吐量越大,系统单位时间内处理的数据越多,系统的负载能力也越强。
吞吐量和很多因素有关,比如服务器的硬件配置,网络的拓扑结构,软件的技术架构等。实际工作中,我们往往对升级客户的硬件配置无能为力,大多数情况下,我们还是在软件的技术架构上做文章:
比如后台数据库装oracle还是装sql server,显然前者的处理能力更强;
web服务器是用weblogic还是iis,要看服务器端的语言是jsp还是asp…
测试的时候多跟项目经理,系统架构师以及用户沟通,来获取系统架构的第一手材料。

并发(concurrency)

并发,是指多个同时发生的操作。比如有10个用户同时点击“登录”按钮(注意是同时),来登录163邮箱,我们说此次登录163邮箱的并发数为10。
需要注意的是,并发和并行不是一个概念,并发是同时发生,并行是同步运行。10个用户并发登录163邮箱,只是在点击“登录”按钮那一瞬间是并行的,而登录后各个用户的操作则不同步。

稳定性测试(reliability testing)

稳定性测试,也叫可靠性测试(reliability testing),是指连续运行被测系统,检查系统运行时的稳定程度。
我们通常用mtbf(mean time between failure,即错误发生的平均时间间隔)来衡量系统的稳定性,mtbf越大,系统的稳定性越强
稳定性测试的方法也很简单,即采用24*7(24小时*7天)的方式让系统不间断运行,至于具体运行多少天,是一周还是一个月,视项目的实际情况而定。

负载测试(load testing)

负载测试,是性能测试的一种,通常是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。
可以看出负载测试和稳定性测试比较相似,都是让被测系统连续运行,区别在于负载测试需要给被测系统施加其刚好能承受的压力,比如我们还是测试163邮箱系统的登录模块,我们先用1个用户登录,再用两个用户并发登录,再用5个,10个…在这个过程中,我们每次都需要观察并记录服务器的资源消耗情况(可以通过任务管理器中的性能监视器或者控制面板中的性能监视器),当发现服务器的资源消耗快要达到临界值时(比如cpu的利用率90%以上,内存的占有率达到80%以上),停止增加用户,假如现在的并发用户数为20,我们用这20个用户同时多次重复登录,直到系统出现故障为止。
负载测试为我们测试系统在临界状态下运行是否稳定提供了一种办法。

压力测试(stress testing)

压力测试,是性能测试的一种,通常是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的大压力。
比如我们不断增加并发的登录用户数,20,30,50…比如,当增加到70个用户并发登录时,系统崩溃了,我们可以知道163邮箱所能承载的大登录并发数为70个左右。

关于性能测试的分类,可以举一个比较通俗的例子方便大家理解:
假设一个人很轻松能背1袋米,背2袋米很吃力,多能背3袋米
稳定性测试--我让他背1袋米,但是让他去操场上跑圈,看多久累倒。
负载测试--我让他背2袋米去操场上跑圈,看多久累倒。
压力测试--我让他背2袋米,3袋米,4袋米…发现他多能背3袋。