在做性能测试之后需要知道些什么

         之前写过一篇《在做性能测试之前应该知道什么》有博文,自我感觉讲的不好,举了两个例子,和做性能测试之前需要知道的一些要点。离我的题目有差距。二则觉得讲的不全。其实,要做性能测试需要知道的东西太多了。岂是一篇博文都能说全的。在这里表示一下愧疚之情。

         好多测试新手,在做完性能测试之后,不知如何对测试数据进行分析。在这里我想谈谈一些性能测试参数的相关知识。当然,也不是一篇博文就能说清道明的。只希望在你的测试道路上能给你一丝帮助。

        不怕啰嗦的再次忠告,那想成为测试高手的新人,多学学基础知识。别把过多的时间放在研究新工具的使用上。工具何其多,原理差不多。不要本末倒置了。也算是自我提醒吧!

 

性能测试常见指标

 

     性能测试说白了就是通过工具模拟多个用户对被测系统进行访问。然后查看系统对于多个用户发来请求的处理能力。

     左边的两个小人表示两个用户,向右边服务器发送请求,然后得到服务器的响应信息。

    首先,我们要保证向服务器发送的请求的正确性,当然用户向服务器发送错误的请求,服务器也会个客户端响应信息,但响应的是报错信息;所以,为了保证测试数据的有效性,我们的要保证发送请求的正确性。

     为什么一般的性能测试要在局域进行?

   
 一般我们的性能测试都是在局域网中进行的。为什么一定要在局域网中进行呢?因为局域网中不受网络限制。这个说法不能绝对。但是一般测试工具的用户并发量
是不会受到局域网带宽的限制,除非你做的是十万,百万级别的用户并发。相信懂一点网络知识的人都知道,当你上网很慢的时候,比如打开某某网站很慢,你肯定
会骂电信的网络不给力,而不会骂这个网站响应速度不给力。因为,请求信息的耗时大部耗在传输过程中。

   
 所以,刚做测试时,我们群里热议论,如果我们每个人都开一个压力工具对百度网站进行加压。百度,服务器会不会挂掉。有测友说这样是不道德人。呵呵!其
实,完全不必有这个担心。就一般人家用的带宽,我确保,你向百度服务器发送的请求大部分都死在半路上,就算不死到了百度服务器已经不能叫并发了。何况百度
服务器的集群技术以及其他各种分压技术。所以,做性能测试不了解被测系统的架构,以及各种技术的性能。很难做出有效的测试报告。

下面我们看看性能测试的一些技术指标。  

Work Load = Virtual Users

工作负荷 = 虚拟用户数

     对服务器产生多大压力,可以由多少用户同时对服务器发送请求来衡量。也就是服务器的性能可以看它同时处理多少用户发送来的请求来衡量。

虚拟用户数可以用进程或线程的方式进行模拟。

 

response time  响应时间

       从客户端将数据包发出,到接收到服务器端发来的请求。这个过程的总体时间叫response time 

       这个时间用来衡量的处理请求的速度(抛出网速限制的前提下)

throughput ~Ti & To

       这个表示,吞吐量,吞吐量越大表示系统性能越强。1个用户跑100天和10个用户跑1分钟。当然是1个用户跑100天的吞吐量大。所以,我们要想看系统的性能应该用“吞吐率”,就是单位时间的吞吐量,比如吞吐量/秒。

      站在服务器端,T-in表示“吞”;T-out表求“吐”

Ti:T-in 主要衡量客户端的能力,看客户端往服务器发送的请求数据包的吞吐率。 

To: T-out 主要衡量的服务器端的能力,看服务器处理返回请求数据包的吞吐率。

Hits/Request

网页点击数/请求

Response/Successful Response

响应/成功的响应

   
 Request与Response是对应,一个请求对应一个响应。但当客户端对服务器的压力达到一直程度后,不是每一请求都能得到响应的。去年末火了个
最牛B的“电子商务”网站。12306(铁路网上订票系统),虽然有很差的用户体验,但每天还是大把的人拼命的登录(过年回家的人伤不起),甚至用外挂登
录。见有网友云云点击(请求)了几十几百次才订票(响应)成功。所以,成功响应率也是很重要的一个指标。客户端发送一千个请求的成功得到响应的几率。 

Hits Per Second 

每秒中点击次数

     和吞吐量一样,单单用点击数(hits)来衡量系统也是不合理的。所以,用每秒钟的点击数才能衡量出服务器的处理能力。

 

 

响应时间图分析

  

横坐标表示用户数

纵坐标表示时间

 

红色虚线,表求的是一种系统的理想状态。

  当服务器处理10个用户请求时所用的时间是2秒(假设),当服务器处理200用户请求时所用的时间也是2秒。所以说这种状态是一种理想的状态。现实中,不管是如何超级强的服务器当用户数达到一定数量时,响应时间必会变慢。

 

蓝色斜线,是服务器常见的一种曲线状态。

    服务器的响应时间虽然用户数量的增加逐渐变慢。

当系统出现这种斜线,应该说系统性能是相当健壮的。随着用户的增长响应时间逐渐变长。

 

黑色曲线,个人觉得是服务器处理能力的真实曲线状态。

   
 为什么说黑线才是真实服务器处理能力的曲线呢?当用户处理一个用户请求是2秒(假设),当处两个用户请求是马上变成3秒(假设),当处理3个用户请求时
变成4秒(假设)。再差的服务器也有个处理范围,比如是,100用户同时并发,服务器可以轻松应对,不管是10个用户还是80个用户同时请求,服务器都可
以即可响应(请参考理发店模式)。只有当用户数量达到某个数量点后,服务器性能急剧下降。如上图黑色十字星处就是系统的拐角点。

     
我们假设有一个门,在一个时间点上可同时过10个人,不管你是同时来3个还是10个都可以在同一时间点过门,假如来了11个人,必然有一个人要等10个人
过门之后才能过。那么当超过10人来过门时,过门的速度就开始变慢。那么10就是服务器性能的拐角点。我们通常做压力测试找服务器的拐角点是很重要的任务
之一。

     关蓝色曲线与黑色区线只是我们常见两种曲线。现实的测试中可能出现各种样式的曲线。当然还要看你做测试的细度,比如,10个用户是系统的拐点,如果你做完5个用户的一轮测试后,就是20用户的测试。那么画出来的曲线就变成斜线,拐点将被护忽略掉。

 

 

吞吐率图分析  


横坐标虚拟用户数

纵坐标有吞吐率(服务器端)

 

红色虚线,表示一种理想的状态。

   随着用户数量的增加吞吐率也在持续增加。

 

黑色曲线,表示现实系统的吞吐率状态。

     刚开始吞吐率随着用户数量的增加逐渐变大,当大到一定程度时,逐渐平缓直到变成一条平线。

如果用户还在持续增加中,那么吞吐率有可能下降,直到系统挂掉。

   
 为什么会是这样呢?我们通过另一个例子来说,大家都在城市生活,相信上下班高峰期都会遇到堵车。在比较重要的红绿灯路口常会见到堵车现象。假如每个绿灯
可以通过10辆,前期来三五辆车,遇到绿灯,一次都过去了。到了下班高峰期,车子变多,一下来了20辆,但这个路口的绿灯每天只能通过10辆,所以,这个
时候,路口的通过率不会根据车辆的增加而继续增加。

    好的系统好像好有个好的交警在位置秩序,虽然车辆还在增加,但每个车辆都有条不紊等待通过路口。

    不好的系统如路口赶上交警拉肚子,车辆在增加,后面车辆等得不耐烦就往前挤,结果稿得互不相让。好嘛!之后还每个绿灯可通过10辆,现在只能有一辆车从夹缝中脱离苦海了。

    

   
响应时间图与吞吐率图并不是我们一轮性能测试下来就能得到结果。需要经过多轮测试才能得到。设置不同的用户数量,得到每次的测试数据,将每次数据连接,从
而得到最终系统性能曲线。关于用户数量每次增加的数量自己把握。如果,想精确,可以每次增加1个用户的方式来做,不过这样势必加大工作量,也没必要。这个
需要每做完一轮测试后对数据进行分析,然后确定下轮测试所要设置的虚拟用户数。

 

      关于,性能指标的分析,就先谈到这里。关于内容,我反复经过思考,但难免有理解有误之处。还望高手点拨。共同进步。

 

时间: 2025-01-07 01:51:30

在做性能测试之后需要知道些什么的相关文章

在seo中做外链需要注意些什么

首先我要说的是,我今天不是说如何做外链,怎么做外链等一些问题.我要说的是做外链的一些权重性问题.这是实验结果.seo最重要的就是实战,空口成不了气候.那么做外链要注意些上面.两点 第一 带文字链接和WWW的区别 这里所说的文字连接,我想大家都听得懂就是所谓的锚文本连接.那么锚文本链接和www直接网址链接有什么区别.那么现实生活中,我们应该做这两种链接的哪一种.首先我我们要清楚地明白,这两种链接的不同的作用,锚文本连接是针对于你想做的关键词链接,而网址链接则是针对网站首页权重的链接.在做seo的过

我怎么做性能测试

今天和同事交流关于性能测试的东西,以前也做过性能测试,突然想写点自己关于如何做性能测试的认识. 基于B/S架构的系统,利用loadrunner做性能测试,利用nmon监控系统资源(用linux自带的top,vmstat等命令也可以,写一些简单的shell脚本就行了). 那么到底该怎么去做性能测试呢? 1.首先要了解被测系统的结构和有关知识的储备. 了解了被测系统,在后期性能出现异常的时候,定位就相对容易一些:而且知道在测试的过程中需要监控什么. 一个简单B\S系统结构图: 该系统有一下及部分组成

在做性能测试之前需要知道什么

最近群里来了很多新朋友,大都是新做测试或准备做测试工作的,见好多新手上来就问关于LoadRunner的使用上的问题.对性能测试的理解也不是太清楚.公司说让他们对系统做个性能测试,他们听说LoadRunner是做性能测试的,在网上找了点LoadRunner的使用说明就开始对系统下刀了.对于一些大公司的专业性能测试人员来说,这个很可笑,但是这种情况是存在的,我当初刚到公司时也这么干的. 那时还真把性能测报告给整出来了,现在看来那报告没有任何意义.虽然对现在的我来说性能测试也只是只懂皮毛.但还是希望通

Clojure世界:如何做性能测试

  我们经常需要在程序中测量某段代码的性能,或者某个函数的性能,在Java中,我们可能简单地循环调用某个方法多少次,然后利用System.currentTimeMillis()方法测量下时间.在Ruby中,一般都是用Benchmark module做测试,提供了更详细的报告信息.     同样,在Clojure里你可以做这些事情,你仍然可以使用System.currentTimeMillis()来测量运行时间,例如: user=> (defn sum1 [& args] (reduce + 

深度分析做友情链接该关注些什么

网站优化分为站内优化和站外优化.站外优化也就是我们常说的外链建设,我们都非常清楚,现在搜索引擎对外链的考察越来越重视质量了,以前靠群发链接就可以提高排名的方法早已经行不通了,因此如何来做高权重的外链也就成为了我们站长朋友们非常关心的话题.毫无以为,友情链接是我们所有外链中除了单向链接外质量最好的外链.今天,就让我来各位站长朋友们来谈谈我们在做友情链接交换时所必须关注的问题,让友情链接的作用发挥到最大. 一.网站的本身的质量 这个是交换友情链接第一个要考虑的因素,如果对方的网站一看就是一个垃圾站,

Apache使用Ab工具命令做性能测试教程

我们有了自己的服务器,有时候我们需要测试下我们的服务器到底能抗多少数据,这样有利于我们部署和配置服务器,在Apache里面有自带免费的性能测试工具,Ab(Apache Bench)在Apache的bin目录下,它能模拟多个并发请求,也就是说它主要是用来测试你的apache每秒能处理多少请求的. 命令语法 ab [options] [http://]hostname[:port]/path 参数选项 -A auth-username:password 对服务器提供BASIC认证信任. 用户名和密码

软件性能测试的本质

  淘宝网每年的双11 活 动都是对其服务器性能的挑战.因为在这一天所有商品半价,购物的用户量剧增.做为淘宝网的高层更多的关心在线用户数,用户交易量,总交易金额等,做为一名 技术人员,我们可能更关心当天系统的吞吐量.每秒钟点击率以及系统资源的消耗情况等,对!这就是系统的性能.那么性能的本质是什么呢?我试抓住一些点来解 释.   基于用户体验的性能测试   但对于一个用户来说,他可以不关心上面这些(系统的性能参数),大约有一部分的消费者会因为网站过于技术化或者性能问题而选择了离开.换言之,如果你的

从用户感知谈软件性能测试

虽然,有一段时间没关注性能测试,但时常还能看到有同学讨论性能,对于一些概念的理解很想深入讨论,但三言两语说不清,于是,还是花点时间写写吧! 今天有一个同学问:"一个小的系统,用户并发数为20个,那事务平均响应时间大概在什么范围内?" 怕麻烦直接告诉他2/5/8原则,钻牛角尖的话,需要进一步确认什么样的小系统?提供的什么类型的业务?用户行为是什么样的?用户对系统的使用频率?就算同响应时时间一样,前端通过不同展现方法,用户的感知可能完全不一样.下面就真对这个问题延伸讨论一下从用户感知的角度

如何进行Web服务的性能测试?

随着浏览器功能的不断完善,用户量不断的攀升,涉及到web服务的功能在不断的增加,对于我们测试来说,我们不仅要保证服务端功能的正确性,也要验证服务端程序的性能是否符合要求.那么性能测试都要做些什么呢?我们该怎样进行性能测试呢? 性能测试一般会围绕以下这些问题而进行: 1. 什么情况下需要做性能测试? 2. 什么时候做性能测试? 3. 做性能测试需要准备哪些内容? 4. 什么样的性能指标是符合要求的? 5. 性能测试需要收集的数据有哪些? 6. 怎样收集这些数据? 7. 如何分析收集到的数据? 8.