心有多大,舞台就有多大,希望结识做网站测试的朋友们; 测试需要横向扩展也需要纵向延伸 我相信自己会在测试的道路上走的很远..............................

发布新日志

  • LR,事务每次运行时间打印及判断(转)

    2009-09-18 11:45:01

            int i,sum;

            float duration_time;

            lr_start_transaction("login");

            for (i = 1;i<100;i++) {

                    sum += i;
            }

          duration_time = lr_get_transaction_duration("zee");//注意位置

            lr_end_transaction("login", LR_AUTO);

            lr_output_message("事物执行时间为:%lf",duration_time);

           //对事务时间进行判断,如果大于0.1s,则输出信息提示说明。
            if ( duration_time > 0.1 ) {

                    lr_output_message("执行时间太长");
            }
    不错的方法,借鉴学习!!
  • Loadrunner关联(三)手动关联(转)

    2009-08-27 16:57:03


    51Testing软件测试网8aUdeB~

    原创文章,转载注明出处:http://www.51testing.com/?41972

    fI­S3T7`]M183873

    手动关联的过程大致如下:51Testing软件测试网4qr-f:u%fT'T
    F

    第一步:录制测试脚本,录制二遍

    q-Q-f j ~183873

    第二步:使用WinDiff工具找出两次脚本的不同,判断是否需要进行关联

    !Rp$s i6H[1]_
    P*["e183873

    第三步:确定插入关联的位置51Testing软件测试网
    ~PeNG3H3C
    S
    s


    U
    第四步:在VIEW TREE中使用web_reg_save_param函数手动建立关联
    9tg{7cD:TC@n
    [,N183873
    第五步:将脚本中有用到关联的数据,用参数代替

    *ew]8|&r
    N183873

    第六步:验证关联的正确性

    4fB"v!u7d183873

     

    lW7W8i
    i+y$r%a[1]x183873

    下面详细介绍:

    &GZ­]+rLWx[1]H183873

    第一步:51Testing软件测试网"}0[g2?
    L }
    ?9KpN

    录制测试脚本,录制二遍51Testing软件测试网)H]R-]q"ra~

    这一步就不用多说了,相同的操作,录制两份,分别保存

    p,e;Z+s%j_q183873

    第二步:51Testing软件测试网oME!F
    Z7I
    o6WE

    使用WinDiff工具协助找出需要关联的数据

    eb8E&R V­au183873
    1.
    在第二份脚本中,点选VuGen的【Tools>Compare with Vuser…】,并选择第一份脚本。51Testing软件测试网V+KDcf+a m2p
    2.
    接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options>View>Show Inline Differences】)。51Testing软件测试网‑t}~M I9`j

    查看二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。51Testing软件测试网}[1]Bd A%`#o.uJ

    注意:lr_thik_time部分的差异可以忽略


    e!M\}.a I183873

    找到不同的部分后,复制,然后打开Recording Log或是Generation Log,按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分的信息,确认是客户端的请求信息还是服务器回应的信息

    5}
    ]‑g$h(pd5s#c'X183873

    如果出现在$$$$$$ Request Header For Transaction With Id 3 Ended $$$$$$这个部分,那证明是客户端发出的请求,这里是不需要做关联的

    &u(d@$\sp,|%E_2a183873

    一般做的关联都是出现在****** Response Header For Transaction With Id 7 ************ Response Body For Transaction With Id 7 ******中的部分。

    k


    L]jX4d#hkz |183873

    在找到这个信息后,需要记录如下信息:


    M[1]t3z yT
    [;X183873

    a.记录这个不同数据之前的内容和之后的内容

    :W!?­I9ES9i'ij^183873

    b.记录这个不同数据出现的位置,是Header还是Body

    :rg j%z8W­o D[183873

     51Testing软件测试网‑A;ER@'] _[1]n9|,\$_"[

    第三步:


    `}‑?$w+y(\183873

    确认插入关联的位置51Testing软件测试网5h&n&E0^6n,j

    我们在日志中找到了两次脚本的不同点的位置,根据这个位置,我们再确定是在哪个请求之后产生的,也就是说要定位发生不同点的response是由哪个request产生的,找到了这个请求的函数位置,我们就知道要往哪里做关联了

    ,L6L^I,w[1]h/i]8L183873

    一般情况下关联函数写到发出请求的函数之前就可以了

    *w2R7l)]


    F
    i:m183873

     

    /V(T‑X5g$Q:\­[183873

    第四步:

    T#v{3J j


    w183873

    插入关联函数51Testing软件测试网+r9X
    |+xd X


    c

    在插入关联函数前,我们先介绍关联函数web_reg_save_param

    Y[1]x
    b‑\!v$o H183873

     一个web_reg_save_param函数的例子:

    %f4d:On1s:e


    j[1]C)ly_183873

    web_reg_save_param ("sessionid",

    _
    [2v[1]M og1u183873

         "LB=Session_id:",51Testing软件测试网&BB6j!Vv.m6L&T_$P

         "RB=;",


    |Jc)\4C lk183873

         "Search=Body",51Testing软件测试网auN"r-qf+x

         LAST);

    ­P)htP'Sa!f183873

    在这里我们只介绍几个常用参数的含义

    %G0`Lp#^gL7DR


    X183873

    语法:int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);51Testing软件测试网g j


    iE*H­A"a(_Q

    参数说明:51Testing软件测试网w,_
    s3v!U3?^

    ParamName:存放得到的动态内容的参数名称51Testing软件测试网
    mQg.U


    {
    N

    list of Attributes:其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写51Testing软件测试网
    O"F[1]{Wp,s%Q

    LB( Left Boundary ) :返回信息的左边界字串。该属性必须有,并且区分大小写。

    .@"z8r
    `1r.tF183873

    RB( Right Boundary ):返回信息的右边界字串。该属性必须有,并且区分大小写。

    xRq2O[C183873

    Search :返回信息的查找范围。可以是HeadersBodyNoresourceAll(缺省)。该属性质可有可无。51Testing软件测试网[1]Waxhm~


    U#~
    W

     

    ‑c`dTy
    e%r183873

    那么如何插入该关联函数呢?51Testing软件测试网K4\j c"M;M

    1.vugun切换到view tree模式下

    S DI"[ _$j1z{!F/d |183873

    2.在左边的列表中,找到在上一步发出请求的函数,点击“右键”51Testing软件测试网+L
    M


    kt0s(D

    选择“insert before51Testing软件测试网"}i9oA@y&j

    3.在弹出的“add step”对话框的“find function”中输入“web_reg_save_param”,点击“ok

    [1]MC­aW!A2J183873

    在“parameter name”中输入,关联函数的名称,这里最好有含义,“sessionid

    ;twIn4jY$Iz183873

    在“left boundary”中输入,刚才记录下的不同点字符串的左面的几个字符,定义左边界,Session_id:

    's*_!R(bA"]'M183873

    在“right boundary”中输入,刚才记录下的不同点字符串的右面的几个字符,定义右边界,;

    :D6}-f-z1h G183873

    在“search in”中,选择“body

    3|­e mX'|R a*E7c183873

    点击“ok51Testing软件测试网+y9U%~lKG(G&\R

    4.回到脚本编辑模式下,查看该函数插入是否正确51Testing软件测试网1EB3O|8|q9^!q
    As/b

    在发出请求的函数前应该看到:51Testing软件测试网 V
    x/z[1]u:B4Oz

    web_reg_save_param ("sessionid",

    b"l‑\+~
    J%|(~F!`183873

         "LB=Session_id:",51Testing软件测试网­\/G~'Q5Yq

         "RB=;",


    hY!J%hh\(V,_183873

         "Search=Body",51Testing软件测试网,Y(Bh6\g$ML


    J m:I!F

         LAST);

    0g#y1E"@3CBc1@:e183873

     51Testing软件测试网 ad1L HV Y B4?_

    第五步:51Testing软件测试网N@0| |
    ^


    e/?r

    将脚本中有用到关联的数据,用参数代替

    !h`
    O;@;C,l
    q0N183873

     51Testing软件测试网­M3Kq'F­cj G3{ qdT

    如发出请求的参数如下,那么将原来服务器返回的动态值使用{ sessionid }来替换:

    CRu R­l+[8M*?$I‑R183873

     web_submit_form("login.php_2",51Testing软件测试网
    F$B4Po|$`wA‑\(d|\

         "Snapshot=t2.inf",

    7v


    c3pu\Rb{L183873

         ITEMDATA,51Testing软件测试网+c{;vr0`/@
    A

         "Name=login", "Value=wangjin", ENDITEM,51Testing软件测试网Z1q3P5B%f4NP5B,s

         "Name=password", "Value=wangjin", ENDITEM,51Testing软件测试网Q


    Lo1j.uV

           "Name=Session_id","Value={ sessionid }", ENDITEM,51Testing软件测试网5h1N1i ns
    N%N

         "Name=Submit", "Value=Login", ENDITEM,

    4l8y(TM t;X183873

         EXTRARES,51Testing软件测试网c
    Fl[.F x x&W$X

         "URL=/media/images/border_bg_l.gif", ENDITEM,

    4QJ
    I!Y&JA:l183873

         "URL=/media/images/header_bg.gif", ENDITEM,51Testing软件测试网‑FB"pU


    H;QO'Pt

         "URL=/media/images/th.gif", ENDITEM,51Testing软件测试网'X9w
    E5[ A9qp

         LAST);


    tp\.r


    E\:y8D/V9w"z183873

     

    d S(D
    Mf183873

    第六步:51Testing软件测试网%N


    x VFU0T&U

    验证关联的正确性

    %u d,R3B+a W V8aZ183873

    回放脚本,验证关联的正确性51Testing软件测试网wM \
    v


    XpH/M#i

     

    +x{QKr183873

    OK!!!51Testing软件测试网~A#NJd?v@5]

    大功告成,累死我了51Testing软件测试网
    b$Jz"pSB­a

    原创文章,转载注明出处:http://www.51testing.com/?4197251Testing软件测试网
    @)N
    iv.DV
    ~

     

  • 090706 论坛性能测试帖子感受总结

    2009-07-06 14:24:28

    一、对服务器所施加的压力和所服务器本身所设置的最大连接数的关系
    施压的访问量并不需要达到应用服务器设置的最大连接数,连接量也有可能达到限制。这跟应用本身有很大的关系。增加压力时逐渐出现错误不要急着下结果;当然根本上的做法应该是事先将连接数设置配置好。

    二、在线用户数如何转换成并发用户数?
    这个问题我在具体做测试的时候遇到过,当时我是录制了好几个脚本,根据实际情况,考虑了每个脚本设置的人数,然后一起跑,以为就可以测出网站的最大在线人数,现在看来当时的这种做法是错误的。
    在线用户数应该转换为并发用户数来变相的进行测试
    必须要有大量的历史日志信息来支撑了。系统日志需要有同时在线用户数量的日志信息,还需要有用户操作次数的日志信息,这2个数据的比例就是同时在线用户转换到并发数的比例

    三、如何估算服务器内存是否足够?
    1
    个连接产生1session,每个session在服务器上有个内存空间大小的设置,在NT上是3M,那么10万并发就需要300G内存,当然实际使用中考虑其他程序也占用内存,所以准备的内存数量要求比这个还要多一些。

    四、对设置think time的理解
    1
    、跑单个业务的脚本,本身就不符合实际情况(因为实际使用中,肯定会有多个用户在使用不同的业务),之所以还要这么测,我感觉主要目的就是为了测试该模 块或功能的瓶颈在哪里?既然这样,那就给它加压,即使实际用户使用中可能不会对服务器产生这么大的压力,但为了得到响应时间的准确值和系统的瓶颈,所以不 设置思考时间
    2
    、而对于复合脚本,就应该设置思考时间,因为测试的目的和单一脚本不同,它的主要目的就是为了真实模拟用户的操作,以此来发现系统的瓶颈

  • Apache服务器提高性能的四个建议

    2009-07-06 14:18:58

    Apache服务器是在Linux系统上部署HTTP服务器的一个最佳选择。不仅仅因为其稳定、安全,而且其还能够提供比较优越的性能。不过为了提高Apache服务器的性能,Linux系统管理员还是需要调整一些跟性能相关的参数,在Apache服务器中专门有一个模块用来进行相关的调整。作为系统管理员,在部署Apache服务器应用的时候,需要了解这些参数的含义,并根据网站应用的实际情况来进行相关的调整。要实现这个目的,笔者下面的几条建议或许能够对大家有所帮助。
      建议一:设置最多连接数量。
      为了保障每个连接的客户端的性能,往往需要在服务器中设置在同一时间内允许的客户端数量的上限。如在服务器上部署了电子邮件或者FTP等应用服务,为了能够保障下载的速度,就需要对连接客户端进行最高数量的限制。在Apache服务器中有一个最多连接数量的栏目,就是用来设置这个值。另外也可以利用配置文件中的MaxClinets参数来进行设置。通过这个参数,系统管理员可以限制客户端的连接数量与连接时间,以节省带宽来提供其他的服务或者提高已有连接的效率。当客户端的连接数量超过这个最高限制后,所有新建的连接都会被拒绝;当然服务器会把拒绝错误信息返回给客户。
      在进行这个设置的时候,需要注意两个问题。一是在Linux操作系统上配置Xinetd服务的时候也可以进行类似的设置。如通过配置Xinetd服务配置文件中的instances参数可以设置单一服务在同一时间内提供客户端连接请求的最高上限。那么这个参数跟Apache服务器中的连接数量设置是什么关系呢?如instance参数设置为100;而MaxClients参数设置为120。那么最终可以连接到Apache服务器上的客户端数量为多少呢?注意,由于客户端的互联网连接请求是先通过Linux操作系统的,所以在Linux操作系统上的配置往往具有比较高的优先性。为此,当instance参数小于MaxClients参数时,以前者为准;当instance参数大于MaxClients参数时,以后者为准。故有时候客户端提示连接数量超过上限时,系统管理员往往需要同时检查这两个参数,才能够发现问题的真正原因。二是需要考虑在什么情况下需要启用这个限制。一般来说,如果HTTP服务器上的应用主要是在企业内部网络中应用,由于带宽比较理想,为此不需要设置这个限制。但是如果是面向互联网用户的,则往往需要设置这个限制。如企业部署了一个FTP服务器,供互联网的用户下载。由于其带宽是固定的,当下载的用户越多,其能够得到的下载速度也就越低。为此为了给已有连接的用户提供一个比较好的速率,往往就需要设置一个最多连接数。以免连接用户过多而影响下载的速率。
      建议二:允许每次连接可有无限制请求。
      如果是在Solaris Linux上部署Apache服务器的话,最好对这个参数进行设置。这个选项表示当客户端与服务器建立连接后,每个子进程在结束前所能接受的客户端请求上限。当达到这个上限值之后,这个子进程就会中断。这主要是为了避免某些子进程占用过多的服务器资源而导致服务器性能的下降。设置最多的连接数量选项主要用来限制客户端的连接数量;而每个客户端在同服务器进行连接的时候可以采用多个子进程与服务器进行连接。如FTP连接一个客户端默认情况下可以采用5个子进程进行连接。而这个客户端下载的总速率就是5个子进程的总合。故在部署Apache服务器的时候,就需要对这个选项进行限制。防止同一个客户端开启了比较多的进程,占用了大量的服务器硬件资源。
      不过需要注意的是,这个参数跟另外一个参数keepalive很相似,但是两者有很大的区别。KeepAlive顾名思义,主要是用来保证客户端与服务器之间的一个持续连接。如果Apache服务器主要用来做视频会议或者提供在线观看电影的话,则这个参数就很有价值。此时如果把这个参数设置为OFF的话,则客户端浏览器可能必须在包含多重组件的网页中,建立许多连接请求。并且在连接的过程中,每个组件都必须进行单独的连接。而这些额外的请求与连接会增加服务器的负担及网络带宽的损耗。
      在日常的配置中,往往是这个配置选项同时使用。如往往同时启用允许每次连接可有无限制请求KeepAlive选项,并设置可以连接的最大进程数。如此的话,既可以避免因为连接数过多而给服务器带来负担,同时又不会影响多次频繁的连接请求而给服务器带来的额外负担。
      建议三:合理配置超时时间。
      这个选项是指客户端提出连接请求并建立起连接后,最大的空闲时间。如果超过这个时间,客户端与服务器之间仍然没有进行任何的接收或者发送信息的动作,则就会中断这个连接。其实这个选项对于访问者来说是一把双刃剑。一方面限制无用的连接时间(客户端连接上服务器而没有进行任何的请求动作)可以减少带宽的浪费,可以保障其他访问者的带宽;但是另一方面这也比较容易引起客户端使用上的不方便。如访问者可能临时有事走开一会儿(如上了一趟厕所)客户端与服务器端的连接就会中断。客户端需要重新连接服务器,从而需要进行新一轮的连接请求、身份认证等等,这也会耗用服务器的资源与带宽。所以说,这个超时时间对于双方来说,都是有利又有弊。故系统管理员在配置这个选项的时候,需要进行评估,确定是否需要设置这个选项,并为此确定一个合理的超时时间。
      一般来说,如果设置了最大客户端连接数量的话,则最好同时配置这个超时时间。如服务器设置了最大的客户端连接数量为100个,而现在已经有100个客户端连接在Apache服务器上了。但是其中有20个客户端已经1个小时没有动作了。很有可能是其去吃饭或者其他原因忘记关闭网页,而没有中断与服务器的连接。此时这20个客户端的连接其实是一种浪费。此时如果设置了这个超时时间的话,如超过10分钟没有任何数据传送动作的话就自动关闭这个客户端的连接。很明显这可以提高这个连接点数的利用效率。
      另外在Apache服务器配置文件中,有一个KeepAliveTimeout参数,跟这个超时时间比较相似。这个参数主要用来设置客户端与服务器建立连接后,客户端提出两个请求之间的时间间隔。如果超过一定的时间间隔,客户端并没有再提出另外一个请求,则这个连接声明即中断。可见这两个选项的功能很类似,不过其中有一个很重要的区别。因为在客户端与服务器连接的时候大致分为两个阶段。第一个阶段为客户端提出连接但是服务器还没有响应;第二个阶段为客户端与服务器之间已经建立连接。前面这个参数的话适用这两个阶段中的任何一个阶段。而后面这个参数则只适合第二个阶段,即连接后的控制。在其他方面基本上没有区别。故在大部分情况下,这两个选项可以通用。总之,是否需要采用这个选项需要根据服务器的应用情况来定。作为系统管理员,需要在服务器性能与用户便利性之间取得一种平衡。这种平衡往往很难实现。需要系统管理员进行多次的测试、调整、用户意见反馈,最终才能够得到一个合理的答案。
      建议四:慎用允许持久性连接。
      在服务器性能调整选项卡中,有允许持久性连接这项内容。如果选中这项内容的话,就表示客户端与服务器之间的连接永远有效,除非客户端手工中断与服务器之间的连接(如关闭网页或者重新启动客户端)。如果把配置文件中的KeepAliveTimeout参数设置为Ture,也可以起到类似的效果。对于这个选项来说,系统管理员需要慎用。因为根据经验,一般用户不会主动去关闭网页。也就是说,不会主动去中断客户端与服务器端之间的连接。他们很可能会在用完电脑需要关机的时候才会中断这个连接。此时在服务器端虽然有很多客户端的连接数量,但是有不少可能都是死连接,在很长的一段时间内不会有数据的传送动作。这对于服务器来说,是一种性能上的浪费。为此笔者的意见是,宁可把用户与服务器之间的空闲时间设置的长一点,如2个小时甚至更久,也尽量不要采用持久性连接。

  • LR性能计数器小结

    2009-06-18 16:49:16

  • LR计数器基本知识小结

    2009-06-18 14:46:03

    1、page read/sec:是指为解析硬页错误而每秒读取磁盘的次数。当应用程序向内存请求页面时,如果系统在工作集、物理内存中的相应位置无法找到代码或对应的数据,就要从磁盘上进行检索,此时就会出现硬页错误问题,如果该值持续保持为5,表示可能内存不足。

    2、processor queue length:是指处理队的线程数,显示在由web服务器所有处理器共享的队列中等待执行的线程数

    3、%disk time:指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。正常为小于10的值,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。若数值持续超过80(此时处理器及网络连接并没有饱和),则可能是内存泄漏

    4、%processor time:指处理器执行非空闲线程占全部执行时间的百分比。是监视处理器活动的主要指示器

    此值过大,表示处理器的性能已经不能应付程序的要求,需要更换更快的处理器;若该值持续超过90%,则表示此服务器的负载对于目前的硬件过于沉重

    如果排除内存因素后,该计数器的值比较大,同时网卡和硬盘的值比较低,那么可以确定CPU为性能瓶颈

    5、%total processor:系统上所有处理器都忙于执行非空闲线程的平均时间的百分比,它反映了用于有用工作上的时间的比例,每个处理器将在空闲时被分配到一个空闲线程中,使用所有其他线程不使用的那些非工作时处理器周期

    6、pool nonpaged bytes:非分页池是指系统内存(操作系统使用的物理内存)中可供对象使用的一个区域,这些对象即使是在不使用时,也不允许写入磁盘,而且只要分配过就必须保留在物理内存中,分配后,始终位于主内存中

    非分页池中的字节数,非分页池中的字节数如果持续增高表示可能存在内存泄漏问题,需要进一步结合其他指标,如private bytes,来判断是否存在严重的内存泄漏还是其他原因引起的非分页池增加

     

     

     

  • LR指标基本知识小结

    2009-06-18 10:25:35

       近几天,工作不忙,学了些性能测试的知识,对于每个指标,通过看书和网上搜索资料,进行了更深入的理解,现总结如下,以便以后查看:

    一、web资源图

    1、点击率:客户端每秒向服务器发出的http请求数或服务器每秒处理的http请求数

    如果点击率下降,说明服务器的响应速度在变慢。

    可以这样理解:只有当客户端收到服务器的回应后,才会发出下一个请求,如果客户端在1s内就收到了服务器端的响应,那么等到1s后,它就会发出第二个请求,如果服务器的响应时间为3s,那第二个请求就要处于排队状态,只有当服务器返回响应时,客户端才会提交下个请求,就是说每秒发出多少http请求只跟服务器返回响应的速度有关。

    而随着时间的增加,系统受到的压力会随着点击的增加而增加,系统性能也会慢慢下降,比如:释放资源的速度开始变慢、换页开始频繁,这样就会导致服务器处理速度变慢,从而点击率可能就会下降。

    2、吞吐量:指客户端每秒从服务器获得的总数据量

    理解:直接反映的是服务器处理能力、服务器响应速度以及带宽问题。

    该曲线应该和点击率图相似。

    二、分解页面图

    1、DNS解析时间:DNS服务器解析IP地址的时间

    2、Connection:DNS服务器解析完IP地址后,浏览器请求被发送到web服务器,服务器和浏览器建立http链接的时间就是connection时间

    3、First Buffer:浏览器接收的从web服务器发出的第一个字节所经历的时间,由服务器响应时间和网络传输时间两部分组成

    4、Receive:从浏览器接收到第一个字节起,直到成功接收到最后一个字节,下载完成止,所经历的时间

    5、Client time:请求在客户端浏览器延迟的时间,可能是由于客户端浏览器的思考时间或者客户端其他方面引起的延迟

    6、Error time:从发送了一个http请求道web服务器发送回一个http错误信息所需要的时间

     

     

     

  • LR场景设计基本知识小结

    2009-06-17 12:21:18

    一、监视器配置信息路径
    Controller>>Monitor>>online graphs>>configure
    1、可以设置监视图的展示方式:条形图还是折线图
    2、可以设置监视图的刷新时间间隔
    3、可以设置获取图标数值的时间,比如获取场景执行完前60s的图标数据
    二、IP欺骗
    1、启动IP:开始>>程序>>LR>>Tools>>IP  Wizard,进行相应的设置
    2、Controller中生效IP:Controller>>Scenario>>Enable IP Spoofer
    3、Controller中设置IP:tools>>expert mode (先启用专家模式)
    Tools>>options>>general,根据Vuser的设置情况来配置IP地址的加载方式,一帮选择第二项:为每个线程分配不同的IP地址
    Scenario>>load generators,设置Vuser生成器,将虚拟IP地址都添加进去
    4、检验所设置的虚拟IP是否生效的方法:
    开始>>运行>>cmd>>ipconfig,就会看到所有生效的IP
    三、添加监视器:
    oracle、sitescope、J2EE等都需要安装客户端
    apache不需要安装客户端,但必须要对它的配置文件进行下修改

  • LR监控Linux和unix(转)

    2009-06-10 16:20:57

       我们在使用LR进行性能测试的时候,经常有需要监控OS的资源使用情况的需求。对于 Windows系统,这个工作进行起来很方便,直接在LR的资源监控窗口中添加需要被监控的机器名或IP即可,但对于Linux/Unix系统,则要稍微复杂一些,我在这里简单介绍一下如何在LR中监控Linux/Unix系统的资源使用情况:

      Linux

      对于Linux系统,要想通过LR监控Linux/Unix系统的资源使用情况,需要运行rstatd服务。如果OS没有安装rstatd(可以查找一下系统中是否存在rpc.rstatd这个文件,如果没有,则说明系统没有安装 rstatd),则需要进行安装。rstatd安装步骤如下:

      获得rstatd的安装介质(rstatd.tar.gz)。rstatd可以从 redhat的安装CD中获得,或者从网站上下载(给出一个下载地址,sourceforge的: //heanet.dl.sourceforge.net/sourceforge/rstatd)。

      将rstatd.tar.gz拷贝到Linux系统中,解压,赋予可执行权限,进入rpc.rstatd目录,依次执行如下命令:

      #./configure

      #make

      #make install

      结束后,运行./rpc.rstatd命令,启动服务。这个时候,你就可以在LR中监控Linux资源了。

      Unix

      对于Unix系统,比如Solaris,AIX或者HP UX等,它们的配置过程比较简单——在inetd.conf(在/etc目录下)文件中去掉rstatd前面的注释,然后启动rstatd服务即可。 
  • LR参数化

    2009-01-16 14:57:59

       在“Update Value on”文本框中可选择一种更新参数值的频率,指示Vuser何时更新参数值。有以下几个选项:

      ● Each Occurrence:在运行时,每遇到一次该参数,便会取一个新的值,该方法指示Vuser在每次参数出现时使用新值。当使用同一个参数的几个语句不相关时,该方法非常有用。例如,对于随机数据,在该参数每次出现时都使用新值可能是非常有用的。

      ● Each Iteration:运行时,在每一次循环中都取相同的值。该方法指示Vuser为每次脚本迭代使用新值。如果一个参数在脚本中出现了若干次,则Vuser为整个迭代中所有出现的该参数使用同一个值。当使用同一个参数的几个语句相关时,该方法非常有用。

      ● Once:运行时,在每次循环中,该参数只取一次值。该方法指示Vuser在方案运行期间仅对参数值更新一次。Vuser为所有出现的该参数和所有迭代使用同一个参数值。当使用日期和时间时,该类型可能会非常有用。

       更多LR教程见: 

    http://www.51testing.com/html/200901/n102756.html

     

  • WEB测试

    2008-09-11 11:49:06

    1. 功能测试
    1.1.链接测试
       链接是 Web 应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证 Web 应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的 URL 地址才能访问。
       链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个 Web 应用系统的所有页面开发完成之后进行链接测试。
    1.2. 表单测试
       当用户给 Web 应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。
    1.3.Cookies测试
    Cookies 通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用 Cookies 访问了某一个应用系统时, Web 服务器将发送关于用户的信息,把该信息以 Cookies 的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。
       如果 Web 应用系统使用了 Cookies ,就必须检查 Cookies 是否能正常工作。测试的内容可包括 Cookies 是否起作用,是否按预定的时间进行保存,刷新对 Cookies 有什么影响等。
    1.4.设计语言测试
    Web 设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的 HTML 等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了 HTML 的版本问题外,不同的脚本语言,例如 Java 、 Javascrīpt 、 ActiveX 、 VBscrīpt 或 Perl 等也要进行验证。
    1.5.数据库测试
       在 Web 应用技术中,数据库起着重要的作用,数据库为 Web 应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在 Web 应用中,最常用的数据库类型是关系型数据库,可以使用 SQL 对信息进行处理。

    在使用了数据库的 Web 应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。
    2. 性能测试
    2.1.连接速度测试
       用户连接到 Web 应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果 Web 系统响应时间太长(例如超过 5 秒钟),用户就会因没有耐心等待而离开。
       另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
    2.2.负载测试
       负载测试是为了测量 Web 系统在某一负载级别上的性能,以保证 Web 系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问 Web 系统的用户数量,也可以是在线数据处理的数量。例如: Web 应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象? Web 应用系统能否处理大量用户对同一个页面的请求?
    2.3.压力测试
      负载测试应该安排在 Web 系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个 Web 系统能同时处理的请求数量将远远超出这个限度,所以,只有放在 Internet 上,接受负载测试,其结果才是正确可信的。
       进行压力测试是指实际破坏一个 Web 应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试 Web 应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到 Web 应用系统崩溃,接着当系统重新启动时获得存取权。
       压力测试的区域包括表单、登陆和其他信息传输页面等。
    3. 可用性测试
    3.1.导航测试
       导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个 Web 应用系统是否易于导航:导航是否直观? Web 系统的主要部分是否可通过主页存取? Web 系统是否需要站点地图、搜索引擎或其他的导航帮助?
       在一个页面上放太多的信息往往起到与预期相反的效果。 Web 应用系统的用户趋向于目的驱动,很快地扫描一个 Web 应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉 Web 应用系统的结构,因此, Web 应用系统导航帮助要尽可能地准确。
       导航的另一个重要方面是 Web 应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道 Web 应用系统里面是否还有内容,内容在什么地方。
    Web 应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。
    3.2.图形测试
       在 Web 应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个 Web 应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:
       ( 1 )要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。 Web 应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。
       ( 2 )验证所有页面字体的风格是否一致。
       ( 3 )背景颜色应该与字体颜色和前景颜色相搭配。
       ( 4 )图片的大小和质量也是一个很重要的因素,一般采用 JPG 或 GIF 压缩。
    3.3.内容测试
       内容测试用来检验 Web 应用系统提供信息的正确性、准确性和相关性。
       信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用 Microsoft Word 的 " 拼音与语法检查 " 功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般 Web 站点中的所谓 " 相关文章列表 " 。
    3.4.整体界面测试
       整体界面是指整个 Web 应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览 Web 应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个 Web 应用系统的设计风格是否一致?
    对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般 Web 应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。
       对所有的可用性测试来说,都需要有外部人员(与 Web 应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。
    4. 客户端兼容性测试
    4.1.平台测试
       市场上有很多不同的操作系统类型,最常见的有 Windows 、 Unix 、 Macintosh 、 Linux 等。 Web 应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。
       因此,在 Web 系统发布之前,需要在各种操作系统下对 Web 系统进行兼容性测试。
    4.2.浏览器测试
       浏览器是 Web 客户端最核心的构件,来自不同厂商的浏览器对 Java ,、 Javascrīpt 、 ActiveX 、 plug-ins 或不同的 HTML 规格有不同的支持。例如, ActiveX 是 Microsoft 的产品,是为 Internet Explorer 而设计的, Javascrīpt 是 Netscape 的产品, Java 是 Sun 的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和 Java 的设置也不一样。
       测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。
    5. 安全性测试
    Web 应用系统的安全性测试区域主要有:
       ( 1 )现在的 Web 应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。
       ( 2 ) Web 应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如 15 分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
       ( 3 )为了保证 Web 应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。
       ( 4 )当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。
       ( 5 )服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。
    6. 总结
       本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于 Web 的系统测试方法。
    基于 Web 的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战。基于 Web 的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。

  • 性能测试类型分析(转)

    2008-09-08 16:53:08

    感觉看后豁然开朗,所以就转过来了,以便以后的学习。

    性能测试(Performance Testing)
    原文摘要:性能测试方法是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生成性能要求。即在特定的运行条件下验证系统的能力状况。
    个人理解:主要强调在固定的软硬件环境、确定的测试业务场景下,其主要意义是获得系统的性能指标。

    负载测试(Load Testing)
    原文摘要:在给定的测试环境下,通过在被测系统上不断增加压力,直到性能指标超过预定指标或某种资源使用已经达到饱和状态,目的是了解系统性能容量和处理能力极限。负载测试的主要用途是发现系统性能的拐点,寻找系统能够支持的最大用户、业务等处理能力的约束。
    个人理解:也可以理解为扩展性测试(Scalability Testing),即在固定测试环境,在其它测试角度(负载方面)不变的情况下,变化一个测试角度并持续增加压力,查看系统的性能曲线和处理极限,以及是否有性能瓶颈存在(拐点)。主要意义是从多个不同的测试角度去探测分析系统的性能变化情况,配合性能调优。测试角度可以是并发用户数、业务量、数据量等不同方面的负载。

    压力测试(Stress Testing)
    原文摘要:测试系统在一定饱和状态下系统能够处理的会话能力,以及是否出现错误,一般用于稳定性测试。
    个人理解:可以理解为资源的极限测试。测试关注在资源处于饱和或超负荷的情况下,系统能否正常运行,是一种在极端压力下的稳定性测试。其主要意义是通过测试调优保证系统即使在极端的压力情况下也不会出错甚至系统崩溃。
    网友补充:压力测试的目的是调查系统在其资源超负荷的情况下的表现,尤其是对系统的处理时间有什么影响。这类测试在一种需要反常数量、频率或资源的方式下执行系统。目标是通过极限测试方法,发现系统在极限或恶劣环境中自我保护能力。主要验证系统的可靠性。

    配置测试(Configuration Testing)
    原文摘要:通过对被测系统的软硬件环境的调整,了解各种不同环境对性能影响的程度,从而找到系统各项资源的最有分配原则。
    个人理解:主要用于性能调优,在经过测试获得了基准测试数据后,进行环境调整(包括硬件配置、网络、操作系统、应用服务器、
    数据库等),再将测试结果与基准数据进行对比,判断调整是否达到最佳状态。

    并发测试(Concurrency Testing)
    原文摘要:模拟并发访问,测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题。
    个人理解:测试目的并非为了获得性能指标,而是为了发现并发引起的问题。

    可靠性测试(Reliability Testing)
    原文摘要:通过给系统加载一定的业务压力的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行。
    个人理解:需要和压力测试区分开,两者的测试环境和测试目的不一样。压力测试强调在资源极限情况下系统是否出错,可靠性测试强调在 一定的业务压力下长时间(如24×7)运行系统,关注系统的运行情况(如资源使用率是否逐渐增加、响应是否是否越来越慢),是否有不稳定征兆。

Open Toolbar