发布新日志

  • WinRunner问题解决(一)

    2007-01-10 11:25:18

    当你load一个函数,WR却提示你“The line is to long to display”的时候,

    你可能觉得这个提示莫名其妙,实际上,真正的原因是你的函数的类型有问题。

    也就是说,你需要把函数保存为complie module模式才能load,否则按默认报存的话,

    就会保存为Main Test模式,这样就会提示上面的错误信息。

  • 使用WinRunner录制脚本(一)

    2006-12-11 17:42:43

    写在前面:

    学习WinRunner也有一年的时间了,现在也到总结一下的时候了。一年之中,对WinRunner的来说,最基本也是最常用的就是其录制回放的功能。这边我写一些在网上学习的以及自己实践总结的东东。 初学乍到,有说错的地方,请大家指出来,这里先谢了。

    1识别应用程序的GUI对象

    录制WinRunner测试的脚本的第一个阶段是:识别应用程序的GUI对象。这也许与许多人的习惯不同,很多人习惯在测试的过程中识别被测试对象的GUI。由于这种习惯由来已久,而且也确实没有很大的坏处因此本文在建议使用首先识别GUI对象再进行测试的前提下,同时也不反对在录制的过程中识别GUI对象。

     

    1.1使用RapidTest scrīpt wizard

     

    这个功能是Mercury Interactive 公司为实践它的WinRunner自动化测试框架,而量身定做的一个功能。在理论上使用该功能就能够实现:在录制测试脚本之前,首先对被测试对象进行GUI对象的学习和识别。

     

    1.1.1为什么要使用RapidTest scrīpt wizard

    使用RapidTest scrīpt wizardWinRunner将自动学习你所选择的windows上面的所有的控件,包括子级菜单。并自动生成一个GUI MAP文件,以及一个WinRunner初始化脚本,并在初始化脚本上自动生成一行代码,用来调用这个生成的GUI MAP文件。

           使用RapidTest scrīpt wizard的优点就是能够比较完整的学习到被测试对象的GUI控件。这样作相对于我们比较常见的边测边学习添加GUI控件有一个相对的优势就是:对GUI映射文件可以实现比较好的管理。

    1.1.2使用RapidTest scrīpt wizard的前提

    WinRunner中使用RapidTest scrīpt wizard有几个前提条件:

     

    l         RapidTest scrīpt wizard 只能在WR 6.02 以上版本中使用

    l         它只能在Globe GUI Map File 的模式下使用

    l         不能加载Terminal EmulatorWeb TestJava add-ins时。

     

    1.1.3如何使用RapidTest scrīpt wizard

    1.选择WinRunner的菜单栏中InsertRapidTest scrīpt wizard

     

    2.点击next

     

    3.在窗口中点击 ,后选择需要学习GUI的对象框体。后点击Next

     

    4.选择好框体后,点击Next

     

    5.点击Next

     

    6.点击Learn,后等一段时间(可能比较长,需要点耐心)

     

    7.等待RapidTest scrīpt wizard将所有窗体识别完成后,点击Next

     

    8.Startup script窗体中选择自定义的启动脚本。在GUI Map file:中选择保存GUI 映射文件的路径。

          注意:存到启动脚本后,会在启动脚本中添加一句“GUI_load();”把刚刚识别到的GUI文件添加进去。由于启动脚本在WinRunner每次启动的时候,会先执行,因此如果不需要WinRunner自动导入GUI映射文件的话,可以把这句代码删除,手工在自己的脚本里显式的添加GUI的导入脚本。(推荐)

     

    9.点击OK后,即可完成。

     

    1.2在录制过程中学习GUI

     

    在录制的过程中学习GUI是一种比较灵活和方便的方式。但是由于是一边录制一边添加已经识别到GUI对象到一个临时的GUI文件中,因此如果不规范的录制脚本,就不能对GUI文件作一个规范的管理。到测试后期,就会出现GUI文件使用上的混乱。

     

    1.2.1确认录制前没有导入不需要的GUI文件

    如果在录制之前,有导入其他的GUI映射文件,在该测试过程中遇到的一个GUI组件,而这个GUI刚好有在这个GUI映射文件中的话。这个GUI文件将不会被存放到临时GUI文件中,这样我们如果通过保存临时GUI文件,来确定该脚本需要调用的GUI文件就会有错。

    因此,在录制之前需要,清空已经载入的GUI文件和临时GUI文件。具体做法是选择WinRunner中的Tools>GUI Map Editor

     

     

     

    选择GUI Map EditorFile中的Close All,将所有已经载入的GUI文件和已经存在临时GUI文件中的GUI对象全部关闭 

     

    1.2.2确保录制结束后保存临时GUI文件

     

    无论是新录制脚本,还是在原有脚本上再重新录制。WinRunner会把录制脚本中遇到的从来没有识别到的GUI对象添加的一个临时的GUI文件中。因此,在录制工作结束后,需要把新增加到的GUI对象添加到原有的GUI映射文件中,或者

     

     

     

     

     

     

  • TSL脚本规范完整版

    2006-12-06 16:40:57

     

    TSL脚本编写规范

     

    导言

    我们在Mercury Interactive SystemsWinRunner)中创建的脚本是由TSLTest scrīpt Language)写成的。TSL是一种强化了的类C的编程语言。它是专门设计来用于测试的。在Meercury Interactive的集成测试环境的核心中,TSL是比较高层次的,而且也比较容易使用的。它既有传统编程语言的灵活与强大,也结合了许多Mercury Interactive专门开发来用于测试的功能。

           为了使自己和他人能够比较容易的阅读和理解源程序,本文对今后TSL的编写制订了一个规范。

     

    一、排版

    1.1 程序块采用缩进风格编写

    说明:缩进的空格数为4个,不能使用Tab键。不同的编辑环境导致不同的结果。

     

    错误的示范:

    for(counter = count - 24; counter < count - 1; counter++)
    {
    list_get_item("ListBox",counter,item);
    str = str & item &
    "\r\n";
    }

     

    正确的示范一:

    for(counter = count - 24; counter < count - 1; counter++)

    {
       
    list_get_item("ListBox",counter,item);
        str = str & item &
    "\r\n";
    }

     

    正确的示范二:

    for(counter = count - 24; counter < count - 1; counter++){
       
    list_get_item("ListBox",counter,item);
        str = str & item &
    "\r\n";

     

    1.2相对独立的程序块之间、变量说明之后必须加空行

    说明:便于清晰的显示程序的结构。

     

    错误的示范:

       row1=0;
       row2=
    0; 
      
    ##open two tables
       rc =
    ddt_open(tableFirst, DDT_MODE_READ);
      
    if (rc!= E_OK && rc != E_FILE_OPEN)
          
    pause("Cannot open table");
      
    ddt_get_row_count(tableFirst,RowCount1);

     

    正确的示范:

    row1=0;
       row2=
    0; 


      
    ##open two tables
       rc =
    ddt_open(tableFirst, DDT_MODE_READ);
      
    if (rc!= E_OK && rc != E_FILE_OPEN)
          
    pause("Cannot open table");


      
    ddt_get_row_count(tableFirst,RowCount1);

     

    1.3较长的语句要分成多行书写

    说明:对大于80个字符的语句,要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读

     

     

    1.4循环、判断中有较长的语句需要划分成多行

    说明:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

     

     

    1.5若函数中的参数较长,则要进行适当的划分

    说明:便于清晰的阅读函数

     

    错误的示范:

    tl_step("2:对比两张表",FAIL,""&tableFirst&"的第"&col1&"列第"&table_Row1&"行的值为:"&val1&");

     

    正确的示范:

    tl_step("2:对比两张表",FAIL,

    ""&tableFirst&"的第"&col1&"列第"&table_Row1&"行的值为:"&val1&");

     

    1.6不允许把多个短语句写在一行中

    说明:即一行只写一条语句

    错误的示范:

    auto a;auto b;

     

    正确的示范:

    auto a;
    auto b;

     

    1.7 条件、循环语句需要对语句块进行控制

    说明:if for do while case switch default 等语句自占一行,且if for do while 等语句的执行语句部分无论多少都要加括号{}

     

    错误的示范:

    if (rc!= E_OK && rc != E_FILE_OPEN) pause("Cannot open table");

     

    正确的示范:

    if (rc!= E_OK && rc != E_FILE_OPEN){
       
    pause("Cannot open table");
    }

     

    1.8操作符前后需要加空格

    说明:在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格。采用这种松散方式编写代码的目的是使代码更加清晰。由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。

     

    正确的示范一:逗号、分号在后面加空格

    static a, b, c;

    正确的示范二:比较操作符、赋值操作符、逻辑操作符等双目操作符的前后加空格

    if (current_time >= MAX_TIME_VALUE && current_date<=DATE){
       
        a = b + c;
       
    }

     

    正确的示范三:单目操作符的前后不加空格

    if (current_time!=MAX_TIME_VALUE){
       
        a++;
       
    }

     

    1.9 ifforwhileswitch等与后面的括号间应加空格

    说明:使关键字更加突出、明显。

     

    错误的示范:

     

    if(a > 0){

        b=
    1; 
     
    }

     

    正确的示范:

    if (a > 0){

        b=
    1; 
     
    }

     

    二、注释

     

    2.1有效注释量必须适中

    说明:一般情况下,源程序的有效注释量必须在20%以上。注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。

     

    2.2脚本程序的头部注释

     

    说明:脚本程序头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等

     

    正确的示范:

     

    ###########################################################

    #  Copyright (C), 1988-1999, HSIT. Co., Ltd.

Open Toolbar