发布新日志

  • Wap2.0业务与应用测试

    2010-11-22 15:06:21

    业务特点:
    1.利用W3C开发标准,采用XHTML和CSS作为WML2.0的一部分,以减少为不同终端开发应用和操作内容的创建和测试时间
    2.利用IETF传输层TCP/IP规范、会话层HTTP/1.1规范
    3.增强无线环境中特有的安全性能,支持WAP20 部分的TLS1.0,SSL3.0的连接
    4.业务环境中增强了用户体验部分。支持SyncML协议,同时支持wsp和http连接;MMS信息服务;改善稳定的存储界面,如终端信息管理,接入存储和获取;增加Provision通用工具,管理网络覆盖下的移动终端,且支持Pictogram允许一些小图片的传输;增强了应用(信任)服务器向终端push个性化消息内容的应用;内容开发商通过UAprofile可自动识别终端基本参数性能,提高人性化程度;应用服务环境内先进的电话服务功能(WTA),当用户进行数据业务浏览时可方便拨出电话或应答来电,并为用户操作界面提供业务控制功能
    应用测试:1.Wap2.0业务测试:测试网关与终端是否符合规范的业务功能和设备基本功能,以及不同Wap网关和各类终端互通性和兼容性
    2.Wap2.0平台测试:测试平台业务功能和平台系统设备功能。平台业务功能主要包括浏览、下载、Push、MMS、预配置、用户代理定制、WTA等;平台系统设备功能主要包括用户认证、缓存功能、字符集转换、Cookie、PPG、用户管理和系统管理等
    3.Wap2.0终端测试:测试终端业务功能和终端设备功能,以及终端性能和稳定性。终端业务功能主要包括浏览器基本功能和操作、标记语言的支持、书签、编码、媒体格式、保存和Cookie功能等。稳定性方面测试重点关注在业务叠加的场景下进行的测试

  • lr9.5破解

    2010-11-22 14:57:26

    1、用LR8.0中的mlr5lprg.dll、lm70.dll覆盖LR11安装目录下“bin”文件夹中的对应文件

    2、手动修改注册表,删除下面内容(不删除的话,在添加licence时,会提示“License security violation……”):

    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\History]

    "AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"=""

    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\PermanentLicense]

    @="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"

    "last"="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\TemporaryLicense]

    @="AEBGEBFS-AKEKEKEKE-KAUCA"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{87B3ADD4-21EB-11d5-93EF-00105AA0FD2D}]

    @="IControl"

    3、添加下面的licence,即可使用。

    golba-100: AEAMAUIK-YAFEKEKJJKEEA-BCJGI

    web-10000: AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB

     

    遇到的问题:在step2中,不知道从哪查找注册表,呵呵。后来在GYF指导下,在运行里输入regedit,进入注册表编辑器界面,手动查找到相关注册信息。

    另上传附件LR8.0中的mlr5lprg.dll、lm70.dll,供直接安装9.5版本的同行使用。

  • 功能测试用例

    2010-09-02 11:38:20

    设计功能和界面测试用例
    /RQr;e6M-h$w86711
    {/e#vI!W!o$dS86711
    %c5z'T}0o0Q"?q867111.1 文本框、按钮等控件测试
    4X{Y4p`b86711
    JXE4ZWL2u867111.1.1 文本框的测试
    5s DC9bb3F)C8671151testing软件测试博客v%J4c a;e)HoS
    如何对文本框进行测试
    |x d3X#f,@8671151testing软件测试博客5R2Q c[0kgy&R
     a,输入正常的字母或数字。
    Z-F.JgnJg)X-`\8a86711 b,输入已存在的文件的名称;
    "rV7`1s_?Q+Bjh86711 c,输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入 256个字符,检查程序能否正确处理;51testing软件测试博客,Xy sUG
     d,输入默认值,空白,空格;
    'Z_GSP3jV:\86711 e,若只允许输入字母,尝试输入数字;反之;尝试输入字母;
    ,zl5^'Gh~86711 f,利用复制,粘贴等操作强制输入程序不允许的输入数据;
    2Koh!J(K:LEj rLh86711 g,输入特殊字符集,例如,NUL及\n等;
    o1U:jQ5xK/ld86711 h,输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示;51testing软件测试博客@^ csojb
     i,输入不符合格式的数据,检查程序是否正常校验,如,程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示
    gUB~*s%dLU86711
    j9L7VF*FZ{:O3~86711在测试过程中所用到的测试方法51testing软件测试博客&| c7g!_7G M)IHG$R
    51testing软件测试博客"J\i!E1\
     1,输入非法数据;
    ?$g5Zb9K'C v86711 2,输入默认值;51testing软件测试博客M}(B$v TD
     3,输入特殊字符集;51testing软件测试博客7M9E/L'Ae5qb
     4,输入使缓冲区溢出的数据;
    I S MyZ*t86711 5,输入相同的文件名;51testing软件测试博客^5pZ7V ?Et| h#i
    命令按钮控件的测试51testing软件测试博客C Hy6K$[_ Sq

    !L]0d NO`Ym~86711测试方法:
    y ?$l,^:R+Y3s\+uJ86711
    &GbA+`0d|Y8q~86711 a,点击按钮正确响应操作。如,单击确定,正确执行操作;单击取消,退出窗口;51testing软件测试博客l.n"hN~ c
     b,对非法的输入或操作给出足够的提示说明,如,输入月工作天数为32时,单击”确定“后系统应提示:天数不能大于31;
    2];t0nUD!EBv86711 c,对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会;
    )x1o J.T%gQ b86711单选按钮控件的测试
    6Z |QXPR!b86711
    -v%_^I1P6`qv ?G86711测试方法:51testing软件测试博客 j)_M/`P_I

    \#K:nv;K"NEE86711 a,一组单选按钮不能同时选中,只能选中一个。51testing软件测试博客4z2}6d![9zk)@/Y
     b,逐一执行每个单选按钮的功能。分别选择了“男”“女”后,保存到数据库的数据应该相应的分别为“男”“女”;51testing软件测试博客9U uI*R g7_D:F
     c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空;
    'tau_st2M86711up-down控件文本框的测试
    4Dh3YfJr8671151testing软件测试博客S4o/?4H8J N1u
    测试方法:51testing软件测试博客(z-b\*R.g%F;et6y
    51testing软件测试博客|'JMYL/UlP!QJJJ
     a,直接输入数字或用上下箭头控制,如,在“数目”中直接输入10,或者单击向上的箭头,使数目变为10;51testing软件测试博客2UX T n.Bh#L,o7a3lu
     b,利用上下箭头控制数字的自动循环,如,当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用;
    vZx5t ehA\Uvrc86711 c,直接输入超边界值,系统应该提示重新输入;51testing软件测试博客+z5]4^9z\C-Eo
     d,输入默认值,空白。如,“插入”数目为默认值,点击“确定”;或,删除默认值,使内容为空,单击“确定”进行测试;51testing软件测试博客7S,L"fT8O} a
     e,输入字符。此时系统应提示输入有误。
    sakH1`86711组合列表框的测试
    u FvO'KY8mz8671151testing软件测试博客C7@c*TN.]$GH
    测试方法:51testing软件测试博客f&G.iU&sR,}5x5Lb

    4xP/S u1g,N5F/WM86711 a,条目内容正确,其详细条目内容可以根据需求说明确定;51testing软件测试博客7\ waC,^
     b,逐一执行列表框中每个条目的功能;51testing软件测试博客)KzT'J^ b
     c,检查能否向组合列表框输入数据;
    9a.\!g(wt H%os86711复选框的测试51testing软件测试博客P qW+j(\(d

    UX {oP86711测试方法:51testing软件测试博客``+Xp4l(X

    T^3LWZ`1u/n\i86711 a,多个复选框可以被同时选中;
    ,h Nc_d;{h86711 b,多个复选框可以被部分选中;51testing软件测试博客|qAe-^)k
     c,多个复选框可以都不被选中;
    -z#Zl^l86711 d,逐一执行每个复选框的功能;
    ZH&Z#TI mu2ffF0e8r86711列表框控件的测试
    8w]*JY \Q2CV86711
    Tc5j cn(^;}AJ86711测试方法:51testing软件测试博客5@9]?(e*O!cG

    |5n3J*@B86711 a,条目内容正确;同组合列表框类似,根据需求说明书确定列表的各项内容正确,没有丢失或错误;51testing软件测试博客.p(V0\e]p
     b,列表框的内容较多时要使用滚动条;51testing软件测试博客;i4Dq9|S%Jzq
     c,列表框允许多选时,要分别检查shift选中条目,按ctrl选中条目和直接用鼠标选中多项条目的情况;
    OTd5E6b'j0z86711滚动条控件的测试51testing软件测试博客0^0f O)X SWf,e
    51testing软件测试博客"r { j#L6N5Q
    要注意一下几点:51testing软件测试博客hCk7O4WQ

    y ^j?$D] R86711 a,滚动条的长度根据显示信息的长度或宽度及时变换,这样有利于用户了解显示信息的位置和百分比,如,word中浏览100页文档,浏览到50页时,滚动条位置应处于中间;51testing软件测试博客|?,Tn'U ~ j!C
     b,拖动滚动条,检查屏幕刷新情况,并查看是否有乱码;
    w2g` Ku1C-e)wT86711 c,单击滚动条;
    ${sWtV(lOR86711 d,用滚轮控制滚动条;51testing软件测试博客,\&bs+t7|(O\
     e,滚动条的上下按钮。51testing软件测试博客'U:L-q3?'y x5?+bQ
    各种控件在窗体中混和使用时的测试
    O+J3X3M0M$CS W8671151testing软件测试博客Ls`;CX`2dS*v(n
     a,控件间的相互作用;51testing软件测试博客 T8N5\BO2bela
     b,tab键的顺序,一般是从上到下,从左到右;
    X I"I;C"k%QHu86711 c,热键的使用,逐一测试;
    2{.O` TJe5`86711 d,enter键和esc键的使用;51testing软件测试博客9a*@Uy-c|1|
    在测试中,应遵循由简入繁的原则,先进行单个控件功能的测试,确保实现无误后,再进行多个控件的的功能组合的测试。
    -aE"d#NS*A3V"Ap e86711
    %EO `t;k86711ps:密码输入框测试时要特别注意进行字母大写输入的测试。51testing软件测试博客d0EC8^IUe,hq%s

    ~+x)jj,u:H86711查找替换操作
    #HDt*SI6Q86711 案例演示:打开word中的"替换"对话框
    ^aW3`5u1u,i2lM86711 测试本功能有通过测试和失败测试两种情况
    0|o9fDY["w86711 通过测试:
    ^7Z k0Gt8[6rS*``;W86711
    a7ACT4i&xg86711 1,输入内容直接查找,或查找全部51testing软件测试博客 at;B*q T/q&]
     2,在组合框中寻找已经查找过的内容,再次查找并确认文档的内容正确,如,已经查找过"测试用例",再次进入不用重新输入查找内容,直接在文档中搜寻就可以.
    t-haX%v86711
    }ea1V&I OZQ86711失败测试:
    n,f)[-l$CW6x86711 1,输入过长或过短的查询字符串.如,假设查询的字符串长度为1到255,那么输入0,1,2,256,255和254进行测试;51testing软件测试博客'Sb FY%Q!|Z2FiD r
     2,输入特殊字符集,如,在word中.^g代表图片,^代表分栏符,可以输入这类特殊字符测试;51testing软件测试博客 r2wVByt#t5`
    51testing软件测试博客'G+v#NUb.m9w,||+Q
    替换测试大体相同.
    t6T*}"Pa;T5V86711 关于编辑操作窗口的功能测试的用例:
    6_2sP'Kf#Iq8W86711 1,关闭查找替换窗口.不执行任何操作,直接退出;
    -h%|b j;V\86711 2,附件和选项测试.假如,设定"精确搜寻","向后"搜索等附件选项等等来测试;51testing软件测试博客'h)oC$k_ f([lD
     3,控件间的相互作用.如,搜寻内容为空时,按钮"搜寻全部","搜寻","全部替换","替换"都为灰色.
    q)vCu!]A~#K^86711 4,热键, Tab键.回车键的使用.51testing软件测试博客yXR uMd`
    51testing软件测试博客'E,ow v P
    插入操作51testing软件测试博客:[vNd/{$U z4s.FD&x
     1,插入文件
    3hG&B&y A%hI86711 测试的情况
    ^;}!B'He86711 a,插入文件;51testing软件测试博客"_ JyeK)p%F:[
     b,插入图像;51testing软件测试博客/^H to8t7R
     c,在文档中插入文档本身;51testing软件测试博客7c5D'H%F P zz?2P._
     d,移除插入的源文件;51testing软件测试博客0j2JZsF2U\R R k#s
     e,更换插入的源文件的内容;
    Vz5frNI-m]86711
    ap~e?fh {P&c867112,链接文件
    Cp;UP3a*k"Xk M]86711 测试方法:51testing软件测试博客*JI'fg/Lk4Xg
     a,插入链接文件;51testing软件测试博客/i.T}#g'`R"gtz LS
     b,在文档中链接文档本身;51testing软件测试博客*s+`5vL.Iw,H9Q9Y`a
     c,移除插入的源文件;
    ay q1xlW/aZ#U86711 d,更换插入的源文件的内容.
    6ZVf(saiIPV#VL86711
    3StVJ(^867113,插入对象
    3V+]LlPP'g.o|86711 要测试的内容51testing软件测试博客)F%H.Y`'z@c&S E{
     a,插入程序允许的对象,如,在word中插入excel工作表;51testing软件测试博客 S"{0pxp}`,R
     b,修改所插入对象的内容.插入的对象仍能正确显示;
    {]*q-KBE~R86711 c,卸载生成插入对象的程序,如,在word中插入excel工作表后卸载excel,工作表仍正常使用.
    ]Wz2H2KN*I5B+P~"h,`8671151testing软件测试博客-Pm-E,i#`:?
    编辑操作51testing软件测试博客!EJ8Z0y6ku
     编辑操作包括剪切,复制,粘贴操作.51testing软件测试博客ZuqD3nOZ4G|
    51testing软件测试博客n6O7S3boedG
    测试剪切操作的方法
    G[;MH'z!tO86711 a,对文本,文本框,图文框进行剪切;51testing软件测试博客L+ew4}h
     b,剪切图像
    /l;d g ked9MVO86711 c,文本图像混合剪切
    m{"E c"U+n1QG86711 复制操作方法与剪切类似.
    5WA:v ccfM;d&J86711
    \h.hiv+@x J+w4I86711测试时,主要是对粘贴操作的测试,方法是:
    T:qx(t3YW]}86711 a,粘贴剪切的文本,文本框及图文框;
    XOtEQcL9C86711 b,粘贴所剪切的图像;
    bOo#HN86711 c,剪切后,在不同的程序中粘贴51testing软件测试博客c,? mv)Q p a.F8`-DB
     d,多次粘贴同一内容,如,剪切后,在程序中连续粘贴3次;
    O[w'uO}&e8qZQ86711 e,利用粘贴操作强制输入程序所不允许输入的数据.51testing软件测试博客a+_ pV?R3\V#L

    &jW:Z,ZqD86711界面测试用例的设计方法51testing软件测试博客(u7}j!U|J
     1,窗体51testing软件测试博客0]+~1^K?P1b!GR]:P
     测试窗体的方法:51testing软件测试博客-[?#[&\!z0h)o
     a,窗体大小,大小要合适,控件布局合理;51testing软件测试博客nk5q wUK1\+O
     b,移动窗体.快速或慢速移动窗体,背景及窗体本身刷新必须正确;
    |Z]p#Q;ac^;L86711 c,缩放窗体,窗体上的控件应随窗体的大小变化而变化;
    9Owy}K%~l86711 d,显示分辨率.必须在不同的分辨率的情况下测试程序的显示是否正常;
    S:I [S/F86711 进行测试时还要注意状态栏是否显示正确;工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确,无错别字,且明确等等;
    B pw ARz86711
    F4hJ8@.tt867112,控件51testing软件测试博客:kN)[M'S;[b$L
     测试方法:51testing软件测试博客r#f8a$I^m Z
     a,窗体或控件的字体和大小要一致;51testing软件测试博客 l.U'q n+MC+?+V$C"X
     b,注意全角,半角混合51testing软件测试博客7r?ZY5qKm \.\U8i
     c,无中英文混合.51testing软件测试博客 F4E?4h;zo#TM

    5W.HZ Cf2]k-V_:Z86711菜单
    $ZEsKdW8671151testing软件测试博客/lo'c#M0X f(ec]|)t
    进行测试时要注意
    e v:jny.}&j/p+H86711 a,选择菜单是否可以正常工作,并与实际执行内容一致;
    vIuxersn,k86711 b,是否有错别字:51testing软件测试博客.[P-c6s3O
     c,快捷键是否重复;51testing软件测试博客!Y"\]c7@ E%v
     d,热键是否重复;
    '_t;c9[myJq/p86711 e,快捷键与热键操作是否有效
    s#C0{!F2GxC86711 f,是否存在中英文混合51testing软件测试博客FGUy+?8LDsR
     g,菜单要与语境相关,如,不同权限的用户登陆一个应用程序,不同级别的用户可以看到不同级别的菜单并使用不同级别的功能;
    #p3_2?,~_0` ~.V^:E0i86711 h,鼠标右键快捷菜单51testing软件测试博客xk%X5o?$]a;`)^t

    ;NE_6DHD-R&_86711特殊属性51testing软件测试博客eF*ii:}8q7|@4y0p8S
     1,安装界面应有公司介绍或产品介绍,有公司的图标51testing软件测试博客@zu$^1?gb(S9{*X
     2,主界面及大多数界面最好有公司图标51testing软件测试博客$V OG9It+b"^
     3,选择"帮助"->"关于"命令,应 看见相关版权和产品信息

  • LoadRunner函数中文翻译1

    2010-07-30 09:54:51

    LoadRunner函数中文翻译1

    LoadRunner函数中文翻译系列之一--Action

    web_url
    语法:
            Int Web_url(const char *name, const char * url, <Lists of Attributes>, [EXTRARES,<Lists of Resource Attributes>,LAST)

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            Name:VuGen中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。

            url:页面url地址。

            List of Attributes

            EXTRARES:分隔符,标记下一个参数是资源属性的列表了。

            List of Resource Attributes

            LAST:属性列表结束的标记符。

    说明
            Web_url根据函数中的URL属性加载对应的URL,不需要上下文。

            只有VuGen处于URL-based或者HTML-based(此时A script. containing explicit URLs only选项被选中时)的录制模式时,web_url才会被录制到。

            可以使用web_url 模拟从FTP服务器上下载文件。web_url 函数会使FTP服务器执行文件被真实下载时的操作。除非手工指定了"FtpAscii=1",下载会以二进制模式完成。

            在录制选项中,Toos—Recording Option下,Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源,只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            通过修改HTTP头可以传递给服务器一些附加的请求信息。使用HTTP头允许请求中包含其他的内容类型(Content_type),象压缩文件一样。还可以只请求特定状态下的web页面。

            所有的Web Vusers ,HTTP模式下的WAP Vusers或者回放模式下的Wireless Session Protocol(WSP),都支持web_url函数。

    web_image
    语法:
            Int web_image (const char *StepName, <List of Attributes>, [EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            StepName:VuGen中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。

            List of Attributes(服务器端和客户端映射的图片):SRC属性是一定会被录制到的,其他的ALT、Frame、TargetFrame、Ordinal则是有的话会被录制到。

    1、ALT:描述图象的元素。用鼠标指向图象时,所浮出来的文字提示。

    2、SRC:描述图象的元素,可以是图象的文件名. 如: button.gif。也可以使用SRC/SFX来指定图象路径的后缀。所有拥有相同此后缀的字符串都会被匹配到。

    3、Frame:录制操作时所在的Frame的名称。

    4、TargetFrame:见List of Attributes的同名参数。

    5、Ordinal:参见Web_link的同名参数。

            List of Attributes(客户端映射的图片):

    1、AreaAlt:鼠标单击区域的ALT属性。

    2、AreaOrdinal:鼠标单击区域的顺序号。

    3、MapName:图象的映射名。

            List of Attributes(服务器端映射的图片):尽管点击坐标不属于属性,但还是以属性的格式来使用。

    1、Xcoord:点击图象时的X坐标。

    2、Ycoord:点击图象时的Y坐标。

            EXTRARES:分隔符,标记下一个参数是资源属性的列表了。

            List of Resource Attributes:参见List of Resource Attributes一节。

            LAST:属性列表结束的标记符。

    说明
            web_image模拟鼠标在指定图片上的单击动作。此函数必须在有前置操作的上下文中使用。

            在Toos—Recording Option,如果录制级别设为基于HMTL的录制方式时,web_image才会被录制到。

            web_image支持客户端(client-side)和服务器端server-side的图片映射。

            在录制选项中,Toos—Recording Option下,Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源,只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            通过修改HTTP头可以传递给服务器一些请求附加信息。使用HTTP头允许请求中包含内容,如同压缩文件一样。还可以只请求特定状态的web页面。

            web_image支持Web虚拟用户,不支持WAP虚拟用户。

    例子
            下面的例子模拟用户单击Home图标以回到主页(黑体部分):

    web_url("my_home", "URL=http://my_home/", LAST);

    web_link("Employees", "Text=Employees", LAST);

    web_image("Home.gif", "SRC=../gifs/Buttons/Home.gif", LAST);

    web_link("Library", "Text=Library", LAST);

    web_image("Home.gif", "SRC=../../gifs/buttons/Home.gif", LAST);

            下面的例子模拟用户在客户端映射的图片上单击:

    web_image("dpt_house.gif",

           "Src=../gifs/dpt_house.gif",

           "MapName=dpt_house",

           "AreaOrdinal=4",

           LAST);

            下面的例子模拟用户在服务端映射的图片上单击:

    web_image("The Web Developer's Virtual Library",

           "Alt=The Web Developer's Virtual Library",

           "Ordinal=1",

           "XCoord=91",

           "YCoord=17",

           LAST);

            下面是一个使用文件名后缀的例子:它指定了dpt_house.gif作为后缀,所以象../gifs/dpt_house.gif、/gifs/dpt_house.gif、gifs/dpt_house.gif、/dpt_house.gif等都会匹配到。

    web_image("dpt_house.gif",
            "Src/sfx=dpt_house.gif", LAST);

    web_link
    语法:
            Int web_link (const char *StepName, <List of Attributes>, [EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            StepName:VuGen中树形视图中显示的名称,在自动事务设置中也被用做事务名称。

            List of Attributes:支持下列的属性:

    1.      Text:超链接中的文字,必须精确匹配。

    2.      Frame:录制操作时所在的Frame的名称。

    3.      TargetFrame、ResourceByteLimit:见List of Attributes一节。

    4.      Ordinal:如果用给出的属性(Attributes)筛选出的元素不唯一,那么VuGen使用此属性来指定其中的一个。例如:“SRC=abc.gif”,“Ordinal=3”标记的是SRC的值是“abc.gif”的第3张图片。

            EXTRARES:表明下面的参数将会是list of resource attributes了。

            LAST:结尾标示符。

    说明
            模拟鼠标在由若干个属性集合描述的链接上进行单击。此函数必须在前置动作的上下文中才可以执行。

            web_link 仅仅在基于HTML的录制方式中才会被VuGen捕捉到。

            非HTML生成的资源的例子有.gif 和.jpg图像。对于List of Resource Attributes参数来说,仅仅当Recording Options--Recording --HTML-based script-- Record within the current script. step选项被选中时,它们才会被插入到代码中。

            可以通过改变HTTP头信息给服务器传递一些附加信息。使用HTTP头信息可以,允许响应体中包含其他的内容类型(Content-Type),例如压缩文件,或者只有满足了特定的状态才去请求web页。

            此函数值支持Web虚拟用户,不支持WAP虚拟用户。

    web_submmit_form
    语法:
    Int web_submit_form. (const char *StepName, <List of Attributes>, <List of Hidden Fields>, ITEMDATA, <List of Data Fields>, [ EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

    参数:
            StepName:Form的名字。VuGen中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。

            List of Attributes:支持以下属性:

    1.      Action:Form中的ACTION属性,指定了完成Form中的操作用到的URL。也可以使用“Action/sfx” 表示使用此后缀的所有Action。

    2.      Frame:录制操作时所在的Frame的名称。

    3.      TargetFrame、ResourceByteLimit:见List of Attributes的同名参数。

    4.      Ordinal:参见Web_link的同名参数。

            VuGen通过记录数据域唯一的标识每个Form。如果这样不足以识别Form,VuGen会记录Action 属性。如果还不足以识别,则会记录Ordinal 属性,这种情况下不会记录Action属性。

            List of Hidden Fields:补充属性(Serves)。 通过此属性可以使用一串隐含域来标识Form。使用下面的格式:

    STARTHIDDENS,

    "name=n1", "value=v1", ENDITEM,

    "name=n2", "value=v2", ENDITEM,

    ENDHIDDENS,

    List of Data Fields

            Data项用来标识form。Form是通过属性和数据来共同识别的。

            使用下面的格式来表示数据域列表

    "name=n1", "value=v1", ENDITEM,

    "name=n2", "value=v2", ENDITEM,

            ITEMDATA:Form中数据和属性的分隔符。

            EXTRARES:一个分隔符,标记下一个参数是资源属性的列表了。

    List of Resource Attributes:参见List of Resource Attributes一节。

    LAST:属性列表结束的标记符。

    说明
            web_submit_form. 函数用来提交表单。此函数可能必须在前一个操作的上下文中执行。在Toos—Recording Option,只有录制级别设为基于HMTL的录制方式,web_image才会被录制到。

            在录制选项中,Toos—Recording Option下,Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源,只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            通常情况下,如果录制了web_submit_form. 函数,VuGen会把“name”和“value”一起录制到ITEMDATA属性中。如果不想在脚本中以明文显示“value”,可以对它进行加密。把“Value”改为“EncryptedValue”,然后把录制到的值改为加密后的值。

            例如:可以把 "Name=grpType", "Value=radRoundtrip", ENDITEM

            改为:"Name=grpType", EncryptedValue=409e41ebf102f3036b0549c799be3609", ENDITEM

            如果你完整的安装了LoadRunner,那么打开开始菜单--Mercury LoadRunner—Tools--Password Encoder,这个小工具是用来加密字符串的。把需要加密的值粘贴到Password一栏,再点Generate按钮。加密后的字符串会出现在Encoded string框中。接着点Copy按钮,然后把它粘贴到脚本中,覆盖原来显示的“Value”。

            加密的另一种方法时使用lr_decrypt函数。方法:选择整个字符串,例如“Value=radRoundtrip”(注意不要选择引号),右击鼠标,选择Encrypt string选现,脚本会变为:

    "Name=grpType", lr_decrypt("40d176c46f3cf2f5fbfaa806bd1bcee65f0371858163"), ENDITEM,

    web_submit_form支持Web虚拟用户,不支持WAP虚拟用户。

    例子:
            下面的例子中,web_submit_form. 函数的名字是“employee.exe”。此函数提交了一个请求,此请求包含雇员信息John Green。此函数没有使用属性(Attributes)是因为通过数据项已经能唯一的标识这个Form了。

    web_submit_form("employee.exe",

           ITEMDATA,

           "name=persons", "value=John Green - John", ENDITEM,

           "name=go_page", "value=Go to Page", ENDITEM,

           LAST);

    web_submmit_data
    语法:
    Int web_submit_data ( const char *StepName, <List of Attributes>, ITEMDATA, <List of data>, [ EXTRARES, <List of Resource Attributes>,] LAST ); 

    返回值
            返回LR_PASS(0)代表成功,LR_FAIL(1)代表失败。

    参数:
            StepName:步骤名称,VuGen中树形视图显示的名称。

    List of Attributes:支持以下属性:

    1.      Action:Form中的ACTION属性,指定了完成Form中的操作用到的URL。

    2.      Method:表单提交方法:POST或GET(默认是POST)。

    3.      EncType:编码方式。

    4.      EncodeAtSign:是否使用ASCII值对符号“@”编码。Yes或者 No。

    5.      TargetFrame:包含当前链接或资源的Frame。参见List of Attributes的同名参数。

    6.      Referer、Mode:参见List of Attributes的同名参数。

            ITEMDATA:数据域和属性的分隔符。

    List of Data:

            数据域列表定义了表单提交的内容。由于此请求是上下文无关的,因此数据域包含了所有的隐含域。使用Form的编码规则组织数据域。

            数据域列表可以使用下面任意一种格式:

             "name=n1", "value=v1", ENDITEM,

    "name=n2", "EncryptedValue=qwerty", ENDITEM,

            EXTRARES:分隔符,标记下一个参数将是资源属性的列表。

    List of Resource Attributes:参见List of Resource Attributes。

    LAST:结束标记符。

    说明
            web_submit_data函数处理无状态或者上下文无关的表单提交。它用来生成表单的GET或POST请求,这些请求与Form自动生成的请求是一样的。发送这些请求时不需要表单上下文。

            当VuGen设为基于URL的录制模式,或者基于HTML的录制方式但是Recording Options—HTML Advanced 下的A script. containing explicit URLs only 选项被选中时,web_submmit_data函数才会录制到。

            不论你采用URL查询的方式(GET),还是采用请求体发送(POST)的方式,此函数都指示出Form中的数据是如何发送到服务器的。

            如果VuGen处于HTTP录制模式下,此时记录Web进程时,会产生此函数。在提交Form时,如果无法生成web_submit_form函数,VuGen也会生成web_submit_data函数。

            在录制选项中,Toos—Recording Option下—Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源。只有选择了“Record within the current script. step”时,List of Resource Attributes才会被录制到。非HTML资源的例子是gif和jpg图象文件。

            EncType属性给出一个内容类型,指定其做为“Content-Type”请求头的值。它指示了根据参数生成HTTP请求时使用的编码类型(不是URL-encoding就是multi-part)可以是下面的格式:

    1.      “EncType=application/x-www-form-urlencoded”

    2.      “EncType=multipart/form-data” (任何的“; boundary=”都会被默认忽略掉)

    3.      “EncType=” (空串,表明没有产生内容类型(“Content-Type”)请求头)

            任何对于“EncType”的指定都会覆盖web_add_[auto_]header函数指定的Content-Type。当省略了“EncType”时,任何一个web_add_[auto_]header函数都会起作用。如果既没有指定EncType也没有web_add_[auto_]header函数,且“Method=POST”,“application/x-www-form-urlencoded”会做为默认值来使用。其他情况下,不会产生Content-Type请求头。

            ContentType:文件类型标识符,如果“EncType”是“multipart/form-data”用来上传文件时,需要用到“ContentType”。当在ITEMDATA中的Data子句中指定了“File=Yes”,且文件也在此子句中,ContentType才适用,此时它会作为同一个子句的值来传递。

            正常情况下,“Content-Type”根据所上传文件的扩展名自动生成。例如:

    -----------------------------7d025e2b16b064e\r\n Content-Disposition: form-data; name="uploaded_file"; filename="D:\\temp\\a.txt"\r\n Content-Type: text/plain\r\n \r\n

            无论如何,对于非浏览器的程序来说是特殊的,根据文件类型生成的“ContentType”不一定是正确的。这时,通过手工指定来覆盖默认的“ContentType”。如果指定了空值,那么“Content-Type”头将不包含在文件中。

            如果没有显示的指定“ContentType”的值,当上传的文件为空时,不管文件扩展名是什么,都默认使用“application/x-unknown-content-type”做为”ContentType”的值。

            VuGen不会检查指定的ContentType是否有效。

            通常情况下,如果录制了web_submit_data 函数,VuGen会把“name”和“value”一起录制到ITEMDATA一节中。如果不想在脚本中以明文显示“value”,可以对它进行加密。把“Value”改为“EncryptedValue”,然后把录制到的值改为加密后的值。请参考web_submit_form中相关的内容。

            所有的Web虚拟用户,运行在HTTP模式下的WAP用户,运行在WSP回放模式下的WAP用户都可以使用本函数。

    例子
            下面的例子中,web_submit_data函数使用POST方法提交了一个表单。

    web_submit_data("default.aspx",

           "Action=http://lazarus/flightnet/default.aspx",

           "Method=POST",

           "TargetFrame=",

           "RecContentType=text/html",

           "Referer=http://lazarus/flightnet/",

           "Snapshot=t7.inf",

           "Mode=HTML",

           ITEMDATA,

           "Name=grpType", "Value=radRoundtrip", ENDITEM,

           "Name=lstDepartingCity", "Value=DEN", ENDITEM,

           "Name=lstDestinationCity", "Value=LAX", ENDITEM,

           "Name=txtDepartureDate", "Value=8/19/2003", ENDITEM,

           "Name=txtReturnDate", "Value=8/19/2003", ENDITEM,

           "Name=txtQuantity", "Value=1", ENDITEM,

           "Name=radClass", "Value=1", ENDITEM,

           "Name=radSeat", "Value=1", ENDITEM,

           "Name=btnAvailableFlights", "Value=Next >", ENDITEM,

           LAST);

            下面的例子, web_submit_data函数使用POST方法提交了2个文件。

    web_submit_data("Attachments",

           "Action=http://barton.cottage@.Devonshire.uk/Attachments?YY=45434",

           "Method=POST",

           "EncType=multipart/form-data",

           "TargetFrame=",

           "RecContentType=text/html",

           "Referer=http:///barton.cottage@.Devonshire.uk/Compose?YY=20435",

           "Snapshot=t5.inf",

           "Mode=HTML",

           ITEMDATA, "Name=userFile0",

                  "Value=E:\\sense_sensibility\\Elinor.txt",

                  "File=yes",

                  "ContentType=text/html", // 覆盖了文本文件默认的“text/plain” 值。

           ENDITEM,

                  "Name=userFile1",

                  "Value=E:\\sense_sensibility\\Marianne.jpg",

                  "File=yes",

           ENDITEM,

           LAST);

    web_custom_request
    语法:
    Int web_custom_request (const char *RequestName, <List of Attributes>,

      [EXTRARES, <List of Resource Attributes>,] LAST );

    返回值
            返回LR_PASS(0)代表成功,LR_FAIL(1)代表失败。

    参数:
            RequestName:步骤的名称,VuGen中树形视图中显示的名称。

            List of Attribute:支持的属性有以下几种:

    1.      URL:页面地址。

    2.      Method :页面的提交方式,POST或GET。

    3.      TargetFrame:包含当前链接或资源的frame的名称。参见List of Attributes的同名参数。

    4.      EncType:编码类型。

    5.      RecContentType:响应头的内容类型。参见List of Attributes的同名参数。

    6.      Referer:参见List of Attributes的同名参数。

    7.      Body:请求体。参见List of Attributes的同名参数。

    8.      RAW BODY:参见List of Attributes的同名参数。

    9.      BodyFilePath:作为请求体传送的文件的路径。它不能与下面的属性一起使用:Body,或者其他Body属性或Raw Body属性包括BodyBinary,BodyUnicode, RAW_BODY_START或Binary=1。

    10.  Resource、ResourceByteLimit、Snapshot、Mode:参见List of Attributes的同名参数。

    11.  ExtraResBaseDir:参见List of Attributes的同名参数。

    12.  UserAgent:用户代理,它是一个HTTP头的名字,用来标识应用程序,通常是浏览器,它呈现的是用户和服务器的交互。

            例如:头信息“User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”识别的是Window NT下的IE浏览器6.0。其他的User-Agent的值用来描述其他的浏览器,或者非浏览器程序。通常,一个应用程序中所有的请求都使用相同的用户代理,录制者作为一个运行时参数来指定(Run-Time Setting—Browser Emulation—User Agent)。不管怎么说,即使是在一个简单的浏览器进程中,仍有可能会用到直接与服务器交互的非浏览器组件(例如ActiveX控件),通常他们有着不同于浏览器的用户代理属性。指定“UserAgent”表示这是一个非浏览器的请求。指定的字符串被HTTP头“User-Agent:” 使用,在某些情况下,它同时会影响回放脚本时的行为。例如,不使用浏览器缓存,假设指定的URL属于资源等等。

            LoadRunner本身不检查指定的字符串与浏览器本身的值是否相同。

    13.  Binary:“Binary=1”表示页面请求体中的每一个以\\x##形式出现的值(在这里“##”代表2个十六进制数字),都会被替换为单字节的十六进制的值。

            如果“Binary=0”(默认值),所有的字符序列只是按照字面的值传递。

            需要注意双斜杠的用法。在C编译器中双斜杠被解释为单斜杠。如果不需要零字节,单斜杠可以在Binary不等于1的情况下使用(例如,使用\x20代替\\x20)。如果需要零字节,那么只能使用\\x00且设置 “Binary=1”,\x00在逻辑上会被截断。

    14.  ContentEncoding

            指定请求体的使用指定的方式(gzip或者deflate)进行编码(例如,压缩),相应的“Content-Encoding:” HTTP头会和此请求一起发送。这个参数适用于web_custom_request和web_submit_data。

            EXTRARES:表明下面的参数将会是List Of Resource Attributes了。 

            LAST :结尾的标示符。

    说明
            允许使用任何方法和请求体创建自定义的HTTP请求。默认情况下,当VuGen无法使用其他函数解释用户请求时,会生成此函数。

            使用Add对话框(在脚本环境下,右击鼠标,会出现快捷菜单),可以手工插入此函数。要指定特殊的HTTP头信息,需要增加web_add_header或者web_add_auto_header函数。

    RecContentType:参见List of Attributes的同名参数。

            EncType:编码类型。此参数给出一个内容类型(Content-Type),指定其做为回放脚本时“Content-Type”请求头的值,例如 “text/html”。Web_custom_request函数不处理未编码的请求体。请求体参数将会使用已经指定的编码方式。因此,如果指定了不匹配HTTP请求体的“EncType”,会引发服务端的错误。通常我们建议不要手动修改录制时的“EncType”值。

            任何对于“EncType”的指定都会覆盖web_add_[auto_]header函数指定的Content-Type。当指定了“EncType=” (空值)时,不会产生“Content-Type” 请求头。当省略了“EncType”时,任何一个web_add_[auto_]header函数都会起作用。如果既没有指定EncType也没有web_add_[auto_]header函数,且“Method=POST”,且“Method=POST”,“application/x-www-form-urlencoded”会做为默认值来使用。其他情况下,不会产生Content-Type请求头。

            仅仅当Recording Options--Recording --HTML-based script-- Record within the current script. step选项被选中时,List of Resource Attributes才会被插入到代码中。

            所有的Web Vusers ,运行在HTTP模式或者Wireless Session Protocol (WSP) 回放模式下的WAP Vusers都支持web_custom_request函数。

    Using Binary Code

            可以使用下面的格式在web_custom_request 函数的“Body”属性中加入二进制字符串。

    \x[char1][char2]

            通过2个字符[char1][char2]来表示十六进制的值。

            例如:\x24表示16*2+4=36,它代表“$”符号,\x2B代表的是“+”符号。

            如果不足2个字符,也不是有效的十六进制字符,VuGen则会当作ASCII文本处理。所以要注意,对于不足2个字符的十六进制,要在前面补0。例如 “\x2”是无效的十六进制串,需要边为“\x02”。

            注意二进制的值是以“\\x” 的形式出现在脚本中的,也就是说在“x” 前面有2个反斜杠。这是由C语言的转义语法决定的。但是,当使用VuGen生成web_custom_request 函数时,只需要输入一个反斜杠。

            如果在web_custom_request 中使用参数化,定义参数时只需要包含一个反斜杠这是由于参数替换时是不考虑C的语法转换的。

    List of Attributes
    FtpAscii:“1”使用ASCII模式处理FTP操作;"0" 使用二进制模式。

            TargetFrame: 当前链接或资源所在Frame的名称。除了Frame的名字,还可以指定下面的参数:

    _BLANK:打开一个空窗口。

    _PARENT:把最新更改过的的Frame替换为它的上级。

    _SELF:替换最新更改过的的Frame。

    _TOP:替换整个页面。

            RecContentType:录制脚本时响应头的内容类型。例如text/html、 application/x-javascript等。当没有设置Resource属性时,用它来确定目标URL是否是可记录的资源。此属性包含主要的和次要的资源。最频繁使用的类型是 text、application、image。次要的类型根据资源不同变化很多。例如:"RecContentType=text/html":表示html文本。"RecContentType=application/msword":表示当前使用的是Msword。

            Referer: 当前页面关联的页面。如果已经显式指定了url的地址,此项可以省略。

            Resource:指示URL是否属于资源。1 是;0 不是。设置了这个参数后,RecContentType参数被忽略。“Resource=1”,意味着当前操作与所在脚本的成功与否关系不大。在下载资源时如果发生错误,是当作警告而不是错误来处理的;URL是否被下载受“Run-Time Setting—Browser Emulation--Download non-HTML resources” 这个选项的影响。此操作的响应信息是不做为HTML来解析的。“Resource=0”,表明此URL是重要的,不受发送请求(RTS)的影响,在需要时也会解析它。

            ResourceByteLimit:web页面下载资源的极限大小。当达到设置的极限后,无法下载其他资源。仅仅对需要下载的资源有效。

            下载过程:如果总计下载大小小于极限值,则正常开始下载。如果当下载时达到了设置的极限值,资源大小可知(在HTTP响应头中指定了Content-Length),这中情况下,如果只需要一个缓冲区,那么下载可以正常完成。如果需要的不止一个缓冲区,或者资源大小不可知,下载就会中断同时关闭当前连接。

            这个特性可以用来模拟用户不等待一个页面下载完成时导航到另一个页面的情况。

            ResourceByteLimit 在HTTP模式中无法使用,在Concurrent Groups(Vuser脚本中的一个区,此区中的所有函数并发执行)区中也无法使用。仅仅适用于Sockets的回放,WinInet也是不适用的。

    Snapshot:快照的文件名,关联时使用。

            Mode:两种录制级别HTML、HTTP。

            HTML级别:在当前Web界面上录制直观的HTML动作。以一步步的web_url、web_link、web_image、web_submit_form来录制这些动作。VuGen仅仅录制返回HTML页面的请求,不处理脚本和应用程序。

            HTTP级别:VuGen把所有的请求录制为web_url指令,不生成web_link、web_image、web_submit_form这些函数。这种方法更为灵活,但是生成的脚本不够直观。

            ExtraResBaseDir(目前仅适用与web_custom_request函数):根URL,放在EXTRARES组里。它是用来解析相对URL的(译者加:类似于Windows的相对路径和绝对路径)。

            URL可以是绝对路径(例如http://weather.abc.com/weather/forecast.jsp?locCode=LFPO),也可以是相对路径(例如“forecast.jsp?locCode=LFPO”)。

            真正的URL的下载是通过绝对路径进行的,所以相对URL路径必须使用根路径URL去解析。例如,使用http://weather.abc.com/weather/做为根路径来解析“forecast.jsp?locCode=LFPO”,最后的URL是:http://weather.abc.com/weather/forecast.jsp?locCode=LFPO。如果没有指定“ExtraResBaseDir”,默认的根URL是主页面的URL。

            Body(目前仅适用与web_custom_request函数):请求体。不同的应用中,请求体分别通过Body、BodyBinary或者BodyUnicode参数来传递。请求体可以只使用其中一个参数,也可以使用一连串的分开的参数组成多请求体。例如:

    web_custom_request(

    ……

    "BodyUnicode=REPRICE"

    "BodyBinary=\\x08\\x00\\xCC\\x02\\x00\\x00"

    "Body=.\r\n"

    "-dxjjtbw/(.tp?eg:ch/6--\r\n",

    LAST);

            在上面的代码中,使用了3个参数来划分请求体,一个是Unicode段,一个是二进制段,最后一个是常规的字符串。最终的请求体是这3个参数按照在函数中的顺序连接起来的值。

            还有一个很少用到的参数,Binary。它也能描述二进制请求体,但只允许函数中只有一个请求体参数。

            所有的请求体都是ASCII字符,以null结束。

            Body:表示规则的,可打印的字符串。无法表示空字节。所有的字符都以一个反斜杠表示。注意:在旧的脚本中,可以看见不可打印的字符在请求体中以16进制方式进行编码。(例如 “\\x5c”),在这种情况下,必须使用“Binary=1”来标识。空字节使用"\\00"来表示。 相反,新脚本则会把把请求体分开放在不同的参数中("Body=...", "BodyBinary=...", Body=...")。

            BodyBinary :表示二进制代码。不可打印的字符在请求体中以16进制方式\\xHH进行编码。在这里HH 表示十六进制值。空字节使用"\\00"来表示。

            BodyUnicode:美国英语, 特指拉丁 UTF-16LE(little-endian)编码。这种编码方式会在在每个字符末尾附加一个0字节,以便使字符更可读。但是在VuGen中实际的参数把所有的0字节都去掉的。但是在发送给Web 服务器之前, web_custom_request函数会重新添加0字节的。对于不可打印的字符,使用单反斜杠表示,无法表示空字节。

            注意:如果请求体大于100K,会使用一个变量来代替Body参数。变量是在 lrw_custom_body.h中定义的。

            Raw Body(目前仅适用与web_custom_request函数):请求体是作为指针传递的,此指针指向一串数据。 二进制的请求体可以使用BodyBinary 属性来发送(或者使用Body 属性来传递,前提是必须设置"Binary=1" )。无论如何,这种方法需要使用转义字符反斜杠把不可打印的字符转换为ASCII字符。为了能有一种更简便的表现原始数据的方式,Raw Body属性应运而生,可以传递指向二进制数据的指针。

            使用4个连续的参数集来表示指针,而且必须按照顺序排列:

        RAW_BODY_START

            指向数据缓冲区的指针

    (int) 长度

    RAW_BODY_END

    例子:

    char *abc= .../* a pointer to the raw data */

    web_custom_request("StepName",

                   "URL=http://some.url ",

     "Method=POST",

         RAW_BODY_START,

         "abc",

                        3,

      RAW_BODY_END,

         LAST);

            在应用中,即使设置了数据的长度为0,指针也必须有值,不能为空。

            在“Binary=1”时,不能使用上面的语法传递原始数据。

            数据缓冲区中的数据不能使用参数化。也就时说,缓冲区中的任何参数(例如 "{MyParam}")不能被正确的替代为相应的值,只会以字面值发送。

    List of  Resource  Attributes
            Web页面中的非HTML机制产生了资源列表,包含了Javascript, ActiveX, Java applets and Flash所请求的资源。VuGen's 的Recording 选项中,可以设置把这些资源录制在当前的操作中(默认是此设置)还是作为单独的步骤来录制。

            支持以下资源:

    URL

    要加载的web资源的url

    Referer

    关联的url

    ENDITEM

    每个资源的结束标记

     

            相对于把每个资源都录制为单独的步骤来说,不录制非HTML元素使脚本更加简短和可读,特别是在VuGen的Tree视图下更为突出。

            当VuGen录制过程中发现附加的资源(比如JS)时,会以列表的形式加到附加资源项中。回放脚本时,这些资源文件也是请求的一部分。可以对一些按规则变化的资源使用关联。


  • 性能测试基础

    2010-06-28 09:45:35

    自动测试
    自动测试过程就是通过模拟人工操作,完成对被测试系统的输入,并且对输出进行检验的过程。
    自动测试是由软件代替人工操作,对被测试系统的 GUI 发出指令,模拟操作,完成自动测试过程。
    ● 测试脚本
    自动测试,就是使用一个程序来测试另一个程序(被测试的应用系统)功能的正确性。如果用来测试的程序本身非常复杂,也需要被测试,或者编写困难,那么自动测试就失去了意义。
    因此,用来测试另外一个程序的程序往往是非常简单的,我们把这个程序称为“测试脚本”。
    测试脚本通常在测试工具的 IDE 里执行,并且获得 IDE 的支持。
    ● 自动记录
    当我们编写测试脚本的时候,往往发现编写脚本本身是很困难的:了解脚本的语法、了解测试过程、把测试过程转换称为测试脚本语句。
    自动记录,就是通过记录一个操作过程来获得测试脚本的功能。通过自动记录,我们就能够得到一个操作的基本的脚本,通过修改这个脚本,我们得到更通用的测试脚本。
    ● 同步点
    在执行测试脚本的时候,测试脚本语句的操作对象是 GUI 的组件。测试脚本通过这个组件的属性(如:名称、位置、 winclass 、 disable 等)来确定哪个组件是我们需要操作的组件。
    这个查找组件的过程如果失败,意味着:第一,应用系统的响应比较慢,需要等待一段时间再进行一次定位;或者第二,该组件不存在。
    这个查找、定位组件的过程,我们称为同步点。
    AutoRunner 的同步点都是隐含方式的:在操作对象的时候进行自动同步,自动设置同步点。
    ● 检查点
    测试的目的是检查数据是否正确。
    在测试的过程中,我们需要检查某个组件的某些属性满足某个条件。这个检查的位置和条件,我们称为检查点。
    在 AutoRunner 中,使用 check ( " objectname " , " property " , " 期望值 " )来作为检查点的脚本语句,它检查对象 objectname 的属性 property 是否和期望值一致。
    在使用中,可以使用检查点来检验系统的各个方面,如数据库、 GUI 属性等。   
    ● 参数化与数据驱动
    测试脚本是针对一个测试过程的。一个测试过程往往需要众多的数据来测试。通过自动录制得到的脚本,所有的输入数据都是常数,是固定的。
    如果需要使用一个测试脚本测试多组数据,就需要对脚本进行参数化,把固定的常数修改为来自数据源变量。
    这个过程我们称为参数化。
    采用了参数化的脚本,我们称为数据驱动的模式。

    功能测试概述
    1. 功能测试就是面向GUI(Graphics User Interface)的具体操作,通过完成输入数据、获取输出数据(并且进行比对),确定功能是否满足需求的一种测试。功能测试不关心系统具体的实现细节因此又称为黑盒测试。对应某一个具体的功能,可以使用多种测试数据从多角度进行验证。功能测试过程的核心,就是完成数据的自动输入、数据输出的自动获取、自动比对。
    2. 对于目前行业内的功能测试有以下的问题需要解决
    a. 测试用例问题:相当多的企业测试用例不标准,没有或不使用测试用例模板,从而导致整个测试的失败。
    b. 测试执行问题:在测试执行的问题上,有以下4点:
    i. 执行的次数不足尤其是回归测试不足;
    ii. 覆盖广泛的执行测试不足;
    iii. 测试执行的周期过长;
    iv. 测试执行的成本很高。
    这些问题导致了测试没能按计划执行,也导致了测试的失败。
    功能测试工具的特点
    对于一款好的功能测试工具来说,需要有以下的特点:
    1. 方便、灵活的创建测试脚本;
    2. 简单的脚本语言,便于学习与编写脚本;
    3. 方便的扩展,便于进行外部同步(如数据库同步);
    4. 能够进行模糊识别,提高脚本兼容性;这些autorunner能为您一一解决
  • symbian signed 标准测试用例

    2010-05-07 16:04:48

      最近这两天,手头没有测试任务。6月初将要进行sign,现在正在学习。先总结一下sign的测试用例:

    ,Symbian9所有的二进制文件都放在\sys\bin\目录下,命名冲突概率非常大,所以最好以下方式命名:MyBinName_UID.dll(exe)

    2,如果你的程序预装在手机或者存储卡中,需要用Makesis命令生成myapp.SIS文件和myapp_stub.sis文件,同时sign。

    Symbian Signed的测试用例(Test Cases)主要分为两部分:Generic Test Cases和Extended Set Capability Test Cases。

    其中Generic Test Cases应该被所有Symbian应用程序满足,而Extended Set Capability主要是针对Symbian V9的。

    一,Generic Test Cases主要包含:

    1,Packaging and Installation,其中包含8个小点

    1.1 ACS Publisher ID,要签名的sis文件必须被一个有效的ACS Publisher ID签名过。

    1.2 Installation and Startup,程序的安装必须和用户手册相符,一般在5秒内应该启动完成,或者有进度条提示启动过程

    1.3 File Creation Location,一般而言,应用程序只在安装盘符中创建文件,除非特殊声明

    1.4 Uninstall,卸载时应该删除所有原来安装的文件,以及所有应用程序运行过程中下载或创建的文件

    1.5 Installation to all Memory Locations,应用程序应该能安装到所有存储媒体中

    1.6 Reinstall,应用程序在被删除后可以重新安装

    1.7 UID and Device ID,确保UID和VID必须正确。

        UID: 0×20000000–0×2FFFFFFF,VID:0×70000000–0×7FFFFFFF或者VID=0

    1.8 SIS File Version Information,SIS文件的版本信息应该和帮助,说明书和About对话框中的版本信息一致

    2:General Usage Tests,其中包含4个小点:

    2.1 System Features and OS Friendly,应用程序不能影响系统和其他应用程序的使用

    2.2 Stress Test,进行15分钟左右,可以正确处理异常情况,而不会导致手机崩溃或停止响应

    2.3 Scalable UI Compliance,支持Scalable UI,不同的分辨率和显示模式

    2.4 SIP Session establishment,当收到请求时应用程序应当能建立一个SIP连接

    3,Memory Usage,其中包含2个小点:

    3.1 Low Memory Startup,应用程序可以比较好的处理低内存情况下的启动,当因低内存退出时可以显示相应出错信息

    3.2 Low Storage Memory During Execution,当存储空间不够时,程序应该退出并通知用户该情况

    4,Phone Functionality,主要包含2小点

    4.1 Service Interruption,当遇到中断时(电话,短信等),程序应该暂停并保存相应状态,并且正确处理该中断。

    4.2 Application Functionality After Reboot,程序当突然失去电源后重起后可以正常运行,而不会导致panic或停止响应

    5,User Control,主要有4个小点:

    5.1 Task List,程序可以通过taks list关闭

    5.2 Privacy statement dialog,当程序第一次启动时显示,告知用户capability的使用情况

    5.3 Billable Events,当程序需要进行付费操作时应该弹出对话框告知用户

    5.4 Backup and Restore Compliance,应用程序不能和Symbian的这项功能冲突

    二,Extended Set Capablities主要是对能力(Capability)的限制,分为三部分:

    1,Declarative:ProtServ,ReadDeviceData,WriteDeviceData,SwEvent,

                   TrustedUI,SurroundingDD,PowerMgmt

    2,Phone manufacturer Approval:NetworkControl, MultimediaDD, AllFiles, CommDD, DiskAdmin

    3,Phone Manufacturer Grant:TCB, DRM

  • windows mobile系统下的客户端安装

    2010-05-06 14:00:08

    windows mobile系统下的客户端安装:需要用cab的压缩包进行安装。如果用蓝牙发送到手机是没什么问题,如果没有蓝牙的话需要用数据线和pc进行同步,需要装一个类似于驱动的软件;microsoftActivesync这个软件,之后和pc进行同步把cab文件拷贝到手机上即可(注意:不要在pc上进行解压缩,直接copy到手机上即可)然后在手机上找到相关的文件即可安装。安装成功后会出现一个可执行文件,运行即可;

  • Mantis使用手册

    2008-05-28 12:42:55

    Mantis使用手册
    1
    系统简述
    Mantis
    是一个开源的Bug管理系统;基于PHP+MySQL,可以运行在Windows/Unix
    台上。作为一个bug管理系统,其适用性是否符合实际工作的需要,这是至关重要的。在对
    Mantis
    摸索几天后,发现它基本可以满足bug 管理日常流程。而且,Mantis B/S 结构的
    web
    系统,如果今后有需要,还可以配置到Internet 上,实现异地进行Bug管理。
    2
    系统中的角色
    Mantis系统中,分别有几种角色:管理员、经理、开发人员、修改人员、报告人员、
    查看人员。每个角色所具备的权限不一样,权限的从大到小依次排列是:管理员经理
    发人员修改人员报告人员查看人员。在详细说明每个角色的具体职责之前先来介绍如
    何进入该系统并进行登录进入。打开IE 窗口,在地址栏里键入:
    http://192.168.0.48:8008/mantis/login_page.php,便可显示系统的登录界面(如图2-1):
    2-1
    从图中可以看出,用户正确的输入自己的帐号(即用户名)及密码后,即可成功登录,
    并且点击登录按钮进入自己的主页面(如图2-2所示)。
    Mantis
    使用手册
    2-2
    在主页面中系统你可以看见以下信息:
    存在指派给登录用户且还未解决的Issue数目,点击该数目超链接,就会进入Issue
    列表,直接对这些Isuue进行操作;
    存在由登录用户报告且还未解决的Issue数目;
    最后一次登录该系统的时间。
    项目公告,当然也可以点击页面下部的归档公告也进入公告界面,可以查看更
    多的公告;
    登录进入后在该页面中的操作主要有3个:
    切换项目:点击界面右上角的下拉式菜单来切换所选项目;
    跳转到该Issue 编号:根据Issue 编号可以进行查询,直接进入该Issue 的详细信息
    界面,进行相应操作;
    归档公告:点击归档公告,即可查看;
    转向其它操作界面:点击主界面上方的菜单栏,便可进入相应的操作界面,如图2-3
    2-3
    以下篇章详细的说明各个角色用户在该系统中的具体权限和工作职责:
    2.1
    管理员
    管理员是管理整个系统运作的工作人员,他不仅是整个系统的操作流程中权限最高的工
    作人员,而且可以对项目进行创建和管理,人员帐号的创建和管理等等,以下篇章将详细介
    选择项目名称,
    点击按钮便可
    进入对应项目
    的界面
    Mantis
    使用手册
    绍说明。管理员登录到系统之后,可以进入自己的主界面(具体登录操作及当前页面的操作
    可见以上篇章),再根据工作要求,相应选择页面上方的菜单栏进入相应的界面。
    2.1.1
    我的视图
    点击我的视图菜单,管理员将会看到以下界面,如图2-1-1-1所示。从页面上看,
    2-1-1-1
    bug
    根据其以下工作状态分类成几个表格显示。符合这些工作状态的bug都一一的罗列
    a)
    指定给我的(尚未解决);
    b)
    未指定的;
    c)
    由我报告的;
    d)
    已解决的;
    e)
    最近修改的;
    f)
    我正在监视的;
    在该状态表格下,而且bug的编号是对应其详细信息的超链接,可以根据工作要求直接点击
    进入进行相应操作。此外在页面下部出现一个标识bug 流程状态的颜色条,如图2-1-1-2
    Mantis
    使用手册
    这样在实际操作中对于不同流程状态的bug就能很好的区分开。
    2-1-1-2
    2.1.2
    查看Issue
    点击查看 Issue”项,即可进入查看所有Issue的界面,如图2-1-2-1。从页面看可以
    2-1-2-1
    看出,页面上部相当于一个过滤器,页面下部是根据过滤器显示bug的数据列表。如果
    管理员没有对给予的参数选择设置,那么默认就是没有对数据进行过滤,则页面下部则显示
    所有bug数据。此外还可以在搜索框里输入bug编号直接查询,那么在页面下部就会出现查
    询结果。就此详细说明一下过滤器的功能。
    a)
    创建过滤器:在对参数进行设置完成后,可对当前的过滤设置进行保存,如图
    选择图2-1-2-2 所示。填入相应内容后即可保存下来。如果标记为公有,则其
    可以点击标题根据
    其属性对数据进行
    排列
    可以对过滤器
    进行管理操作
    Mantis
    使用手册
    2-1-2-2
    他工作人员(除了查看人员)都能共享这个过滤器。同理,管理员也可以在过滤器
    列表共享经理创建的公有过滤器。
    b)
    重复设置提示:在保存一个过滤器的时候,如果系统发现之前保存过相同设置
    的过滤器,就会出现重复提示,以免造成不必要的资源浪费。如图2-1-2-3
    示。图2-1-2-3
    c)
    管理过滤器:管理员可以对自己创建的过滤器进行操作,还可以删除或修改经
    理创建并标识为公有的过滤器。
    在显示的bug数据列表里可以看到,页面下部的表格头部显示查看Issue的当前数量,
    并且在旁边提供了打印报告“CSV 导出功能链接,以下数据列表的bug 信息列属
    性显示(从左到右):复选框、修改图标、(P)优先级(会以, 图形代表特
    急,加急,高,低优先状态,而对于中和无的状态则不作任何显示)、bug编号、bug注释数
    目、bug所属的项目和组别、bug的严重性、bug当前状态、最后更新、bug摘要。在此表格
    还可以进行如下操作:
    a)
    打印报告:点击进入则进入如图2-1-2-4 所示,将所有的bug显示出来,
    Mantis
    使用手册
    2-1-2-4
    在页面,列出了需要导出打印的bug列表,可以根据需要通过复选框选中需要打印
    bug,还可点击打印选项选择打印输出的项,在选择完毕后,根据需要点击
    图标,bug数据便相应的导出到该类型的文件里,实现打印输出的需
    求。
    b) CSV
    导出:点击功能链接,则出现如图2-1-2-5 所示界面,提示将一个一当前
    2-1-2-5
    用户帐户命名的CSV 文件下载存储到本地。下载完成后,可以运行EXCEL 打开
    该文件,直接查看导出的bug信息。
    c)
    点击标题栏的列属性,可以进行排列,并出现或代表是按升序或降序排
    列;
    d)
    可以通过选中bug列表的复选框,也可以选中全选的复选框,然后选择下
    拉列表的操作命令,然后点击确定按钮,则可以对这些bug进行相应操作,见
    Mantis
    使用手册
    ------

    2-1-2-4
    2-1-2-4。这里具体说明一下这些命令操作:
    ·
    移动:弹出选择项目界面,如图2-1-2-5。可以把选中的bug从当前项目转移到
    别的项目里。
    2-1-2-5
    ·
    复制:弹出选择项目界面,如图2-1-2-6。可以把选中的bug从当前项目复制到
    别的项目里
    2-1-2-6
    ·
    指派:可以把选中的bug直接分派给指定的工作人员,如图2-1-2-7
    2-1-2-7
    ·
    关闭:当被选中的 查看(2792) 评论(0) 收藏 分享 管理

  • 加强测试用例在测试过程中的地位

    2008-03-10 19:00:09

    常闻测试人员如此抱怨:

    测试用例在实际中没有起多大作用;

    在实际测试时根本没有按用例执行;

    测试执行后没有把新的用例补充到用例库中……

    先说说当前我们的软件企业为何测试流程不规范:

    1)从事物的发展规律看,软件测试行业在我国还是新兴行业,目前还处于起步和探索期,虽然国外的同行业发展到了一定阶段,但事实上他们也在不断否定自我并摸索着更直接有效的方法;而国内的测试行业发展期不足10年,所谓的测试管理流程不规范,也就情有可原了。

    2)从企业个体角度讲,测试部门的整顿和加强,按照企业自身发展的优先层次,还没有被纳入优先解决的程度,开拓市场/签售定单才是首要问题,也是维系企业生存发展的命脉。当然国内很多优秀的大中型软件公司的测试部门相对完善,如神州数码/用友/金蝶等,他们和大型跨国软件公司的合作,也从中汲取了宝贵的管理经验。

    3)还有一个普遍存在的问题。近几年国内软件企业为了加强企业的竞争优势和名气提升,通常大搞特搞ISO/CMM认证;笔者并不反对这么做,但通过这些认证后的企业有多少真正按照那些规定/设计的标准在后续的测试或软件开发管理工作中着手开展下去呢?社会上流传着这样的话:任何认证到中国,最后都免不了砸牌了!笔者读书时很多高校搞的MCSE认证,有培训机构明目张胆声称“百分百通过率”!当年也有专门媒体报道此事。听到这样的话,我们都会寒心,这里真心希望我们的软件企业通过ISO/CMM后真正为企业的内部软件开发流程带来一点曙光。

    4)最后一个原因,我想是企业内部测试管理人员和技术人员技能的不足,还有自身工作态度的不够端正。有了再好的规范标准,没人遵守不行!没人实施不行!应该说,很多中小软件企业的高层都或多或少的逐渐意识到软件测试的重要性和必要性,以及它的标准化/流程化改革的紧迫性,但也有很多的工程师/技术人员并不理会这套,常常在实际工作中投机取巧;也有很多测试管理人员经验不足/技能不够,对公司测试管理工作考虑不到位,和开发工程师交流不充分,和上层领导反映不及时等等。

    总之,任何问题的出现都不是单方面的原因,从宏观的社会形势到微观的企业个人,都有无可推卸的因素;正因为如此,解决问题也要对症下药,如何完善软件测试流程,就要从小处出发;本文不可能将软件测试流程改进的话题阐述的面面俱到,因此只谈测试用例的管理流程改进。

    测试用例在实际中没有起多大作用,在实际测试时根本没有按用例执行,测试执行后没有把新的用例补充到用例库中…为何如此?我们分析认为,根本原因是测试流程不完善,针对测试用例的管理流程更不完善,从三个方面具体来说:

    • 测试用例是软件测试工作执行环节的依据,如果这个依据都没用了,那是不是说这个依据不明确,依据设计的不合理呢?答案是肯定的!
    • 制定了完备有效的测试用例,为什么不按测试用例执行测试呢?首先是因为企业没有严格和良好的机制促使测试执行者这样做,其实是个别测试人员投机取巧心理的表现。
    • 测试用例设计得不可能天衣无缝,测试执行过程里肯定会发现有些测试路径或数据在用例里没有体现;那么事后该将其补充到用例库里,以方便他人和后续版本的测试;如果没有这样做,那么测试部门负责人和每个测试员都难辞其疚,是该重新坐下来思考一下公司的测试用例管理规范或流程了。

    那么究竟如何做,才能尽量避免上述问题呢?我们不妨从需求阶段就把这些问题考虑进去,以便从初始就力争将问题缩到最小,以防后期出现问题是互相推卸责任或干脆束手无策!

    ――软件需求分析阶段,我从来认为测试人员从软件生命周期的需求阶段就开始介入,因为测试人员的工作通常开展在该周期的末尾,如果前期不涉入,如何通晓整个系统的架构而对其测试呢?虽然该观点被大多数同行所认可,但我知道依然有很多公司为了节省费用,不让测试人员参与前期调研或制定需求,经常的做法是等到系统开发完毕或将近完成,跟测试经理说一声“这边有个项目,你找几个人来测一下吧!”经验表明,这样的做法实不可取。

    测试人员在需求阶段的任务有:

    • 全面了解系统需求,从客户角度考虑软件测试需要达到的验证值。
    • 参与软件需求调研,以测试角度分析需求的可测性;对不可测问题与客户或项目经理协调解决。

    如果企业采用类似与rational requistepro的需求管理工具,这个工作也需要测试人员的配合实施。

    ――软件分析设计阶段,测试人员除制定测试计划书等本职工作外,我认为还有一个必不可少的任务,那就是将系统的可测性落实到书面文档,以备将来编写测试用例。

    之所以要这么做,是因为考虑到很多企业编写测试用例直接参考需求规格说明书或者分析流程图,这样跨度大,难度也大,是造成测试用例不完备、覆盖范围小的重要原因。

    如果公司采用类似于rational rose的建模分析工具,这个工作更好执行;如果没有,那么测试人员更有必要编写一份《软件功能点测试描述书》,它是软件的详细测试分析文档,其主旨是将系统分析人员的分析文档加工成站在测试角度的功能点分析文档,重要的是描述对系统分解后每个功能点逐一的校验描述,包括何种方法测试 何种数据测试 期望测试结果等,这些信息都是描述性的,无须具体数据;它的作用是据此编写测试用例,以及测试执行时的参考依据,它直接来源于需求,覆盖最全,也最贴近客户。

    当然该文档不是非要不可,我只是提倡一种原则,如果有类似的替代文档或有自动工具可实现此功能,则会倍加受推崇!

    ――软件开发阶段,编写测试用例。我不想从技术角度探讨到底如何编写功能强大质量优异的测试用例(可参见我在“天若有情”转载的这篇文章- 如何设计编写软件测试用例),这里只想从管理角度和大家谈谈如何有效控制测试用例的流程。应该遵守的原则是:

    首先,从覆盖率来说,测试用例库的用例要达到最大覆盖软件系统的功能点。按照我上述所言的测试工程师从前期阶段顺次下来,编写测试用例时,基本就是将《软件功能点测试描述书》中的每个功能点进行操作上的细化:一是将从步骤上描述到达校验点的方式,二是从内容上以何种数据校验功能点。

    其次,从数量来讲,我觉得很多公司的测试用例太少,甚至远远不能覆盖系统需求,这也是很多测试人员测试开展前期按照用例执行,渐渐凭“意念”去测试的原因。应该说测试用例的数量很难用数学模型来模拟,更没办法衡量,但凭借个人经验来说,一个多于半年开发周期(指从编码开始直到提交客户的时间段)的软件系统,它的用例数量不要低于4000个,甚至更多!也许有人惊讶这一数字,不过了解IBM Microsoft 的人士会认为4000还是很少的。试想,对于一个中型软件系统,如果设计出5000个用例,那它的测试覆盖率还怕不高么!

    再次,如此众多的测试用例的管理。是的,需要管理工具软件!本人从来都反对以word或excel来编写测试用例,那样不仅在格式上难于编写——尤其对于一些共性内容:测试目标、测试环境、参考说明等,每次都要拷贝;而且难于管理——几千个文档文件放在一个共享文件夹,你的眼睛要必将经过缭乱的洗礼!更是难于执行——莫非真要针对几千个用例都是打开一个word、执行测试、输入测试结果、关闭word?而且,根本没办法追踪测试结果——输入完本轮回归测试的结果,下一论输入哪里?输入了这些测试结果什么用?用它追踪什么?追踪得到吗?

    使用word等软件编写测试用例的种种不便不多说,但换个思路思考一下使用集成工具的种种优势就一见分晓。测试同业者们都了解的测试用例管理工具便是rational testmanager(点击http://www-900.ibm.com/cn/software/rational/products/testmanager/index.shtml了解其基本功能),其实还有很多国内外中小型工具,如微创的testcase manager(点击http://www.wicresoft.com/products/devmgmt/tcm/docs/whitepaper.pdf下载工具白皮书)等,他们是专业的测试用例管理工具,其设计出发点就已经考虑到了我们上述的种种困境,因此给予了良好的解决方案。

    而且,个人觉得测试行业的快速发展,必将带来从每个环节都逐渐向自动化和标准化方向迈进,尽早适应这一趋势,不仅提高了工作效率,也提高了企业的信誉和名誉。

    最后,说一下测试用例格式上一般说明外的几个要点:

    一是在测试管理工具中制定适合本公司的测试用例模版

    二是模版有关键字索引,以方便按关键字分类查找,如测试方法(分手工/自动两种)

    三是测试用例要有状态跟踪,如执行失败要链接到缺陷报告

    四是测试用例的修改及运行都有日志记录

    ――软件测试阶段,测试负责人划分不同的测试阶段(如集成测试 系统测试 回归测试 性能测试等),再划分不同的子测试周期(如前两个星期做冒烟测试,可手工,也可自动;接着做第一模块功能测试,顺次…),再为项目测试人员分配测试用例,测试人员则按照详细的用例文档去执行测试,这里要遵循的几个原则是:

    A有健全且严格的体制保证测试执行者严格按照测试用例执行测试。这并不妨碍测试者创造力的发挥,因为前期用例设计和编写就是项目全体测试人员智慧的结晶!我们一直追问众多测试工程师加班加点辛苦工作的原因,其实大都发生这一阶段,如此实施,即便没有解决根本问题,也会大大提高测试执行效率。

    B如有对用例认识模糊或遗漏的地方,必须经测试负责人或项目其他管理人员同意方可更新用例库。

    C测试负责人每日负责跟踪本测试子周期或阶段的测试用例执行情况,以及每日提交的缺陷报告,根据执行进展状态以及缺陷数量或严重等级和项目高层或其他人员交流,商议解决途径,并确定或调整未来时间的测试任务。

    D测试执行者负责执行自己区域的测试用例,也要负责跟踪该区域软件缺陷的修改进展,根据其状态不断验证软件功能点。

    E应该提及的是,大多数软件公司都采用集成的缺陷管理工具来管理软件缺陷,如rational clearquest、mantis、bugzilla、TestTrack Pro等,这是好事情,因为这些集成工具都提供了清晰的报告模版及优秀的追踪功能,测试团队的每一成员按照自己的角色和权限要不断追踪缺陷的状态。

    F对于自动测试(包括性能/压力测试),有一些特殊要点。本人的原则是自动化测试无须编写测试用例,故而到此阶段才提及自动化测试;只要在编写时将用例库里适合或需要自动测试的用例的测试方法(不同工具可能名称不同)设为自动即可。自动化测试的实施方案有所不同,每款测试工具的使用和流程也不同,但都是从在这一阶段编写测试脚本,并运行自动测试。针对自动化测试原则,可参阅我的 自动化测试要点,这里要提的几个基本原则是:

    一是选择恰当的测试工具品牌,并要求提供培训

    二是项目测试成员有专人负责此事的进行,他们可不参与日常测试

    三是确定自动化测试成员在项目中的角色,一般自动化测试成员隶属于项目测试负责人,负责人同样跟踪其工作状态

    四是选择最简单 最重用的测试用例使用自动测试方法

    五是使用工具厂商提供的测试框架编写脚本,千万别单纯的录制/加校验点/回放,以开发出健壮的且重用性强的测试脚本

    六是有专人更新脚本,也有专人跟踪自动测试结果

    七是一般选择的测试工具品牌和缺陷管理工具品牌是同一厂商,以方便不同类型缺陷的集中管理

    G由于不同公司开发产品的特殊性,也许需要特殊类型的测试,如安全测试,甚至代码级单元测试等,这些需要酌情考虑测试用例的编写,以及测试的执行。

    ――软件验收阶段,除了提交软件测试评估报告(各种类型测试结果的评估都有报告)这些传统工作外,对于测试用例,此时要集中时间更新,更新整个测试周期中一切需要更新的内容,以方便未来新版本的测试,即便是项目软件——提交客户后没有新版本,那也需要后期维护,维护阶段需要重新测试某功能点,然而用例不准确,碰巧又是个新员工,那就死翘翘了!

    退一步说,如果您公司的测试部门经历一次这样重大的洗礼,有一个项目真正按照此原则实施一次,也必将对未来取得事半功倍的效果。

    总结:综上所述,我们得出结论——

    测试用例在测试中没起到应有的作用,是因为测试用例编写质量不高,覆盖不够,执行不利;

    测试执行时不遵循测试用例,执行后不更新用例库,是测试部门的整体工作流程不健全不规范;

    测试行业仍处在群雄逐鹿、百家争鸣的时期,芸芸纷说,不如从自身出发,确立最适合自我的解决方案,整顿自身的工作流程,那才是金玉良言的上上策!

  • 测试者存在的问题

    2008-02-20 13:48:10

    一、根基不牢

    问题:利用等价类划分的方法,对某问题设计测试用例。

    分析:98%以上的应聘者只知道按照有效等价类和无效等价类进行划分,殊不知此种分类方法只是等价类划分的一个典型应用而已,等价类划分远非只能划分为有效和无效两类。根据种种划分依据,还可以进一步划分很多其他类别。

    问题:根据事件描述,画出对应的因果图。

    分析:标准答案中只画了两条恒等,两条非,一个与,一个或。如此简单的问题,上百名应聘者中竟然无一人答对,痛心啊。黑盒测试方法就那么几种,既然你已知这个名,怎么就不知道多看几眼。

    小结:

    上面提到的是软件测试的最基本的方法,作为从业测试实际工作已经有1-2年的应聘人员,未能真正领悟,实属不应该,心浮气躁,忽视了你身边最简单,也是最厉害的技能。根基不牢,怎么可能把测试做深。

    二、专业不精

    问题:音视频文件都有哪些格式,这些格式之间有什么差别?

    分析:此问题是问那些做过多媒体方面测试的,但是我们的应聘者向来都是拿来主义,别人给我什么媒体文件我就用什么做测试,而根本不管不问。为什么MIDI文件比WAV文件小那么多?我们如何知道扩展名是.Mpeg的文件是Mpeg1格式的还是Mpeg2格式的?,面对这些问题,应聘者默默无语,只是无奈的笑笑。不去看别人,想想自己测试涉及的专业,是否把那个行业知识搞清楚了呢?

    问题:测试脚本运行不畅如何调试?

    分析:此问题是问那些标明自己熟练掌握WinRunnerRobotQTP测试工具的应聘人员,但是当真正问到他们关于脚本的具体调试时,有7成以上人员表示他们只是参加测试培训老师讲过,或者自己在网上看过相关资料,另外有2成以上人员表示他们虽然用过,但是只是简单的录制回放,根本不会自己调试。可能是迫于无奈吧,简历里面什么都不写,可能面试的机会都没有,但是简历如此夸大的来写,终归是浪费自己的面试时间和路费。

    小结:

    从事测试仅1-2年时间,要想测试也精通,专业也精通确实不易,但是不说精通,至少也该知道个60%才对的起你的测试工作。一两年时光如此荒废,静下心来反思一下,身边还有哪些技能我们应该掌握扎实一点呢。

    三、无测试体系概念,忽视理论

    问题:请说出软件测试的定义,BUG的定义。

    分析:99%的人不能说出这两个测试名词的定义,只是在给我解释测试是为了发现bug之类的片面理解,残留的几个人也说得不够准确。这两个词目前尚不能说业内已经有了成熟统一的定义,但是无论是对是错,身为测试人员已经数年,自己竟然说不出这两个词的概念,多少也说不过去啊。有些人和我说,理论名词概念不重要,我会做测试就是了。想想金庸老先生早就告诉我们,武功仅有招式是不够的,必须配合上什么心法口诀才能行。你只会测试执行的招式,却不懂测试理论的心法,怎么能够修炼成上乘的软件测试呢?

    问题:请介绍一下你们的测试流程,流程和过程有什么不同,为什么好的测试需要好的流程?

    分析:但凡做过12年测试的人都能给我说出他们先做什么后做什么,但是当我继续问这是否可以叫做过程?流程和过程有什么差别,应聘者一棒子被打晕,继续追问为什么好的测试需要好的流程的时候,早已经找不到东南西北了。每天公司各项制度叫你做什么你就做什么,让你怎么做你就怎么做,完全不管不顾为什么,那么自己岂不成了没头脑的工具。这样你能干的工作别人也能做,自己的优势不就没有了吗。

    小结:

    目前测试业内流传着学院派和实践派的说法,学院派的理论给人的感觉往往是好听但不实用,而实践派的知识,往往能够立即见效。所以眼下测试培训往往实践派的更受欢迎。继续引用金庸先生的观点,练武分练内气宗,练外剑宗,但是真正的高手是内外兼修。如果我们不想只做普通的测试小弟子的话,就要理论实践并重,方能有所作为。

    四、周边知识知之甚少

    问题:能给我介绍一下软件工程中的瀑布模型吗?

    分析:又是8成应聘者不会回答,都是曾在遥远的学生时代有所耳闻,现今早已忘得一干二净了。软件测试因何而生——软件危机,软件危机导致软件工程的兴起,软件工程中又包含软件测试,就好像鱼儿活在水里,如果没有软件工程这个水,哪里能够养活这软件测试的鱼,如果我们对于身边的软件工程不够了解,怎么可能在里面自由的畅游呢。

    问题:用你最熟悉的开发语言实现sum=1+2+3+…+100

    分析:保守统计7成以上的应聘者写出来的程序无法执行或者运行结果错误,更少有人能够一气呵成,而且精准。这道编程题难吗?肯定不难,那么为何答错,自己没有真正写过程序,即使写过几行,也早就是如烟往事了。做测试一定需要懂开发吗?这个问题讨论以久,当然不一定,但是如果要做好测试,做深测试,分析问题原因,提出问题解决方案,编写测试脚本或工具,哪一个又能离开软件开发呢?

    小结:

    我们学习测试也应该有个先后顺序,有步骤。掌握周边知识的紧迫程度可能不如测试知识和行业知识。但是对于我们已经从业1-2年的测试人员来说,学校里面学到的知识不应该丢,之后的发展中,周边知识的学习也应该开始了。周边知识的范畴其实很广,还包括各种其他测试理念的学习,机械工业出版社翻译的那套测试丛书就很不错,观点众多而新颖,博众家之长,集大成,向来都是大家风范。

    五、缺乏必要的责任心、细心、耐心、虚心等

    问题:请数出下图中三角形的个数(平面图,有几根弧线做干扰)

    分析:我总是问自己,这道题真有这么难吗?连中小学生都能数对的十几个三角形,到了我们这二十几岁的年轻人手中,正确率才1%,为什么?其实就是现在我们已经很少有人能够静下心来,耐心细致的去做事情了。很多应聘者告诉我她的优点就是踏实,坐的住,正适合这繁琐的测试工作。我需要的不是坐在那里不做事或者做错事的人,而是需要能够按时保质量完成测试工作的测试人员。

    问题:你离职的原因?

    分析:这是面试中最常见的问题了。应聘者往往也是充分准备,理由多种多样,但是看看应聘者的工作记录统计,70%应聘者平均跳槽频率是1/次(实习情况除外),不会都那么凑巧吧,赶上什么公司倒闭,每隔一年就会想一次自己学不到东西,需要去外面看看。而在我看来,真正的原因更多的应该是希望通过跳槽提高工资,或者因为自身水平不足被公司炒鱿鱼吧。

    小结:

    我并不认为所有的人都适合做测试。非技术素质方面,这点或者那点不足够优秀也很正常,心浮气躁也可以理解。但是作为用人单位,理解归理解,却也不会用不胜任岗位,或性价比不高的人员。那么对于此类应聘者,我的忠告就是,要么你另谋高就,要么你就放低姿态,培养好你必备的素质后再谈。

    六、缺乏诚信

    这一点本应该被归在上一条素质中,但是这点的重要性我认为远超过了上一条所列各项,因此单独提出。相关表现主要体现在:

    报自己历史工薪;

    笔试题目作弊;

    编造离职原因;

    虚报学历,工作经验;

    夸大自己工作技能等。对于严重缺乏诚信的,一旦发现,其他表现再好,也无济于事了。
  • LoadRunner压力测试实例

    2007-12-14 11:45:34

    1 LoadRunner 概要介绍... 2

    1.1 基本步骤... 2

    2 安装LoadRunner 中文版... 3

    2.1 系统要求... 3

    2.2 安装... 3

    3.项目背景介绍... 5

    3.1 背景概述... 5

    3.2压力测试用例... 6

    4.使用LoadRunner进行负载/压力测试... 7

    4.1录制基本的用户脚本... 7

    4.2 完善测试脚本... 9

    4.2.1 插入事务... 9

    4.2.2 插入集合点... 10

    4.2.3 插入注释... 10

    4.2.4 参数化... 10

    4.3 单机运行测试脚本... 15

    5实施测试... 16

    5.1 选择脚本,创建虚拟用户... 16

    5.2 添加windows资源监视窗口... 18

    5.3 添加windows性能计数器... 18

    5.4 执行脚本... 20

    5.4.1 分析结果... 21

    6 分析以及监视场景... 22

    6.1 Memory相关... 22

    6.2 Processor相关... 25

    6.3 网络吞吐量以及带宽... 28

    6.4 磁盘相关... 28

    6.5 Web应用程序... 29

    6.6 SQL Server. 30

    6.7 Network Delay. 32

    7 分析实时监视图表... 32

    8 经常遇到的问题... 33

    8.1 VuGen的问题... 33

    8.2 Controller的问题... 33

    8.3 计数器的问题... 33

    9.结果分析... 34

    10参考文献... 38

     

     

    摘要:本文通过实例讲解介绍了LoadRunner 工具的使用,介于公司的实际情况,文中主要是对工具的基本使用做了详细描述,高级运用方面除性能计数器与参数设置外其它均未涉及,待以后补充。目的是使公司人员根据该手册便可以独立运用Loadrunner进行压力测试


    主题词:Loadrunner  工具  压力测试


    概要介绍

    LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上

    千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个

    企业架构进行测试。通过使用LoadRunner 企业能最大限度地缩短测试时间, 优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢, 系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive LoadRunner 能让企业保护自己的收入来源, 无需购置额外硬件而最大限度地利用现有的IT 资源, 并确保终端用户在应用系统的各个环节中对其测试应用的质量, 可靠性和可扩展性都有良好的评价。LoadRunner 是一种适用于各种体系架构的自动负载测试工具, 它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统, 它通过模拟实际用户的操作行为和实行实时性能监测, 来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术, 为您的特殊环境提供特殊的解决方案。

    基本步骤

    使用LoadRunner 完成测试一般分为四个步骤:

    1Vvitrual User Generator 创建脚本

    ²        创建脚本,选择协议

    ²        录制脚本

    ²        编辑脚本

    ²        检查修改脚本是否有误

    2)中央控制器(Controller)来调度虚拟用户

    ²        创建Scenario,选择脚本

    ²        设置机器虚拟用户数

    ²        设置Schedule

    ²        如果模拟多机测试,设置Ip Spoofer

    3)运行脚本

    ²     分析scenario

    4)分析测试结果

    安装LoadRunner 中文版

    LoadRunner 分为Windows 版本和Unix 版本。如果我们的所有测试环境基于Windows

    平台, 那么我们只要安装Windows 版本即可。本章讲解的安装过程就是LoadRunner7.8中文的Windows 版本的安装。

    系统要求

    目前部门的测试机和工作机器足可以满足LoadRunner7.8 的最低要求。不过要比较好

    的运行LoadRunner 内存最好在512M 以上, 安装LoadRunner 的磁盘空间至少剩余500M。操作系统最好为Windows 2000

    安装过程

       LoadRunner7.8中文版安装基本分两个步骤:首先安装LoadRunner7.8英文原版,然后安装中文语言插件包

    LoadRunner7.8英文原版存放位置:\\10.138.149.139\ test tools\LR7.8nt.rar将压缩文件拷贝解压到本机的安装,过程比较简单要开始安装LoadRunner,以Administrator 的身份登陆Windows2000 后,运行LoadRunner 安装目录下Setup.exe 即可进入安装程序。

    1. 在“Registration Information 界面中, 输入序列号( 不用改动, 就是n 8

    2. 在安装类型界面中, 选择一种安装类型

    下面简单的对这三种安装类型进行介绍

    Standalone Installation 将要安装LoadRunner 在一台计算机上

    Network Installation LoadRunner 安装在一个网络驱动器上, 这样任何能连接到这个

    网络驱动器的计算机都可以使用LoadRunner 的部分或者全部组件。

    Network Installation and shortcuts Network Installation 类似,不同的只是这种类型将把

    自己的计算机配置成Workstation 来运行LoadRunner。如果选择了第二项, 我们还需要

    查看(1417) 评论(0) 收藏 分享 管理

  • LR英语测试术语 LR英语测试术语

    2007-10-16 12:04:49

    并发用户数量
    the number of concurrent users

    最佳并发用户数量
    the optimum number of concurrent users

    最大并发用户数量
    the maximum number of concurrent users

     

    峰值并发用户数量

    the peak number of concurrent users

    平均并发用户数量


    the average number of concurrent users

     

    concurrent call

     

    并发呼叫


    concurrent stream

     

    并发流

  • loadrunner的试用方法

    2007-10-16 11:54:50

    LoadRunner学习

    2007-10-15 17:56:38

    1、事务(Transaction)

    是这样一个点,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个transaction,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。所以 LR 的事务添加操作就是把测试所需要关注的操作定义成事务告诉 LR,这个是我想要重点检测性能的操作。LR就会在运行过程中记录事务内操作的响应事件等性能数据。并在Analysis中以报告的形式给出统计结果。

    lr_start_transaction(”SubmitBookData”);

    /*中间代码部分*/

    lr_end_transaction(”SubmitBookData”, LR_AUTO);

    2、集合点(Rendezvous)

    集合点:是一个并发访问的点,在测试计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000人,LoadRunner就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,并发访问的目的。 

    注意:集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。集合点函数如下,参数不能加空格:lr_rendezvous(”SumitQueryData”); 加入集合点之后,在后面运行过程中可以看到VU的状态,会等待集合。 

    3、IP Spoofer(IP 欺骗) 

    LoadRunner允许运行的虚拟用户使用不同的IP 访问同一网站,这种技术称为“IP 欺骗”。 

    启用该选项后,场景中运行的虚拟用户将模拟从不同的IP 地址发送请求。该选项非常的有用。注意:IP Spoofer 在连接Load Generators 之前启用。要使用IP 欺骗,各个Load Generator 机器必须使用固定的IP,不能使用动态IP(即DHCP)。 

    IP Wizard工具,添加一个局域网内的IP段。添加后重启,在Win2k下使用Ipconfig/all查看到很多虚拟的IP,最后要在Controller里面选择enable ip spoofer. 

    4、(Text/Image)检查和 contents check 点 

    对于查询类的脚本,一定要添加检查点,以保证在测试时结果的正确性.因为LR只要检测到网页的响应,就认为是pass而并不管当前网页内容的正确性.在进行压力测试时,为了检查Web服务器返回的网页是否正确,VuGen允许我们插入Text/Imag 检查点,这些检查点验证网页上是否存在指定的Text或者Image,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。检查点的含义和WinRunner 中的检查点功能基本上一致,这里就不再说了.

    比如登录,我要测试200人同时登录, 

    但是我的login.jsp里面没有正确的关闭数据库的连接, 

    导致登录100人后,建立了100个数据库连接, 

    第101人一个人登录的时候,由于超出数据库连接的最大数, 

    所以,jsp程序抛出了一个数据库异常。 

    但是页面的走向是正确的,所以loadrunner会认为程序是正确执行的,但是事实却并非如此。 

    5、LR 脚本复用问题 

    LR的测试脚本有很好的复用性,参数化后的脚本,在应用没什么大的变化的情况下,一直是可以用的。甚至你在A服务器录制的脚本,如果做测试的时候,需要转移到B服务器上,你只需要用查找替换的功能将A服务器的IP地址换成B服务

    6、理解 Correlation(关联)

    关联是用来解决脚本中存在的动态数据问题的.在7.8中,当你回放一次后,LR会自动录找你录制的时候和回放时候的差别,找出动态数据,并作成参数。

    理解web_reg_save_param函数, 

    int web_reg_save_param (const char *ParamName, , LAST);

    第一部分:参数名字,用双引号括起,逗号分开; 

    第二部分:List of Attributes,包括:LB、RB、RelFrameID、Ord、Search、SaveOffset、

    SaveLen等, 

    第三部分:LAST,结束标志。

    7、左边界,右边界到底是个什么概念? 

    LB是左边界,要查找的字符串左面的边界值,即位于查找字符串的最左边的字符串,RB是右边界,要查找的字符串右面的边界值,即位于查找字符串的最右边的字符串,比如说吧,程 Search是指查找范围,就是说在哪里查找这些值,可以取这样几个值,我们一般设为ALL, Body等即可。 

    Headers (Search only the headers), 

    Body (search only Body data, not headers), 

    Noresource (search only the html body, excluding all headers and resources), 

    ALL (search Body and headers). The default value is ALL. 

    RelFrameID: The hierarchy level of the HTML page relative to the requested URL.

    一般取1

    ORD: This parameter, also known as Instance, indicates the ordinal or instance of 

    the match. 一般取 1 

    一般把系统的那些都关掉,定义自己的,只是有的时候,它不能自动关联,就

    干脆手工作了。需要关联的地方:一般是在有主键,不允许记录重复,和一些主程序中传递过来的参数,在后面要用到等情况才使用关联的,你可以先执行一遍,如果有些地方不允许重复,参数值无效,就会出错的,根据错误提示你可以判断出来,就知道需要关联了。一般需要关联的不多,我现在遇到的就是进程号,以及表的主键。

    以下是一个例子讲解LR,呵呵!

    8、范例

    以录制 Web(Http/Html)协议为例讲述一下 LR 的脚本的录制LR的脚本是C语言代码,LR有自己的一整套函数接口,可以供外部调用,在VUGen里面敲Lr_就可以看到了。Web(Http/Html)脚本本身分INIT,ACTION,END三部分,各部分的解释:INIT部分可以理解为初始部分,ACTION可以理解为事务部分,也是测试的主体,END是退出结束。重复的时候,仅重复action部分。我们一般把登录部分放在init,退出放到end,只会执行一次,或者有的时候,各部分反复的次数不一样,分成多个action,可以单独设定反复次数。(如果需要在登陆操作设集合点,那么登陆操作也要放到Action 中,因为vuser_init 中不能添加集合点) 

    几个函数的解释: 

    脚本里面有 2 个函数,解释一下:

    1) int web_url (const char *Name, const char * url, 

    [EXTRARES, ,] LAST ; 

    这个函数 load 指定的web 页面 .

    *Name:页面的name;
    url:页面的url,
    Resource:指示the URL 是否是一个资源。0,不是,1, RecContentType:录制脚本过程中Header 响应的类型,e.g. text/html, 
    application/x- javascrīpt Referer – 参考 web 页的 the URL Snapshot - snapshot 文件名(扩展名inf), correlation 的时候要的。
    Mode – 录制的级别: HTML or HTTP Last- 属性列表的结束标志。


    名词方面的解释   

    1)迭代(Iterate)设计,或者我们称之为增量(Incremental)设计的思想和XP提倡的Evolutionary Design有异曲同工之妙。

    注意:参数类型:在创建参数的时候,我选择了参数类型为File。参数类型共有9 种,现在来简单介绍一下所有的参数类型以及意义。

    1.1、  DateTime:在需要输入日期/时间的地方,可以用 DateTime 类型来替代。其属性设置也很简单,选择一种格式即可。当然也可以定制格式。

    1.2、  Group Name:很少用到。在实际运行中,LoadRunner 使用该虚拟用户所在的Vuser Group 来代替。但是在 VuGen 中运行时,Group Name将会是None。

    1.3、  Load Generator Name :在实际运行中, LoadRunner  使用该虚拟用户所 在LoadGenerator  的机器名来代替。

    1.4、  Iteration Number :在实际运行中,LoadRunner 使用该测试脚本当前循环的次数来代替。

    1.5、  Random Number:随机数。很简单。在属性设置中可以设置产生随机数的范围。

    1.6、  Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小。注意:使用该参数类型必须注意可以接受的最大数。例如:某个文本框能接受的最大数为99。当使用该参数类型时,设置第一个数为 1,递增的数为1,但100  个虚拟用户同时运行时,第100  个虚拟用户输入的将是 100,这样脚本运行将会出错。这里说的递增意思是各个用户取第一个值的递增数,每个用户相邻的两次循环之间的差值为 1。举例说明:假如起始数为 1,递增为 5,那么第一个用户第一次循环取值 1,第二次循环取值 2;第二个用户第一次循环取值为 6,第二次为 7;依次类推。

    1.7、  Vuser ID:设置比较简单。在实际运行中,LoadRunner 使用该虚拟用户的 ID  来代替,该 ID  是由 Controller 来控制的。但是在 VuGen 中运行时,Vuser ID  将会是 –1。

    1.8、  File:需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据

    1.9、  User Defined Function:从用户开发的 dll 文件提取数据。

    9、负载生成器: 

    负载生成器是用来模拟生成虚拟用户的。 

    根据经验,每生成一个虚拟用户,需要花费负载生成器大约 2M 的内存空间。通常运行 controller的主机很少用作负载生成器。负载生成器的工作多由其他装有 LR Agent的PC 机来担任。如果负载生成器内存的使用率大于了 70%,负载生成器就会变成系统的瓶颈,导致性能测试成绩下降。这种问题需要添加负载生成器来解决。一台 512M内存的 PC 机大约可以生成 80 个左右的负载,而一台 256M 内存的 PC 机大约可以生成50到 60 个左右的负载。 

    10、运行[时间]在加压完成后: 

    当“运行[时间]在加压完成后”设置了以后,原本定义的运行时设置中的迭代次数就失效了。或者说加压 “持续时间”的优先级要高于“运行时设置”。比如当一个脚本设置了运行时设置中的迭代次数为 10 次,在“持续时间”中设置加压持续时间为 30分钟。当真正运行时,脚本迭代10 次后仅花费了20分钟,但是持续时间设了30 分钟,因此它不能停下来,还会继续迭代。到最后脚本实际迭代的次数就不止 10次了。


    11、LR 对服务器资源的监视

    LR只能监视它支持的服务器的资源,它支持大部分常见的服务器。 

    System Resource:包括windows平台,Unix平台等 

    Web Server:包括Apache、IIS、Sun的iplanet等 

    Application server:包括Weblogic、WebSphere等 

    Database server:包括DB2,Oracle,Sql server,Sybase等 

    Java: ejb,J2ee等,需要一个ejbdetector.jar文件 

    11.1.对Windows(Win2k server)的监视: 

    对windows的监视相对比较简单,监视前首先需要用有管理员权限的帐号连接被监 server,例如:net use \\qa-test /user:donny ,输入密码。然后就可以添加计数器,比较常用的计数器有: 

    Memory:Available Mbytes 物理内存的可用数(单位 Mbytes)至少要有10% 的物理内存值 

    Processor:%Processor Time CPU 使用率。这是查看处理器饱和状况的最佳计数器。显示所有 CPU 的线程处理时间。如果一个或多个处理器的该数值持续超过 90%,则表示此测试的负载对于目前的硬件过于沉重。为多处理器服务器添加该计数器的 0 到 x 个实例。 

    Processor Queue Length:是指处理列队中的线程数,小于2。处理器瓶颈会导致该值持续大于2。

    Context Switches/sec:如果切换次数到5000*CPU个数和10000*CPU个数中,说明它忙于切换线程 

    Network Interface:Bytes Total/sec 为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。 

    SQL Server2000:%Processor Time,CPU 使用率 

    General Statistics,Logins/sec,这是每秒登录到 SQL Server 的计数。 

    SQL Statistics: Batch Requests/sec,每秒收到的 Transact-SQL 命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求每秒收到的 Transact-SQL 命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求的复杂程度等)影响。

    批请求数值高意味着吞吐量很好。

    11.2.对Unix(Linux等)的监视,需要配置相应的服务器端,可以查看帮助文件,这里就只举 一个例子了。 

    1) LoadRunner 如何监控Apache,需要修改apache的配置文件httpd.conf.


    SetHandler server-status 

    Order deny,allow 

    Allow from all 

    Allow from .your-domain.com 


    把这节加在httpd.conf里面, restart apache即可。

    2)页面分解 

    如果某个transaction的时间过长,为了分析问题出在哪里?就可以利用页面分解了,它可以把每个页面分解成:

    DNS解析时间:浏览器访问一个网站的时候,一般用的是域名,需要dns服务器把这个域名解析为IP,这个过程就是域名解析时间,如果我们在局域网内直接使用IP访问的话,就没有这个时间了。 

    Connection:解析出Web Server 的IP地址后,浏览器请求被送到了Web Server,然后浏览器和Web Server 之间需要建立一个初始化HTTP连接,服务器端需要做2件事:一是接收请求,二是分配进程,建立该连接的过程就是connection时间。 

    First Buffer:建立连接后,从Web Server 发出第一个数据包,经过网络传输到客户端,浏览器成功接受到第一字节的时间就是First Buffer。这个度量时间不仅可以表示Web Server 的延迟时间,还可以表示出网络的反应时间。 

    Receive:从浏览器接收到第一个字节起,直到成功收到最后一个字节,下载完成止,这段时间就是receive时间。 

    其他的时间还有SSL Handshaking(SSL 握手协议,用到该协议的页面比较少)、 ClientTime(请求在客户端浏览器延迟的时间,可能是由于客户端浏览器的think time 或者客户端其他方面引起的延迟)、Error Time(从发送了一个HTTP 请求,到Web Server发送回一个HTTP 错误信息,需要的时间)。为了确认问题缘由到底是服务器还是网络,选择“Time to First Buffer(缓冲器) Breakdown”发现network时间比Server时间要高的多,从而确定问题是network引起的。


  • 我是毕业生

    2007-06-07 17:50:50

    毕业第一步,就是选好目标。坚定的走下去,这一步最重要,也最难,它可能使你退却,可不要忘记,只有坚持才是胜利。

     不要小看自己的实力,自己看不起自己的人永远不可能成功!如果你现在碰壁,那么重新站起来,有希望在就有成功出现。

       给自己笑一个。

      呵呵呵。

Open Toolbar