越来越觉得自己走测试这条路是对的,越来越觉得自己适合做测试,这么久以来兴趣一直在激发我前进,一直在寻找下一个站点,我相信测试路上我一定会走的很远,我的测试道路一定会很宽阔,努力就有收获,也希望还在测试路口迷惘的朋友,不要再犹豫了,因为你的犹豫不决,会使你错过很多~~~~~喜欢就去just do it ,因为只有尝试了才知道自己适不适合,喜不喜欢。如果一味的问别人,永远找不到最终的答案。因为每个人的感觉不一样,每个人的情况不一样,每个人的前提条件都不一样,你会得到不同的答案,这样只能会使你更迷茫~~~~

发布新日志

  • 性能测试监控工具nmon安装及使用方法

    2015-11-02 17:03:16

    1、概述$^'eJgnO$g| G0

    {:T"^:O6nh6F"}/K)nLB @0  监控,在检查系统问题或优化系统性能工作上是一个不可缺少的部分。通过操作系统监控工具监视操作系统资源的使用情况,间接地反映了各服务器程序的运行情况。根据运行结果分析可以帮助我们快速定位系统问题范围或者性能瓶颈点。

    AK,{.l$i!z9A051Testing软件测试网$w IoixY?

      nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果。51Testing软件测试网&Rx.? M&o"IO

    51Testing软件测试网3b`%t ] Pb J@n|L

      nmon所记录的数据包含以下一些方面(也是我们在寻找问题过程中所关注的资源点):51Testing软件测试网!Sc2D:dfM

    TG A&qe5p7Au0  ● cpu占用率51Testing软件测试网Q)E [,t'd gH\QxO,d

    e*ID}XD0  ● 内存使用情况51Testing软件测试网xz p+~,?

    A%VIw9Glp z D*z0  ● 磁盘I/O速度、传输和读写比率51Testing软件测试网&]'v;w1N{u H

    ;K+@ }-~x.t;iL&T!n0  ● 文件系统的使用率51Testing软件测试网3^:h0k7^7g,e&mY!aO

    51Testing软件测试网2il)F#{5HB _

      ● 网络I/O速度、传输和读写比率、错误统计率与传输包的大小

    Np4\B}?-@GgY0

    /og)Tr0a:["f,U0  ● 消耗资源最多的进程

    (iq%I S:DG`wz051Testing软件测试网%~}m2O3Y k8p

      ● 计算机详细信息和资源

    g X ~`Bj051Testing软件测试网K7\cXf#e(j~My

      ● 页面空间和页面I/O速度51Testing软件测试网:gRBsBh

    51Testing软件测试网&|?T+SdA*V#g(R

      ● 用户自定义的磁盘组51Testing软件测试网:wy2M(?!Mrj5?$^

    4v n)A2VkB[:I0  ● 网络文件系统51Testing软件测试网? ?0E+U"pWyE z

    51Testing软件测试网&Daj;[3J;K-O.k#a8_A

      另外在AIX操作系统上,nmon还能监控到其他的一些信息,如异步I/O等。51Testing软件测试网#f!~6OR.]4fCE

    51Testing软件测试网'nXj7d;r]#O

      2、下载安装nmon51Testing软件测试网T*fi;YQL`

    A,UyEhQ!p~0  如何获取nmon呢?我们可以在IBM的官方网站上免费下载获取,下载网址为:http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmon。

    4b8|]f\W051Testing软件测试网/E0s/J*UkX2H

      nmon的安装步骤如下:

    \ `I:eJGHh0

    ;E*w k4\C-v1It0  1)用root用户登录到系统中;51Testing软件测试网UM*Jw'e x:{t'H

    t&j YhVZ \o0  2)建目录:#mkdir /test;

    @s8Kf S7aA051Testing软件测试网 U b2@B+pi(~E

      3)把nmon用ftp上传到/test,或者通过其他介质拷贝到/test目录中;51Testing软件测试网h^C3Jd.ZyHk/P{

    cQ3OBX8x S2[Jd0  4)执行授权命令:#chmod +x nmon。

    RM QS LC t1c;?5a051Testing软件测试网$a9UXl8U'Rk

      3、nmon数据采集

    &Zz4u5qceR0

    )HnR qpS^Wb0  3.1 数据采集

    n3@qfM7b0

    vma W,KR"Fd0  为了实时监控系统在一段时间内的使用情况并将结果记录下来,我们可以通过运行以下命令实现:51Testing软件测试网4s3fM8fX _n

    h}R pZJ"x0  #./ nmon -f -t -s 30 -c 18051Testing软件测试网2Oy9_#a7x XH

    )^7?n3n[(?;D)ms0  n -f:按标准格式输出文件:<hostname>_YYYYMMDD_HHMM.nmon;51Testing软件测试网 s0`_e#^_El!e

    51Testing软件测试网0{Y.T M9I\G

      n -t:输出中包括占用率较高的进程;

    -R Q\w0Q1w1u051Testing软件测试网{~0V;b/n O"bk

      n -s 30:每30秒进行一次数据采集51Testing软件测试网-En xZy!V0mm9AT

    51Testing软件测试网MX!ei r*Q p4y/c R

      n -c 180:一共采集180次51Testing软件测试网*M| j'K*@3\

    -ZenZ#_ z*Q/J$x0  输入命令回车后,将自动在当前目录生成一个hostname_timeSeries.nmon的文件,如果hosname为test1,生产的文件为:test1_090308_1313.nmon。51Testing软件测试网#yg mok1i8J,D,R;b

    51Testing软件测试网1w`0rYwO bn_

    'QQ @U&P]q0  通过sort命令可以将nmon结果文件转换为csv文件:51Testing软件测试网D ^ a3B+m\

    51Testing软件测试网`T\N4R?I

      # sort -A test1_090308_1313.nmon > test1_090308_1313.csv51Testing软件测试网(r&^P HE4O*{

    51Testing软件测试网rL"U@G2X'w

      执行完sort命令后即可在当前目录生产test1_090308_1313.csv文件。51Testing软件测试网Z$lW0EW(m

    51Testing软件测试网r{ Uxx

      3.2 生成图形化结果51Testing软件测试网/B0hLq ad.kKs

    51Testing软件测试网L o9L$^ZQ+j:Z

      为了分析nmon监控获得的结果,IBM还提供了相应的图形化分析工具nmon_analyser,通过nmon analyser.xls工具可以把监控的结果文件转换成excel文件,方便分析系统的各项资源占用情况。51Testing软件测试网'T clhe5a%R

    51Testing软件测试网 xK;k!C)U7_

      nmon analyser.xls工具的使用方法如下:51Testing软件测试网3T*WU} b\"u9R

    51Testing软件测试网0aucV'x6[)n!d

      (1)打开nmon analyser.xls工具;

    0N*g!O6{8nx$^4~v051Testing软件测试网"LM%Ye'A{4?zZ_l{

      (2)调整excel宏安全性:工具-宏-安全性

    9@g-sk%l2E4D0

    ^6A J|@ `4W]^0  (修改安全级别与可靠发行商)51Testing软件测试网q&^4XqWy,\ KM

    Qrx(A-p] n ]0  (选择)安全级别:低51Testing软件测试网S4k+R_IP){"c

    51Testing软件测试网k8]-}CRM

      (勾上)信任所有安装的加载项和模板

    Wy X2j,O.B-LNW0

    ,n GWhVMn0b0  (勾上)信任对于“Visual Baisc项目”的访问

    uz)yy]_%vr:\3z051Testing软件测试网TO2lH v8^d `h

      (3)修改完后,确定-关闭nmon analyser.xls,重新打开;

    xx8IoGu%~"HK0

    1[| M2~}0  (4)点击Analyse nmon data按钮,加载之前下载的test1_090308_1313.csv文件。

    "`d v~6_nK"M051Testing软件测试网`R0^!U z bR }

      以下是分析结果的截图:

    3vp7}1L*Y:QY!xr0

    5|d&X [ ]/vFX0

      以上就是nmon的简单描述与使用介绍,大家可以根据自己所采集到的结果分析系统的情况。

  • File类型中Unique参数选择类型的详解

    2011-09-09 12:20:15

    MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在LoadRunner中进行参数化时,Parameter的取值设置有以下相关参数:
           
    取值方式:
    Sequence
    :顺序
    Random
    :随机
    Unique
    :唯一
           
    改变(更新)取值的时机:l
    Each Iteration
    :每次迭代
    Each Occurrence
    :每次出现
    Once
    :只改变一次

    (在此,我只讨论Unique的参数设置,其他相关参数会在其他文章中详谈)
    当我们取值方式选为Unique/更新取值时机选为Each Iteration时,还有一个选项可设置,那就是:allocate Vuser values in the controller:它有两个选项:1automatically allocate block size;2allocate _____values for each Vuser. 因为我们选择了每次迭代更新取值的方式,所以可以指定是由系统自动分配Vuser的参数值数量,还是人为指定为每个Vuser分配的参数值数量。

    我们以某网站登录功能为例来做分析:
    先来看一下登录界面:
    登录
    用户名:        {T_name}
    密码:
            {Pwd}
    确认密码:
            {Pwd}
    登录        取消


    一、我们选择由系统自动分配Vuser参数值数量的选项,即勾选automatically allocate block size

    1
            首先我们准备一些登陆用的数据,包括用户名,密码

    编号        用户名:        密码:
    1        T_username01        Pwd01
    2        T_username02        Pwd02
    3        T_username03        Pwd03
    4        T_username04        Pwd04
    5        T_username05        Pwd05

    2
            分析user的参数值列表、Vuser数和迭代次数的关系:
    首先确定我们是使用Vuser虚拟多个用户通过调用多个user的参数值来实现模拟操作动作的,那一个Vuser使用的user参数值的多少就会和Iteration迭代的次数有直接关系。好,我们来看下面这个分析表:

    解释格式:(以1*22*23*1为例)
                   
    以分号分割,表示不同的Vuser:共3Vuser
                   
    第一位数字表示Vuser的编号:3*1表示第3
    Vuser
                   
    第二位数字表示分配得到的user参数值的数量:1*2表示第一个Vuser得到2user参数值

    User
    参数值的数量
    (以5个为例)        迭代次数        最大允许Vuser        最大Vuser数量下的分配情况
    5        1        5        1*1
    2*13*14*15*1
    5        2        3        1*2
    2*2
    3*1
    5        3        2        1*3
    2*2
    5        4        2        1*4
    2*1
    5        5        1        1*5

    同样的分析方法,我们刚刚分析的最大允许Vuser数量,实际你可以取小于它的值,比如:

    User
    参数值的数量
    (以5个为例)        迭代次数        最大允许Vuser        最大Vuser数量下的分配情况
    5        2        2        1*2
    2*2
    注:比较和上表中的第二行数据,会发现:当我的每一个Vuser满足了自己的迭代次数,且参数数量够分配时,剩下的未用的1个参数就被忽略了

    (当user参数值数量小于迭代次数时,具体的分配方式和另一个选项有关:1、中止;2、循环Vuser分配到的列表;3、只循环最后一个列表项;这部分内容放到文章最下面 ^_^ ,现在可以默认选在2上)

    同样,我们可以分析一下10User参数值的时候
    User
    参数值的数量
    (以5个为例)        迭代次数        最大允许Vuser        最大Vuser数量下的分配情况
    10        1        10        1*1
    2*13*14*15*16*17*18*19*110*1
    10        2        5        1*2
    2*23*24*2
    5*2
    10        3        4        1*3
    2*33*3
    4*1
    10        4        3        1*4
    2*4
    3*2
    10        5        2        1*5
    2*5
    10        6        2        1*6
    2*4
    10        7        2        1*7
    2*3
    10        8        2        1*8
    2*2
    10        9        2        1*9
    2*1
    10        10        1        1*10

    由此,我们可以推导出有关User参数值数量、迭代次数和最大允许Vuser数的数学公式:

    令:        User参数值数量——ParamNum
                   
    迭代次数
    ————IteraNum
                   
    最大允许Vuser
    ——MaxVuser
    则公式如下:

           
    ParamNum%IteraNum=0               l MaxVuser= ParamNum/IteraNum        
           
    ParamNum%IteraNum=0         l
          MaxVuser= ParamNum/IteraNum+1

    二、我们选择人为分配Vuser参数值数量的选项,即勾选allocate _____values for each Vuser.并在空格中填入数量(我们以2为例来分析)


    这种方式要比上面的分析方法简单些。
    1
            还是用上面user的参数值列表为例
    2
            分析user的参数值列表、Vuser数和迭代次数的关系:
    User
    参数值的数量

    (以5个为例)        迭代次数        Vuser的分配情况
    5        1        1*2
    2*23*1
    5        2        1*2
    2*2
    3*1
    5        3        1*2
    2*2
    3*1
    5        4        1*2
    2*2
    3*1
    5        5        1*2
    2*2
    3*1
    当最后一个Vuser分配到的参数列表数量不够迭代次数时,那它分配到几个就用当前的几个参数进行迭代。

    三、最后一个相关选项:
     
    l       When out of values:
    1
            中止:
    abort Vuser
    2
            循环Vuser分配到的列表

    3
            只循环最后一个列表项

    1
    、现在我们假设选定2
    比如迭代3次时:
    假设Vuser1得到的参数值为:T_username01T_username02
    那么迭代结果:T_username01T_username02
    T_username01
    迭代4次结果:T_username01T_username02 T_username01
    T_username02
    3
            现在我们选定3

    同样的迭代3次时:
    假设Vuser1得到的参数值为:T_username01T_username02
    那么迭代结果:T_username01T_username02
    T_username02
    迭代4次结果:T_username01T_username02 T_username02T_username02

  • 小强老师,LoadRunner视频讲座。

    2011-08-31 11:05:31

    0 性能测试常见用语http://www.boobooke.com/v/bbk1577
    1 lr目录分析http://www.boobooke.com/v/bbk1574
    2.1 lr界面分析http://www.boobooke.com/v/bbk1735
    2.2 lr界面分析http://www.boobooke.com/v/bbk1736
    2.3 lr界面分析http://www.boobooke.com/v/bbk1737
    3 lr常用术语http://www.boobooke.com/v/bbk1620
    4 hp web tours 分析http://www.boobooke.com/v/bbk1762
    5 lr录制测试脚本http://www.boobooke.com/v/bbk1763
    6 lr回放测试脚本http://www.boobooke.com/v/bbk1764
    7 HTML和URL比较http://www.boobooke.com/v/bbk1771
    8 lr自动关联http://www.boobooke.com/v/bbk1778
    9 lr测试脚本的增强方法http://www.boobooke.com/v/bbk1772
    10 run time settings: http://www.boobooke.com/v/bbk1782
    11 lr脚本编写实践过程http://www.boobooke.com/v/bbk1781
    12 错误处理http://www.boobooke.com/v/bbk1776
    13 脚本调试http://www.boobooke.com/v/bbk1777
    14 java虚拟用户http://www.boobooke.com/v/bbk1901
    15 调用dll:http://www.boobooke.com/v/bbk1900
    16 lr录制sql脚本http://www.boobooke.com/v/bbk1526
    17 创建负载测试场景http://www.boobooke.com/v/bbk2145
    18 面向目标的场景http://www.boobooke.com/v/bbk2168
    19 分析场景http://www.boobooke.com/v/bbk2144
    20 lr手动关联http://www.boobooke.com/v/bbk2161
    21 配置端口映射http://www.boobooke.com/v/bbk2163
    22 性能分析基础知识http://www.boobooke.com/v/bbk2162
    23 LR使用指南-第一部分基础知识完结篇http://www.boobooke.com/v/bbk2201
  • loadrunner视频

    2011-08-26 15:35:54

    小布老师视频:
    测试工具概述,兼LoadRunner介绍 -1-4
    http://www.boobooke.com/v/bbk1046
    http://www.boobooke.com/v/bbk1046.zip
    http://www.boobooke.com/v/bbk1047
    http://www.boobooke.com/v/bbk1047.zip
    http://www.boobooke.com/v/bbk1048
    http://www.boobooke.com/v/bbk1048.zip
    http://www.boobooke.com/v/bbk1055
    http://www.boobooke.com/v/bbk1055.zip
    LR系列培训视频  - LoadRunner概述(上下)
    http://www.boobooke.com/v/bbk1059
    http://www.boobooke.com/v/bbk1059.zip
    http://www.boobooke.com/v/bbk1060
    http://www.boobooke.com/v/bbk1060.zip
    LR系列培训视频  - LoadRunner安装
    http://www.boobooke.com/v/bbk1061
    http://www.boobooke.com/v/bbk1061.zip
    LR系列培训视频  - 录制和回放测试脚本(1-3)
    http://www.boobooke.com/v/bbk1063
    http://www.boobooke.com/v/bbk1063.zip
    http://www.boobooke.com/v/bbk1064
    http://www.boobooke.com/v/bbk1064.zip
    http://www.boobooke.com/v/bbk1065
    http://www.boobooke.com/v/bbk1065.zip
    LR系列培训视频 - LoadRunner测试Tuxedo应用系统 1-4
    http://www.boobooke.com/v/bbk1067
    http://www.boobooke.com/v/bbk1067.zip
    http://www.boobooke.com/v/bbk1068
    http://www.boobooke.com/v/bbk1068.zip
    http://www.boobooke.com/v/bbk1071
    http://www.boobooke.com/v/bbk1071.zip
    http://www.boobooke.com/v/bbk1072
    http://www.boobooke.com/v/bbk1072.zip
    开源性能测试工具Curl-Loader快速实战 - 1
    http://www.boobooke.com/v/bbk1808
    http://www.boobooke.com/v/bbk1808.zip
    开源性能测试工具Curl-Loader快速实战 - 2
    http://www.boobooke.com/v/bbk1809
    http://www.boobooke.com/v/bbk1809.zip
    开源性能测试工具Curl-Loader快速实战 - 3
    http://www.boobooke.com/v/bbk1835
    http://www.boobooke.com/v/bbk1835.zip
    开源性能测试工具Curl-Loader快速实战 - 4
    http://www.boobooke.com/v/bbk1836
    http://www.boobooke.com/v/bbk1836.zip
    使用LoadRunner测试Oracle实例研究 - 1
    http://www.boobooke.com/v/bbk2159
    http://www.boobooke.com/v/bbk2159.zip
    使用LoadRunner测试Oracle实例研究 - 2
    http://www.boobooke.com/v/bbk2170
    http://www.boobooke.com/v/bbk2170.zip
    使用LoadRunner测试Oracle实例研究 - 3
    http://www.boobooke.com/v/bbk2171
    http://www.boobooke.com/v/bbk2171.zip
  • Loadrunner脚本录制常见问题整理

    2011-08-26 15:27:07

    1.LoadRunner录制脚本时为什么不弹出IE浏览器?

      当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决。

      启动浏览器,打开Internet选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展(需要重启动)”的勾选,然后再次运行VuGen即可解决问题

      提示:通常安装Firefox等浏览器后,都会勾选上面得选项,导致不能正常录制。因此建议运行LoadRunner得主机上保持一个干净的测试环境。

      2.录制Web脚本时,生成的脚本中存在乱码该如何解决?

      录制脚本前,打开录制选项配置对话框Record-Options,进入到Advanced标签,先勾选“Support charset”,然后选择中支持UTF-8。再次录制,就不会出现中文乱码问题了。

      3.HTML-based script与URL-based script的脚本有什么区别?

      使用“HTML-based script”的模式录制脚本,VuGen为用户的每个HTML操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-based script”模式录制脚本时,VuGen可以捕获所有作为用户操作结果而发送到服务器的HTTP请求,然后为用户的每个请求分别生成对应方法。

      通常,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。

      4.为什么脚本中添加了检查方法Web-find,但是脚本回放时却没有执行?

      由于检查点功能会耗费一定的资源,因此LoadRunner默认关闭了对文本及图像的检查。要想开启检查功能,必须修改运行时的配置Run-time Setting。

      进入“Run-time Setting”对话框,依次进入“Internet Protocol→Preferences”,勾选Checks下的“Enable Image and text check”选项即可。

      检查执行结果时推荐使用web_reg_find方法。

      5.运行时的Pacing设置主要影响什么?

      Pacing主要用来设置重复迭代脚本的间隔时间。共有三种方法:上次迭代结束后立刻开始、上次迭代结束后等待固定时间、按固定或随机的时间间隔开始执行新的迭代。

      根据实际需要设置迭代即可。通常,没有时间间隔会产生更大的压力。

      6.运行时设置Log标签中,如果没有勾选“Enable logging”,则手工消息可以发送吗?

      Enable logging选项仅影响自动日志记录和通过lr_log_message发送的消息。即使没有勾选,虚拟用户脚本中如果使用lr_message、lr_output_message、lr_error_message,仍然会记录其发出的消息。

      7.LoadRunner 8.0版本的VuGen在录制Web Services协议的脚本时一切正常,而回放时报出错误提示“Error:server returned an incorrectly formatted SOAP response”。这时说明原因引起的?

      造成这种情况的主要原因是LoadRunner 8.0的VuGen在录制Web Service协议的脚本时存在一个缺陷:如果服务器的操作系统是中文的,VuGen会自动将WSDL文件的头改为,因此会有上面的错误提示。

      解决方法:把“LR80WebservicesFPI_setup.exe”和“lrunner_web_sevices_path_1.exe”两个补丁打上即可解决。

      8.VuGen支持Netscape的客户证书吗?

      不支持。目前的VuGen 8.0版本中仅支持Internet Explorer的客户端证书。录制脚本时可以先从Netscape中导出所需的证书,然后将其导入到Internet Explorer中,并确保以相同的顺序导出和导入这些证书。而且,在每台将要录制或运行需要证书的Web Vuser脚本的计算机上都要重复执行前面的过程。

      9.VuGen会修改录制浏览器中的代理服务器设置吗?

      会修改。在开始录制基于浏览器的Web Vuser脚本时,VuGen首先会启动指定的浏览器。然后,VuGen会指示浏览器访问VuGen代理服务器。为此,VuGen会修改录制浏览器上的代理服务器设置。默认情况下,VuGen会立即将代理服务器设置更改为Localhost:7777。录制之后,VuGen会将原始代理服务器设置还原到该录制浏览器中。因此,在VuGen进行录制的过程中,不可以更改代理服务器设置,否则将无法正常进行。

      10.在LoadRunner脚本如何输出当前系统时间?

      LoadRunner提供了char *ctime(const time_t *time)函数,调用参数为一个Long型的整数指针,用于存放返回时间的数值表示。

      调用语句与返回值如下示例:

      typedef long time_t;

      Action()

      {

      time_t t;

      lr_message(“Time in seconds since 1/1/70: %ld\n”,time(&t));

      lr_message(“System time and date: %s”,ctime(&t));

      }

      输出结果为:

      Time in seconds since 1/1/70: 1185329968

      System time and date:Wed Jul 25 10:19:28 2007

      11.一些Web虚拟用户脚本录制后立刻回放没有任何问题,但是当设置迭代次数大于1时,如果进行回放则只能成功迭代一次。为什么从第二次迭代开始发生错误?

      这种现象多是由于在“Run-time Setting”的“Browse Emulation”的设置中,勾选了“Simulate a new user on each iteration”及其下面的选项“Clear cache on each iteration”这两个选项的含义是每次迭代时模拟一个新的用户及每次迭代时清除缓存。

      由于脚本迭代时,init和end只能执行一次,如果每次迭代都模拟一个新的用户并清除缓存,则用户登录信息将一并清除,因此迭代时可能会发生错误。

      12.虚拟客户脚本“Run-time Setting”中的线程和进程运行方式的区别?

      如果选择“Run Vuser as a process”,则场景运行时会为每一个虚拟用户创建一个进程;选择“Run Vuser as a thread”则将每个虚拟用户作为一个线程来运行,在任务管理器中只看到一个mmdrv.exe,这种方式的运行效率更高,能造成更大的压力,时默认选项。

      另外,如果启用了IP欺骗功能,则先在Controller中选中Tools菜单下的“Expert Mode”,然后将Tools菜单下的“Options>General”标签页中的IP地址分配方式也设置为与Vuser运行方式一致,同为线程或进程方式。

      13.在Controller中运行Web相关测试场景时,经常会有很多超时错误提示,如何处理这类问题?

      这主要有脚本的默认超时设置引起。当回放Web脚本时,有时候由于服务器响应时间较长,会产生超时的错误。这时需要修改脚本的运行时配置。

      进入“Run-time Setting”对话框后,依次进入“Internet Protocol→Preference”。然后点击“Options…”按钮,进入高级设置对话框,可以修改各类超时设置的默认值。

      14.为什么Windows系统中的CPU、内存等资源仍然充足,但是模拟的用户数量却上不去?

      在Windows计算机的标准设置下,操作系统的默认限制只能使用几百个Vuser,这个限制与CPU或内存无关,主要是操作系统本身规定了默认的最大线程数所导致。要想突破Windows这个限制,须修改Windows注册表。以Windows XP Professional为例。

      (1)打开注册表后,进入注册表项HKEY_LOCAL_MACHINE中的下列关键字:System\CurrentControlSet\Control\Session Manager\SubSystems。

      (2)找到Windows关键字,Windows关键字如下所示:

      %SystemRoot%\system32\csrss.exe bjectDirectory=\Windows

      SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1

      ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2

      ProfileControl=Off MaxRequestThreads=16

      SharedSection=1024,3072,512关键字的格式为xxxx,yyyy,zzz。其中,xxxx定义了系统范围堆的最大值(以KB为单位),yyyy定义每个桌面堆得大小。

      (3)将yyyy的设置从3072更改为8192(即8MB),增加SharedSection参数值。

      通过对注册表的更改,系统将允许运行更多的线程,因而可以在计算机上运行更多的Vuser。这意味着能够模拟的最大并发用户数量将不受Windows操作系统的限制,而只受硬件和内部可伸缩性限制的约束。

     

      录制脚本为空
     
      LR录制是客户端与服务器的数据交互,只有在有交互的时候才可以录制到脚本。
     
      1. 交互方式不一样,通过客户端的server进行交互,在scrīpt中选择最后一个track processes created as COM local servers  [选择scrīpt里的最后一个选项]. 2. 非客户端与服务器的交互的一种操作,在页面上点前进或后退,如果页面是从缓存中取出来的,那么也就没有和服务器数据交互,所以也录制的为空脚本。   [windows注册表中禁用缓存]. 3. 协议选择错误,b/s不一定走http协议,还可能是https(http+ssl)。   [最基础的错误].录制出错。
     
      1.  选择internet里选项里的连接里的局域网设置的代理不能选,因为LR在录制的时候会动态选择。
      2.  网页里的恶意代码,检测的时候响应LR录制脚本[用工具检测恶意代码,然后卸载恶意代码,eg:Ad_Aweare].

      3. 防病毒软件和防火墙,在录制时暂时关闭。
      4. 因为LR自身原因报错或者有些脚本不能录制下来[录制是最好选用scrīpt view,此时会报错,但能写下脚本,是因为LR无法解析,可以手工修改,而tree view 就直接停止了。
     
      Loadrunner不支持默认的浏览器
     
      有时候,我们上网的时候,不小心会将某个浏览器设置为默认的浏览器,而我们不知道,这个时候,我们用loadrunner进行录制的时候,会提示loadrunner不支持系统设置的默认的浏览器,因此,需要我们重新选择浏览器,我们可以利用Reconding optiom中的Browser选项设置支持的浏览器,我们还可以利用下面的方法,将IE设置为默认的浏览器,因为loadrunner是支持IE的。设置方法如下:
     
      在IE“工具(T)”菜单→“Interner选项”→“程序”选项卡里,确保“检查Internet Explorer是否为默认的浏览器”选项打上√。然后在你启动IE时,如果IE非默认浏览器就会出现提示窗是否把IE设置为默认。

  • LoadRunner对不同协议的选择

    2011-05-03 17:34:47

    【IT168 技术文档】以前使用Loadrunner只选择过web(Http/Html),但其实协议多种多样。在B/S结构的网站多种业务的特点需要选择不同的协议,耿电在给我们就介绍了用过的不同的协议。协议如何选择呢,寻找了相关资料。

      LoadRunner首先是一个测试工具,其次是一个性能测试工具,然后是该工具是一个基于协议,也就是说LoadRunner测试的对象都需要使用通信协议,对于那些不使用通信协议仅仅进行本地处理的软件例如Microsoft Word,LoadRunner就不适用。说到通信协议我们来熟悉一下协议的分层,按照OSI的分层模型,分层结构如下:

      LoadRunner对不同协议的选择

      按照TCP/IP协议的分层,分层结构如下:

      LoadRunner对不同协议的选择

      第一个分层是由OSI制定但不实用,后一个是目前广泛使用且被业界认做既定标准的协议分层,下文探讨的LoadRunner协议选择即按TCP/IP协议的分层模型讨论。

      接着来说说LoadRunnerVuGen中的协议分类,VuGen(LR8.1)中的协议分类如下表所示:

      LoadRunner对不同协议的选择

      LoadRunner VuGen中的协议与文章开头所说的通信协议还是有一定的区别的,例如像LoadRunner VuGen中的C 模板、Visual Basic 模板、Java 模板、Javascript. 和 VBScript. 类型的脚本均为开发语言,非通信协议。

      一般来说协议选择有如下原则:

      B/S结构,选择WEB(Http/Html)协议;

      C/S结构,可以根据后端数据库的类型来选择,如SybaseCTLib协议用于测试后台的数据库为Sybase的应用;MSSQLServer协议用与测试后台数据库为SQL Server的应用;

      对于有些使用纯JAVA编写的C/S结构的东东,采用JAVA,而且不能录制只能手工编写代码(工作量和难度还是有的)。同样不能录制的还包括C、VB Script、VB、VBNet User协议。

      对于一些没有数据库的Windows应用,可选用Windows Sockets底层协议;使用了数据库但使用的是ODBC连接的数据则选择ODBC协议;对于Windows Sockets协议来说,最适合的那些基于Socket开发的应用程序;但是由于网络通讯的底层都是基于Socket的,因此几乎所有的应用程序都能够通过Socket来录制,哪可能有人会问,哪既然Socket都能录制下来,还要那么多协议做什么,价格还贼贵,其实最主要的原因就是Socket录制的代码可读性较差,如果Socket的脚本可读性较高的话,实话就没有其他协议出现的必要性了。

      对于邮件来说,首先要看你收邮件的途径,如果你通过WEB页面收发邮件,毫无疑问,你选择协议时就需要选择HTTP协议,如果你通过邮件客户端,像OutLook、FoxMail之类的,则需要根据操作不同选择不同的协议了,例如发邮件你可能要选择SMTP、收邮件你可能需要选择POP3。

      Telnet、SSH选择RTE协议(SSH不知道是不是,有待考证)。

  • 快速认识loadrunner

    2011-04-08 10:34:40

        -------------------------------------------本文转自网络

       LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。

      对象

       LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner能支持广泛的协议和技术,为您的特殊环境提供特殊的解决方案。

    主要功能

    轻松创建虚拟用户

      使用LoadRunner的Virtual User Generator,您能很简便地创立起系统负载。该引擎能

      

    LoadRunner

    够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,您可以在Windows ,UNIX 或Linux 机器上同时产生成千上万个用户访问。所以LoadRunner能极大的减少负载测试所需的硬件和人力资源。

      用Virtual User Generator 建立测试脚本后,您可以对其进行参数化操作,这一操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。

      为了进一步确定您的Virtual user 能够模拟真实用户,您可利用LoadRunner控制某些行为特性。例如,只需要点击一下鼠标,您就能轻易控制交易的数量,交易频率,用户的思考时间和连接速度等。

    创建真实的负载

      Virtual users 建立起后,您需要设定您的负载方案,业务流程组合和虚拟用户数量。用LoadRunner的Controller,您能很快组织起多用户的测试方案。Controller 的Rendezvous 功能提供一个互动的环境,在其中您既能建立起持续且循环的负载,又能管理和驱动负载测试方案。

      而且,您可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载。这样,您就能将测试过程自动化。同样您还可以用Controller 来限定您的负载方案,在这个方案中所有的用户同时执行一个动作---如登陆到一个库存应用程序----来模拟峰值负载的情况。另外,您还能监测系统架构中各个组件的性能---- 包括服务器,数据库,网络设备等----来帮助客户决定系统的配置。

    定位性能问题

      LoadRunner内含集成的实时监测器,在负载测试过程的任何时候,您都可以观察到应用系统的运行性能。这些性能监测器为您实时显示交易性能数据(如响应时间)和其它系统组件包括application server, web server,网路设备和数据库等的实时性能。这样,您就可以在测试过程中从客户和服务器的双方面评估这些系统组件的运行性能,从而更快地发现问题。

      利用LoadRunner的ContentCheck TM ,您可以判断负载下的应用程序功能正常与否。ContentCheck 在Virtual users 运行时,检测应用程序的网络数据包内容,从中确定是否有错误内容传送出去。它的实时浏览器帮助您从终端用户角度观察程序性能状况。

    分析结果以精确定位问题所在

      一旦测试完毕后,LoadRunner收集汇总所有的测试数据,并提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用LoadRunner的Web 交易细节监测器,您可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。例如,这个交易细节分析机制能

      够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造成应用系统运行速度减慢。另外,Web 交易细节监测器分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找真正出错的组件。例如,您可以将网络延时进行分解,以判断DNS 解析时间,连接服务器或SSL 认证所花费的时间。通过使用LoadRunner的分析工具,您能很快地查找到出错的位置和原因并作出相应的调整。

    重复测试保证系统发布的高性能

      负载测试是一个重复过程。每次处理完一个出错情况,您都需要对您的应用程序在相同的方案下,再进行一次负载测试。以此检验您所做的修正是否改善了运行性能。

      LoadRunner完全支持EJB 的负载测试。这些基于Java 的组件运行在应用服务器上,提供广泛的应用服务。通过测试这些组件,您可以在应用程序开发的早期就确认并解决可能产生的问题。

      利用LoadRunner, 您可以很方便地了解系统的性能。 它的Controller 允许您重复执行与出错修改前相同的测试方案。它的基于HTML 的报告为您提供一个比较性能结果所需的基准,以此衡量在一段时间内,有多大程度的改进并确保应用成功。由于这些报告是基于HTML 的文本,您可以将其公布于您公司的内部网上,便于随时查阅。

      接下来的文章编者就将辑录一篇网上的使用LoadRunner&reg;来测试BEA中间件产品文章来与大家分享如何使用LoadRunner进行实际的性能测试

    性能测试

    1. LoadRunner的虚拟用户

      LoadRunner使用虚拟用户(Virtual users)来模拟实际用户对业务系统施加压力。虚拟用户在一个中央控制器(controller station)的监视下工作。 

      在做一个测试方案时,要做的第一件事就是创建虚拟用户执行脚本。LoadRunner提供了Virtual User Generator来录制或编辑虚拟用户脚本。

      2. 使用Vugen创建虚拟用户执行脚本

      A.从菜单中选择运行Virtual User Generator:

      B.创建一个单协议脚本,选择协议类型为"Tuxedo 7"

      C.在弹出的窗口中输入Tuxedo客户机程序的可执行文件名(SimpApp.exe),并选择"Record into Action"为Action。

      点击"OK"开始录制脚本,这时Vugen就会启动Simpapp.exe,如下图所示,输入WSNADDR,输入字符串(Tuxedo is powerful!)之后,点击TOUPPER,TUXEDO服务器完成请求后把输出字符串(TUXEDO IS POWERFUL!)写到"Output string"中,点击停止录制按钮。

      D.编辑Vuser脚本。在C中做的所有操作都被录了下来,记录到一个脚本文件中,其内容如下,把它存为simpapp。

      脚本内容如下:

      #include "lrt.h"

      #include "replay.vdf"

      Actions()

      {

      lrt_tuxputenv("WSNADDR=//172.22.32.25:7110");

      lr_think_time(3);

      tpresult_int = lrt_tpinitialize(LRT_END_OF_PARMS);

      lrt_abort_on_error();

      data_0 = lrt_tpalloc("STRING", "", 1);

      lrt_strcpy(data_0, sbuf_1);

      data_1 = lrt_tpalloc("STRING", "", 1);

      tpresult_int = lrt_tpcall("TOUPPER", data_0, 0, &data_1, &olen, 0);

      lrt_abort_on_error();

      lrt_tpfree(data_0);

      lrt_tpfree(data_1);

      lrt_tpterm();

      return 0;

      }

      代码中加粗的函数是LoadRunner对TUXEDO函数的二次包装。

      E.点击工具栏中的"执行"按钮来执行我们刚才录制的脚本,确保执行无误。

      3. 使用控制器(Controller)来调度虚拟用户

      A.从菜单中选择运行Controller:

      B.创建一个新的Scenario,选择刚才录制的脚本(simpapp):

      点击"OK",弹出Scenario调度界面。在"Quantity"中输入100,表示使用100个虚拟用户。(虚拟用户与购买的LICENSE有关联)

      C.点击"Edit Schedule"来编辑压力调度。

      D.选择"Runtime settings"来作运行时设置。

      在Pacing的设置中,"Number of Iterations"用于设置Vusers的Actions被执行的次数;"Start new iteration"用于设置调度器在什么时机迭代执行Vusers的Actions。

      "Think Time"用于设置Vusers的反应和思考时间,以尽量做到和正常人一样来施压。"Ignore think time"表示忽略思考时间,这是理想状态,一般不使用。"As recorded"表示按照录制时的实际操作时间。"Multiply recorded think time by"表示Vusers的思考时间是实际录制时间的若干倍。

      在"Miscellaneous"中设置一些杂项,如使用进程还是使用线程等。对于TUXEDO,好象只能选进程模式。

      E.选择"Start scenario"来开始本次压力测试调度。

      执行结果分析如下:

      施压时间为5分41秒,Vusers数量为100,一共完成的Actions交易数量为5625笔,平均响应时间为5.561秒,TPS为17.8。[1]

    LoadRunner组件
    1、VuGen虚拟用户生成器) 用于捕获最终用户业务流程和创建自动性能测试脚本 (也称为虚拟用户脚本)。
      2、Controller 控制器)用于组织、驱动、管理和监控负载测试。
      3、Load Generator负载生成器用于通过运行虚拟用户生成负载。
      4、Analysis 分析器)有助于您查看、分析和比较性能结果。
    实例应用
    软件测试工具中如何巧用LoadRunner的随机函数
      LoadRunner有自带的随机函数,如果巧妙的加以采用,能解决一些看似很困难的实际问题。
      一个项目的性能测试。与数据库直连,根据外部传入的SQL ID和SQL参数,从指定数据库中读取SQL模版,拼装成真实的SQL语句、执行,并将得到的结果放入缓存中。目的是减少数据库的压力。
      该系统将支撑大量的SQL操作,性能自然成为备受关注的焦点之一。
      由于它跟SQL语句相关,在真实环境下,同一时间可能执行着不同类型的SQL,即便是同一类型,其参数也各式各样。那么,怎样才能模拟出最符合实际情况的性能测试场景呢?
      首先设计场景,即,在LoadRunner中按照比例随机取到某一类型的SQL,再随机传入参数给它,让最终的每条SQL都是随机生成,各不相同。
      从场景中,可以看到,此处涉及双重随机。只采用loadruner的参数设置是无法实现的。此时需要想办法先按设定好的比例随机取到SQL,然后在每条SQL上随机取参数列表中的参数。
      于是想到了loadrunner的随机函数。先实现随机取SQL ID,之后再在特定的SQL中随机取参数列表中的参数。
      LoadRunner中,随机函数是rand(),它用来产生0到rand_max之间的随机整数。函数原型是
      int rand ( void );
      然而调用rand之前,必须给随机数产生一个随机种子。这个种子由srand()函数产生。其原型是
      int srand ( seedTime );
      采用上述两个函数,就能实现第一重随机了。具体脚本代码如下:
      
    //generate rand number
      int rNum = 0;
      srand(time(NULL));
      rNum = rand() % 10;
      lr_output_message(”the number is :%d”,rNum); //print the current random number
      生成随机数后,再按比例用if … else … 来取到各种类型的SQL,并给它们传参。具体脚本代码如下:
      //get certain SQL and random value
      if (rNum>=0 && rNum<2) {
      web_url(”test”, “URL=http://host_name:8080/interface?sqlId=sqlid_name2&value={random_para2} “,
      ”Resource=0″,
      ”RecContentType=text/html”,
      ”Referer=”,
      ”Snapshot=tn.inf”,
      “Mode=HTTP”,
      LAST);
      }
      …
      else if(rNum>=8 && rNum<10){
      web_url(”test”, “URL=http://host_name:8080/interface?sqlId=sqlid_name2&value={random_para2} “,
      ”Resource=0″,
      ”RecContentType=text/html”,
      ”Referer=”,
      ”Snapshot=tn.inf”,
      “Mode=HTTP”,
      LAST);
      }
      else {
      rNum = 0;
      lr_output_message(”the number is :%d”,rNum);
      }
     注:sqlid_name是SQL ID名称;random_para是通过file方式实现的随机参数;tn是web_url函数的快照名称。
      通过上面的脚本,实现了性能测试设计的场景。调试通过后,放入Controller中执行。实际执行过程中,Vuser将会按比例随机取到不同类型的SQL,并随机取到SQL中的参数,执行特定的SQL语句。
      巧用LoadRunner的随机函数,能解决不少实际问题。[2]
      用LoadRunner分析资源占用率
      
      

    LoadRunner

    1. 平均事务响应时间
      Average Transation Response Time 优秀:<2s
      良好:2-5s
      及格:6-10s
      不及格:>10s
      2. 每秒点击率
      Hits per Second
      当增大系统的压力(或增加并发用户数)时,吞吐率和TPS的变化曲线呈大体一致,则系统基本稳定若压力增大时,吞吐率的曲线增加到一定程度后出现变化缓慢,甚至平坦,很可能是网络出现带宽瓶颈.同理若点击率/TPS曲线出现变化缓慢或者平坦,说明服务器开始出现.
      3. 请求响应时间
      Time to Last Byte
      4. 每秒系统处理事务数
      Transaction per second
      5. 吞吐量
      Throughout
      6. CPU利用率
      Processor / %Processor Time 好:70%
      坏:85%
      很差:90%+
      7. 数据库操作消耗的CPU时间
      Processor / %User Time 如果该值较大,可以考虑是否能通过友好算法等方法降低这个值。如果该服务器是数据库服务器, Processor\%User Time 值大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。
      8. 核心态CPU平均利用率
      Processor /%Privileged Time 如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统
      9. 处理列队中的线程数
      Processor / Processor Queue Length 如果该值保持不变(>=2)个并且%Processor Time 超过90%,那么可能存在处理器瓶颈。如果发现超过2,而处理器的利用率却一直很低,那么或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈。
      10. 文件系统缓存
      Memory / Cache Bytes 50%的可用物理内存
      11. 剩余的可用内存
      Memory / Avaiable Mbytes 至少要有10% 的物理内存值
      12. 每秒下载页数
      Memory / pages/sec 好:无页交换
      坏:CPU每秒10个页交换
      很差:更多的页交换
      13. 页面读取操作速率
      Memory / page read/sec 如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足
      14. 物理磁盘利用率
      Physical Disk / %Disk Time 好:<30%
      坏:<40%
      很差:<50%+
      15. 物理磁盘平均磁盘I/O队列长度
      Physical Disk / Avg.Disk Queue Length 该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘
      16. 网络吞吐量
      Network Interface / Bytes Total/sec 判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽,结果应该小于50%
      17. 数据高速缓存区命中率 命中率应大于0.90最好
      18. 共享区库缓存区命中率 命中率应大于0.99
      19. 监控 SGA 中字典缓冲区的命中率 命中率应大于0.85
      20. 检测回滚段的争用 小于1%
      21. 监控 SGA 中重做日志缓存区的命中率
      应该小于1%
      22. 监控内存和硬盘的排序比率 最好使它小于 10%[3]
    安装
    LoadRunner 分为Windows 版本和Unix 版本。如果所有测试环境基于Windows平台,那么只要安装Windows 版本即可。
      LoadRunner的Unix版本仅提供Load Generator组件的安装(即LoadRunner中的负载生成器)。也就是说,这个负载生成器可以在Unix环境下安装和运行,并提供给Controller进行远程管理。但是,脚本的录制和场景的设计必须在Windows平台完成。
      系统要求
      
    运行LoadRunner,内存最好在128M 以上,LoadRunner7.8 的最低要求。 内存最好在512M 以上,安装LoadRunner 的磁盘空间至少剩余500M。操作系统最好为Windows 2000。
Open Toolbar