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

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

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

  ----//理发店模式

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

  前提:

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

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

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

  思考:

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

  最佳用户数:

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

  最大用户数:

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

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

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

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

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

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

  关于理发店原理,详细请浏览http://www.51testing.com/html/58/n-10558.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.51testing.com/html/68/n-10568.html

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

  注:以上个人观点,如有错误的之处,请高手指证,以免误导别人。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-10 00:44:59

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

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

         之前写过一篇<在做性能测试之前应该知道什么>有博文,自我感觉讲的不好,举了两个例子,和做性能测试之前需要知道的一些要点.离我的题目有差距.二则觉得讲的不全.其实,要做性能测试需要知道的东西太多了.岂是一篇博文都能说全的.在这里表示一下愧疚之情.          好多测试新手,在做完性能测试之后,不知如何对测试数据进行分析.在这里我想谈谈一些性能测试参数的相关知识.当然,也不是一篇博文就能说清道明的.只希望在你的测试道路上能给你一丝帮助.         不怕啰嗦的再次忠告,

我怎么做性能测试

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

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认证信任. 用户名和密码

性能测试知多少---并发用户

在做性能测试的时候,我们常常听到并发用户.响应时间.吞吐量专业术语,也许大家都理解,这里有一个理解的层次与深度概 念.最近有看断念<软件性能详解与案例分析>一书,看了他的讲解,原来我对这些术语的理解还是比较肤浅,其实,这里也主要受制于自己的知识面.所以,再拿 出来与大家重温一下.  ps:按照惯例先上个图,因为看纯文字的文章比较累!^_^     并发用户数 大家都知道我们的性能测试就通过工具模拟多用户对系统进行操作,对系统造成压力,来验证系统的性能(不太标准的解释). 好多人也简单的把性能测

《全栈性能测试修炼宝典 JMeter实战》目录—导读

版权 全栈性能测试修炼宝典 JMeter实战 • 著 [美] Rogers Cadenhead 译 袁国忠 责任编辑 傅道坤 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 版权声明 全栈性能测试修炼宝典 JMeter实战 Rogers Cadenhead: Sams Teach

浅谈应用性能测试 PTS

阅读原文 我们为什么要进行性能测试? 1. 评估系统的能力. 当应用上线有大量用户当问的时候,页面的打开速度直接影响用户体验,进而影响用户的留存.了解用户的真实使用体验,对应用做出针对性的性能评估,有效提升用户体验. 2. 验证系统的稳定性和可靠性. 在整个的网站应用架构体系中,会有一些接口基础服务,它的职责是对外输出一些稳定的查询,一些服务能力,这个时候系统需要有较高的稳定性,比如访问量很多,数据量很大,这个时候就需要关注性能.另外对于一些核心系统,可用性很高,对于性能系统也是非常关键的. 3

怎么做一个合格的测试

试着表述一下自己的测试思路:我期望的测试时怎样来做的.  首先给一个概念,Smart Test.何为聪明的做测试,从以下几个方面来描述:  A.重视投入产出比  首先,需要明确测试实际上是一种服务,一种技术手段,它通过一些方法.手段.工具来发现产品中的缺陷,通过及时暴露缺陷推动开发去修改来提高质量.而质量本身是与测试无关的,测或者不测,质量是在生产完成的那一刻确定的.  因此在投入一定量的测试工作量的情况下,如何让测试的收益更大?答案很容易想到,尽量找出多的缺陷,找出风险高的缺陷.那么如何做到这

性能测试知多少---测试环境搭建

在进行性能则试前,需要完成性能测试的搭建工作,一般包括硬件环境.软件环境及网络环境,可以要求配置和开发工程师协助完成,但是作为一个优秀性能测试工程师,这也是你的必备技能之一.   性能测试环境与功能测试环境的区别                                                  那么性能测试环境与功能测试环境有什么不同呢?性能测试对测试环境的干净.独立性要求更高,更为严格.对于一个相对较规范的公司,都会建立其独立的研发环境.测试环境.线网环境(最终运行软件的环境)