性能测试===当我们在谈性能测试的时候,我们在谈什么?

*本文转自虫师的博客:http://www.cnblogs.com/fnng/archive/2011/11/15/2250445.html

本文仅用于收藏学习,如有侵权。立删~

最近群里来了很多新朋友,大都是新做测试或准备做测试工作的,见好多新来上来就问关于LoadRunner的使用上的问题。对性能测试的理解也不是太清楚。公司说让他们对系统做个性能测试,他们听说LoadRunner是做性能测试的,在网上找了点了LoadRunner的使用说明就开始对系统下刀了。对于一些大公司的专业性能测试人员来说,这个很可笑,但这是种情况是存在的,我当初也到公司时也这么干的。

那时还真把性能测报告给整出来了,现在看来那报告没有任何意义。虽然,虽然对现在的我来说性能测试也只是只懂皮毛。但还是希望通过我这篇文章能让那些新手们对于性能测试有个入门的了解。

----//理发店模式

关于理解性能,记得我那时是看了“《LoadRunner没有告诉你的》之三---理发店模式”不管你有没有看过,我这重提一下理发店模式。

前提:

1. 一个理发店有三位理发师傅

2. 每位理发师傅理一个发需要一小时

3. 顾客都很忙,从进理发店起最多只等三小时(等待时间+理发时间),如果三小时后还没轮到自己理发,立马走人。

   思考:

这里我们来理解“最佳用户数”和“最大用户数”。

最佳用户数:

理发店的最佳状态,理发店收入最多(理发师傅没有休息时间,一直在理发),顾客满意度最高(顾客随时到随时理,无需要等待)。在一个时间点来说,三个理发师傅服务于三位顾客,那么这个最佳用户数是三。

最大用户数:

理发店的最大承受状态,理发店收入最多(理发师傅没有休息时间,一直在理发),顾客的最大忍耐度(来的顾客等待+理发需要等上三个小时)。

假如理发店生意非常好,早上一开门一下子来了一群顾客(很多),A、B、C三位顾客先理,D、E、F顾客需要等待一小时才能得到理发师傅的服务,G、H、I三位顾客等待了两小时才得到服务,后面排队的J、K、L.....等顾客,已经等了三小时还没得到服务,因为这已经得达到了他们等待的极限,所以后他们气愤和无奈离开。

当然,理发店还会不断的来新的顾客,不断有等了三小时而没有得到服务的顾客离开,但对于理发店而言,他们在一个时间点上,能服务的最大用户数是九(三位正在接受服务、三位已经等待一小时,三们已经等待两小时)。

对于最大用户数,需要注意的两点:

1. 在理发店里很大,可以容纳很多位顾客(大于9),总有一部分在这里等待了三小时而没有得到服务离开,不要把等待了三小而没有得到服务的顾客纳入最大用户数里。

2. 假如理发店很小,最多只能容纳六位顾客,当第七个顾客来时,虽然,我们知道他只需要等待两小时就可得到服务(这个时间是他可以接受的等待时间),但由于理发店容量有量,这第七个顾客只有改天再来了。

关于理发店原理,详细请浏览http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html

不知道通过上面对理发店的分析,你对性能有了一些眉目。假如理发店相当于我们的系统的话,顾客就我们向服务器所发送的请求,最佳用户数和最大用户数是我们衡量一个系统的处理能力的一种方法。

----//要帐的模式

注:上图是自己找来修改的,凑合着看吧!呵呵

这个是我在给一朋友说浏览器与服务器之间交流时用到的例子,感觉比容易理解,所以拿来分享一下。

   假设:

1.  A、B、C三个人。

2.  C欠A钱(这里不考虑多少)

3.  B是专门要账

   思考:

浏览器与服务器的信息传递次数:

A对B说,C欠我钱,你帮我去要。B接到指令后就去找C要钱。

B对C说,给我20块钱。

C说,没有。

B对C说,给我10块钱。

C说,没有。

B对C说,给我5块钱。

.........

最后,B回来对A说,哎呀妈呀,C那丫的忒抠门了,一分钱没有。

对于A来讲,只是来说,它只是让B问C要钱,具体的B与C之间交互了几次,A是不知道的,它所知道的就是B返回给它的结果,C一分钱没有。

浏览器与服务器传递数据的大小:

还是上面的过程,A对B说,C欠我钱,你帮我去要。B接到指令后就去找C要钱。

B对C说,给我20万块钱。

C说,没问题,没支票,只有1元硬币。

..........

B终于把钱拿回来给A。A很纳闷,怎么去了那么久,B委屈的说,丫的,C给我整了一堆硬币,太重了,路上走的慢,都快累死我了。

对于A来讲,只是来说,它只是让B问C要钱,谁知道C给的是支票还是硬币。所以,B去要钱消耗的时间就很长。

所以,要想提高浏览器对服务器的访问速度,应该减少数据传递次数与数据传递的大小。

这样就很自然的引出了浏览器的cookie

A在C哪里存了5毛钱。

A对B说,我在C哪里存了5毛钱,你去拿来我看看。B跑去问C要了5毛钱回来给A看。

过了一会,A又对B说,我在C哪里存了5毛钱,你去拿来我看看。B跑去问C要了5毛钱回来给A看。

过了一会,A又对B说,我在C哪里存了5毛钱,你去拿来我看看。这次C烦了,对B说,你把钱放自己口袋里吧,等A要的时候,你来问我5毛的人民币有没有改版,没有改版的话,你就直接把口袋里的5毛钱给A看就行了。

在这里A就相当于我们用户,B相当于浏览器,C是服务器。而cookie就是B的口袋,当然了cookie的用处还很多。比如我们登陆一个系统,提示我们是否保存密码(有的还有期限比如,一个星期或一个月),如果我们保存了,下次再访问登陆时,浏览器就已经帮我们填写好了账户密码或直接帮我们登陆。那这个账户密码就放在我们浏览器的cookie中。

为什么要说上面的例子呢?因为我们大部分的一部分性能测试是基于B/S架构系统的,理解了浏览器与服务器之间的数据传递,有助于我们理解性能测试。

----//在开始性能测试之前,我们需要知道什么?

当客户或老板把你叫来,对你说,去给我们系统做个性能测试,千万别傻傻的说“好!”然后,就走了,我以前这么干过(那时不懂,打肿了脸充胖子),回到座位后,不知从何下手了。

那么,我们需要知道什么呢?

 1. 性能测试的目的

首先要知道客户的要求。

我把性能测试按目的分以下几种

1)客户有明确要求

这是一个好的结果,这说明客户对性能测试有一定的了解,知道他们需要的系统要达到一个什么样的标准。如:系统要求同时满足100用户登陆,平均每个用户登陆时间不能超过5秒。这个需求很明确,当然也不排除一些不懂装懂的用户,提一些不现实的要求。

不管怎么说,用户提要求了,这个比较容易,你可以对现系统做一次性能测试,至于,是通过优化系统还是增加硬件设备才能达到要求。就不是我们考虑的问题了。

2)只是想知道目前系统性能(容量测试)

可以把我们的目的就是求得最大用户数和最佳用户数。但是,这仍然是比较含糊的一个需求,我们需要对系统做出分析,找出系统的压力点。

3)找出系统性能瓶颈

这个同样需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试。

4)了系统在长时间的压力下性能状况(强度测试)

这个一般验证系统的稳定性,因为系统一旦上线,就有可能会长期处在大用户的访问状态,可能以前没发现的一些问题就会暴漏出来。比较典型的就是内存溢出。

 2. 性能测试的环境

确定了我们的测试目的,当然需要测试环境。这里的环境,我们需要考虑一下几点

1)硬件环境

我们需要了解被测服务器硬件配置,用于加压客户端的机子配置,CPU 内存  等

2)软件环境

我们需要了解被测系统的架构,前端、中间件、服务器(这里指运行系统软件服务器,如tomcat)、数据库,以及他们的部署位置。

用于加压的客户端采用什么性能测试工具进行加压。

3)网络环境

网络环境很重要。在上面的几个目的中,除了找出系统性能瓶颈可以在广域网进行,因为这个目的可以不用设置太多的虚拟用户,只要找出系统哪个地方影响了整个系统的性能就行。

其他目的的测试都需要在,局域网进行,不然你压力工具所发送的请求都会卡死在网络的传输过程中。

  3. 寻找系统的压力点

我们需要对系统的哪个页面或业务进行加压。这个不是自己想出来的,需要与开发人员的沟通。系统的首页?系统的登录?还是系统的交易过程?各个业务的用户比例是多少?

只有获得有效的性能需求,才容易寻找和定位压力点。

获得有效的需求:http://www.cnblogs.com/jackei/archive/2006/12/12/589473.html

如果上面的几点,你都很清晰了,那么打开你的性能测试工具开始录制(或编写)你的性能测试脚本吧!

学习链接:

《LoadRunner 没有告诉你的》之一——描述性统计与性能结果分析

《LoadRunner 没有告诉你的》之二——描述性统计与性能结果分析(续)

《LoadRunner 没有告诉你的》之三——理发店模型

《LoadRunner 没有告诉你的》之四——理解性能

《LoadRunner 没有告诉你的》之五——无所不在的性能测试 (已完稿)

《LoadRunner没有告诉你的》之六——获取有效的性能需求

 

时间: 2024-07-28 22:34:49

性能测试===当我们在谈性能测试的时候,我们在谈什么?的相关文章

浅谈性能测试分析

性能测试工程师基本上都能够掌握利用测试工具来作负载.压力测试,但多数人对怎样去分析工具收集到的测试结果感到无从下手,下面我就把个人工作中的体会和收集到的有关资料整理出来,希望能对大家分析测试结果有所帮助. 分析原则: 1. 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点) 2. 查找瓶颈时按以下顺序,由易到难. 服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句

你给老板谈工资,老板给你谈发展.之后发生的事...

逝者如斯夫,时间太他妈快了,感觉刚过完年没多久,夏天就来了,干软件也快3个年头了,年龄也二十有五了,天苍苍,地茫茫,腰包依然羞涩. 干软件很屌丝,很辛苦,光棍25年了,寂寞25年了,望苍天,天空中有白云,生活还有希望.我想找个女朋友,于是找老板谈谈加薪的事情,老板给我展望了一下未来,比<新闻联播>里展现的生活都好.但咱不能信啊. 你给老板谈工资,老板给你谈发展.之后发生的事就是离职了. 生活还要继续,找工作... 为了找到好工作,一天面试3家公司 第一家:20人左右的小公司,老板直接面试,老板

2017云计算开源峰会 你是想听Linux谈开源还是想听OpenStack谈开源?

2017年,善于把握机遇的企业们不是正在开源,就是走在去开源的路上-- 开源是不是就意味着免费? 开源企业就是要当"活雷锋"? 开源项目究竟如何运作?如何参与开源社区? 如何获得最火爆的云计算开源项目和最权威的技术? 你是不是也有着同样的疑问? 那么,请来2017全球云计算开源峰会找答案. 2017全球云计算开源峰会为何值得期待? 一.Linux.OpenStack.Apache三大开源基金会齐聚中国 二.30余位技术大咖"手把手"教您如何玩转开源 三.国内首个云计

谈清楚是技术、不谈清楚是艺术

项目目标是帮客户开发一套业务管理系统.客户要求在系统上线后对内部人员进行培训,这当然是合理要求.但细化需求时,你发现客户希望培训大量一线员工,很多人从来没有接触过计算机,也就是说客户希望你要从硬件.操作系统开始培训,而不仅是你们负责开发的应用. 对于这样的培训要求,你答应?还是拒绝? * 如果你手里有足够的预算.也有时间,答应这个要求,完全没有错. * 如果你没有预算和时间,拒绝客户这个要求,只要很好地沟通,也没有错,毕竟这种计算机基础类的培训市场上非常多,客户很容易找到替换方案 答应.不答应似

浅谈性能测试

首先我们从问题入手,为什么我们要进行性能测试?很多人会回答“项目需要”,可是你思考过项目为什么需要做性能测试? 简单来说是因为系统的访问量和操作量比较频繁,大量用户的频繁操作必然会产生一些用户在同时(Same Time)操作一些功能,这就需要系统能够处理这些Same Time操作或者处理速度非常快行,而我们的项目需要节约成本,就需要采用合适的方案来满足这些方面的要求.平时做功能测试实际上是模拟一个用户在对系统的功能进行操作.如果系统有大量的用户访问.有比较频繁的操作量或者说比较大的业务量,那我们

简谈性能测试

性能测试(Performance Test) 通过测试工具和测试手段,监测和收集测试过程中的软件系统运行数据,度量系统与预定义目标的差距.而预定义目标就是通过性能需求来表示. 监测和收集: 1. 收集,根据项目历史数据,或者根据经验 2. 分析,比如业务人员很多,底层到中层.再到高层. 可能存在的问题: 性能问题还存在可以细分一下是场景遗漏.还是数据遗漏.场景遗漏常常由于需求传递变味导致. 处理方法. 做好策略和设计,如果针对现在的问题:可以做一个checklist不断优化你的策略设计能力. 分

性能测试心得系列三:性能测试工具的选择

性能测试工具,比较出名的就是HP LoadRunner,这款工具是商用收费的,是销售license的. 比如1000 concurrent users 10000 concurrent users,价格也是不一样的.其他的工具,免费的 比如 apache jmeter,是一个轻量级别的性能测试工具. 其可以做web性能测试,也可以做API(web service ) 性能测试. 各种 断言和report都可以运用. 如何选择工具,如果只是轻量级别的压力测试和测试分析的话,可以选择免费的工具,如果

性能测试培训:sql server性能测试分析局部变量的性能影响

poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner的培训中,为了提高学员性能优化的经验,加入了很多服务器方面的优化知识,为性能调优的能力打下基础.今天sqlserver的性能测试方面的知识.(大家对课程感兴趣,请加qq:564202718) 性能测试的分析都有一定的方法和思路,这次我们来看看sqlserver方面的性能的知识. 数据库开发者在存储过程和脚本中使用局部变量,但是,局部变量会影响

性能测试--1、为什么进行性能测试

为什么进行性能测试 应用程序糟糕的性能表现,通常不能让企业达到预期的利益. 以最终用户的眼光看待性能 关注"应用程序"的性能,此处的"应用程序"指的是应用程序的所有部分(硬件.操作系统.系统架构.中间件.应用程序.网络等),而非指某一部分. 性能度量 性能度量的两种类型:服务型.效率型. 服务型指标:可用性和响应时间,衡量的是应用程序为用户服务效果的好坏. 可用性(Availability):应用程序对于最终用户的可用时间.可用性不好,意味着最终用户无法有效地使用该