空间的文章都是从51里面学习过来的,把自己整理的贴出来,希望可以为有需要的提供方便:)

发布新日志

  • SQADatapoolOpen参数解释

    2007-09-24 12:35:20

    '`3T7B­qWG67904return&  = SQADatapoolOpen (name$, [wrap], [sequence], [exclusive])
    b
    ei4G~*S67904
    dp_id = SQADatapoolOpen ("dp", FALSE, SQA_DP_SEQUENTIAL, FALSE)
    yk\-VF­g)B0bw67904name$
    51Testing软件测试网 a"J


    F c1vXX}#}
    u
    "dp"
    DATAPOOL 名字51Testing软件测试网R‑a V}0r5N&aR

    *h)R4S Ke.m67904wrap

    1v;R#r9~!y5c*_67904FALSE
    :只当指针循环到DATAPOOL最后一行时,指针指向第一行,继续循环执行。51Testing软件测试网,f3Sd1|*y[1]G
    K(I­V

    TRUE
    :只当指针循环到DATAPOOL最后一行。访问DATAPOOL结束51Testing软件测试网1s"vN#i-W7l
    t

    51Testing
    软件测试网5z#P)p$aU(]
    sequence

    F4X
    TN3wl+M+U­i-^67904
    SQA_DP_SEQUENTIAL
    :按顺序从DATAPOOL中读取资料。
    7u)^rq+[ Y$T W6NSw p3b67904SQA_DP_RANDOM
        随机从DATAPOOL中读取资料
    O(F4m5a/j(w`NL0q67904SQA_DP_SHUFFLE
       混乱读取从DATAPOOL但是只是读取一次,ONLY ONCE
    H
    e­\‑P/?6790451Testing
    软件测试网Rv[1]q ZMm
    U"b

    exclusive
    51Testing软件测试网%pk ]5M9k8d6`:r1C.f
    FALSE
    :指出DATAPOOL 的指针是共享的51Testing软件测试网] y
    E6o
    M.PI4O‑X]

    TRUE
    : 指出DATAPOOL 的指针是专用的
    3sb]UEU‑sIjJ:rT6790451Testing
    软件测试网9U,Ks)oA'gWG0oG51Testing软件测试网#}0i3o
    dUTY C
    values is returned (Long):
    #z1Pd#j ~4q k67904SQADpUninitialized   -1     /SQA DATAPOOL
    初始化
    +?\`b W9_67904sqaDpFailure         -2     /SQA DATAPOOL
    读取失败51Testing软件测试网.@&T q[1]UC;w
    sqaDpInvalidArgument -998   /SQA DATAPOOL
    有病操作
    K
    q:Gd
    na~67904
    sqaDpExtendedError   -999   /SQA DATAPOOL
    引用错误

  • robot通配符号

    2007-09-24 12:33:07

    问号和星号
    ? 代替一个字符
    *
    代替多个字符

    ROBOT
    中包含通配符号要用{}这个符号扩起来

    所以 Window SetContext, "Caption=工程管理\*", ""
    应该改为 Window SetContext, "Caption=工程管理{*}",

     

  • SQAGetProperty(".\","Recognition",value)的应用

    2007-09-11 18:03:13

    SQAGetProperty("CurrentWindow","Recognition",value)
    用于当前窗口信息的一个函数,
    ".\"
    当前窗口,
    "Recognition"
    我也不知道什么意思,不需要自己定义
    value
    我要用的就是这个值,str(value)返回的是当前窗口的类型和标题
    下面是我的一个应用举例:
    代码省略
    msgbox “
    已弹出窗口!
    Result=SQAGetProperty("
    CurrentWindow","Recognition",value)
    If str(value)="Type=Window;Caption=MyWindow"  Then
      msgbox "sqaPass"
    Else
    msgbox "sqaFail"
    End If
    当然可以做其他的处理
    说明:"Type=Window;Caption=MyWindow"是我们预期应该出现的窗口的类型和标题,可以用SQAGetProperty("
    CurrentWindow","Recognition",value)事先得到

  • HTML识别时应用变量

    2007-09-11 18:02:31

    dim curdate as string
    dim curtime as string
    curdate="2003-5-4"
    curtime="1:20"
    htmllink click,"Type=HTMLLink;HTMLText="&curdate+curtime, ""

    “+也是可以

    如果用SQAGetproperty,如

    y=cstr("webfx-tree-object-")+cstr(y)+cstr("-anchor")

    result=SQAGetproperty("Type=HTMLLink;HTMLId="&y,"innerText",x),把中间的"",去掉才行。

  • 库文件等

    2007-09-09 15:06:10

        SQABasic头文件包含一系列的声明,头文件可以应用到

    一.声明共有或则全局常量,变量和用户定义类型

    二.声明自定义sub,proceduresfunction

    头文件中的声明可以应用到任何模块(脚本或者类库文件)。用’$include关键字,放在模块开始的地方-例如:

         ’$include “global.sbh”

    SQABasic头文件类型

    Sqabasic支持两种头文件类型:

    一.头文件保存在sqabasic路径。不用指定任何路径信息就可以在本工程或者其他工程中应用他们

    二.工程头文件可以保存在TMS_scrīpt文件夹中。不用指定任何路径信息就可以在同一个工程中处理。

    这两种SQABasic头文件都有同样的扩展名- .sbh

    库文件

    库文件包含一个或者更多供procedure从其它文件调用的sub,procedurefunction

    一.SQABasic库文件(扩展名为.sbl或则.rec

    注意.rec文件可以作为脚本文件或者库文件,但是.sbl只能被用作库文件。

    二.动态连接库文件(扩展名.dll

    下边的表格这几种类库文件不同的总结:

    .sbl
    .rec
    .dll

    位置
    SQABasic
    路径
    当前工程文件中Datastore(文件夹 TMS_scrīpt
    TMS_scrīpt/dll
    文家夹或则其他位置

    范围
    SQABasic路径中,对所有工程文件都可用
    对同一个工程所有脚本可用
    依靠位置

    验证点
    不支持
    支持标准的robot验证点
    支持自定义验证点

    任何.rec文件都能作为库文件。不管怎样,如果一个.rec文件作为脚本(可以从robot中直接运行或者用callscrīpt命令),他必须有一个main过程。

    SQABasic库文件中声明过程

    如果在SQABasic过程中有一个自定义的过程,你声明类文件的方法同样适用声明过程。

    下边的例子是在sqabasic库文件中(mylib.sbl)声明一个自定义过程(mysub:

         Declare Sub MySub Basiclib “MyLib”( arg1 as string,arg2 as integer)

    一.关键字basiclib,表示过程mysub在一个sqabasic库文件中

    二.库文件的名字“mylib”,这里不需要写扩展名(.sbl或者.rec

    备注:basiclib关键字特指.sbx库文件的声明(和.dll库文件相对),这里不需要也不推荐带有.sbx扩展名的声明。

    什么地方声明SQABasic库文件

    可以在任何位置声明SQABasic库文件

    一.在脚本或者其他库文件,仅在模块中应用过程

    二.头文件中,用道的模块

    库文件包含不需要指定的例程或者’include头文件

    dll文件声明过程文件

    如果在dll文件的自定义过程,声明过程同样可以声明dll文件。

    下边是dll文件中(mydll.dll)声明自定义过程(mysub)的例子:

           declare sub mysub lib “mydll”(byval arg1 as string,Byval arg2 as integer)

    一.声明中加入Lib关键字,表示声明的过程在dll文件中(相对于.sbl或者.rec sqabasic库文件)

    二.库文件名字(mydll),跟随库指定的名称

    三.参数声明通常包括关键字byval(参数声明包括任何关键字)

    如果编译位置在sqabas32路径或在系统路径的库文件(.dll),你不用特别声明路径。如果库文件不再sqabas32或者在系统路径,你需要制定路径,比如

           Declare Sub MySub Lib “E:MyDll”  (byval arg1 as string,Byval arg2 as integer)

    在什么地方声明dll文件

    你可以声在任何为指声明dll文件:

    1.脚本或者sqabasic库文件,要用过程的模块

    2.头文件,任何模块指定的头文件

    SQABasic路径

    Sqabasic路径是robot保存和寻找sbl库文件和头文件的地方,用户在robot中也可以定义。

    一旦你在robot中指定sqabasic路径,这个路径是固定的。不管怎样,robot自动设置sqabasic路径,当下列条件是真的时候:

               i.仍没有明确在robot中定义sqabasic

             ii.已经在rational Aministrator建立新的工程和数据仓库

            iii.打开最近创建的工程和数据仓库

    当上边所有条件为真的时候,robot自动在新工程和数据仓库中设置sqabasic路径到下列位置:

    [NewProject][NewDatastore]DefaultTestscrīptDatastoreTMS_scrīptSQABas32

    设置步骤:

    1)Tools->General Options

    2)Preferences页面

    3)SQABasic路径中输入路径

    Rational test早期版本没有提供菜单选项来设置sqabasic路径参阅sqa common directory片断

    指导使用头文件和库文件

    推荐下边使用库文件方法:

    a)自定义函数或者过程应该使用有同样文件名字的头文件(.sbh)和库文件(.sbl),比如DataFunctions.sbhDataFunctions.sbl。这个过程和函数在头文件中定义(指定声明头文件)和在库文件中定义。看下边的例子

    b)分离头文件(参阅常量头文件)用于包含常量,变量和用户定义类型用于脚本或者库文件调用。头文件用同样的文件名字后边附加_x或则_C(附加是 早期命名规定)。注意包含常量和变量的头文件必须加入到声明头文件和库文件之前。(DataFunctions.sbh DataFunctions.sbl),比如’include “DateFunctions_c.sbh”。这样做很容易维护。

    c)通过分类或者程序把相关的函数放在同一个库里,例如,把所有日期相关的函数放到DataFunctions.sbh/sbl,或者把所有的函数加入为特定程序开发的函数库中(比如AppName.SBH/SBL


    d)
    函数是在库文件中子程序的的首选方式,处分过程的结果对于调用脚本是不相关的。函数应该返回一个值,或者适当的,数据可以通过变量或者数组返回。在后边的例子中,函数返回的结果表示成果或者失败。


    e)
    库文件中的所有得函数和子程序必须有注释,包含这个过程的目的和用途::

    请看下边的例子。


    f)
    库文件的注释有合理的解释,通过读注释可以知道过程的逻辑


    g)
    如果开发和维护robot库文件是集中管理的方式,那么你可以加入到’$include 所有库文件到global.sbh头文件中,这样做对所有头文件都有用。这可以加入缺省的脚本模板。作为选择,测试人员在每个脚本中可以选择或者包含需要的库文件。

  • 如何将日期 2007-8-20 08:00:31 PM 转换成字符串然后附加到一个固定值后面替代随机数

    2007-09-09 15:05:22

    最关键的就是在robot里面如何转换空格并显示

    空格可以用trim命令裁减掉,还可一看一下InstrltrimrtrimGetfield等相关命令

    通过hourminutesecond获取时间或通过GetField命令过滤掉 字符

     

  • robot连接mysql

    2007-09-06 15:16:12

           这是使用Robot连接TestDirector数据库的一个例子。

    首先在控制面板的ODBC中新建一个DSN,选择SQL Server连接,名字是td_test(这个可以自己随便取),连接服务器选择你TD库保存的DB服务器名称。连接你想要查询的库名,我这里是gpt_gogs_db,登录名是td,密码tdtdtd(在TD中新建一个project时,数据库默认所有者为td,密码为tdtdtd),这里仅两不要使用权限过大的用户,因为在脚本中是要明文写入密码的。最后测试一下数据源。

    开始编写脚本了:

    ======================================================================

    Sub Main
        Dim Result As Integer
        Dim connect as long
        Dim outputstr,query as string
        Dim out(1 to 2,1 to 16) as variant      
        '
    这里定义一个二维数组,第一维表示数据库中查询结果中的行,第二维表示查询结果中的列,可以看到这里可以一次查询并存储两行两列
        dim retcode as variant
        dim i as integer
        'Initially Recorded: 2005-7-18  22:16:12
        'scrīpt Name: sqltest
        connect = SQLOpen("DSN=td_test;UID=td;PWD=tdtdtd",outputstr)
        '
    注意这里各个参数和等号及等号后面赋值是紧跟着的,没有空格,因为如果有空格的话连接的时候连空格也算上
        '
    这样的话连接的时候就会提示选择DSN或是输入用户名,密码
       
        query = "select bg_bug_id,bg_status from bug where bg_subject='113'"
        '
    最好在查询分析器中执行一下这条语句
       
        call SQLExecquery(connect,query)
        
        call SQLRetrieve(connect,out()) 
        
        msgbox out(1,1)
        msgbox out(2,1)
        msgbox out(1,2)
        msgbox out(2,2)
        '
    显示保存的结果
    '    next
       
        call sqlclose(connect)
        
       

    End Sub

    =================================================================================

    这里尤其注意那个设置二维数组的地方,这个二维数组可以一次存储多个查询结果,其结构就类似SQL Server中查询分析器查询后的结果。

    如果我生明了两个二维数组即可保存不同的查询结果。

    其读取查询内容的函数也应该重点看看。

    如果想要返回不同的查询语句结果,应该这样写:

    =================================================================================

    Sub Main

        Dim Result As Integer

        Dim connect as long

        Dim outputstr,query1,query2 as string

        Dim out1(1 to 2,1 to 1) as variant

        Dim out2(1 to 2,1 to 1) as variant     

        '这里定义一个二维数组,第一维表示数据库中查询结果中的行,第二维表示查询结果中的列,可以看到这里可以一次查询并存储两行两列

        dim retcode as variant

        dim i as integer

        'Initially Recorded: 2005-7-18  22:16:12

        'scrīpt Name: sqltest

        connect = SQLOpen("DSN=td_test;UID=td;PWD=tdtdtd")

        '注意这里各个参数和等号及等号后面赋值是紧跟着的,没有空格,因为如果有空格的话连接的时候连空格也算上

        '这样的话连接的时候就会提示选择DSN或是输入用户名,密码

       

        query1 = "select bg_bug_id,bg_status from bug where bg_subject='113'"

        '最好在查询分析器中执行一下这条语句

    query2 = "select bg_bug_id,bg_severity from bug where bg_subject='113'"

    '不同的查询语句

     

        call SQLExecquery(connect,query1)

       

    call SQLRetrieve(connect,out1())

    '执行完查询语句后赋值给一个二维数组,切记!

     

       

        call SQLExecquery(connect,query2)

       

        call sqlretrieve(connect,out2())

       

        msgbox out1(1,1)

        msgbox out1(2,1)

        msgbox out2(1,1)

        msgbox out2(2,1)

        '显示保存的结果

    '    next

       

        call sqlclose(connect)

       

     

    End Sub

     

  • 在log中不显示验证点的fail状态

    2007-09-06 15:15:34

    再用if语句判断不同结果时的执行不同的语句,如果想在log中显示pass,需要在VP之前加入SQASuspendLogOutput

  • 对于log记录一个函数值

    2007-09-05 15:25:11

    SQALogMessage sqapass,"VP result:(名字)",str(Result)(函数)

  • 检查IE浏览器是否打开,如果打开就关闭它

    2007-09-05 15:24:47

    Result = WindowVP (Exists, "Caption={* - Microsoft Internet Explorer}", "VP=Test;Wait=1,3")

    if Result=1 then

       Window SetContext, "Caption={* - Microsoft Internet Explorer}", ""

       Window CloseWin, "", ""

    end if

    如果是多个IE窗口,可以执行多次的循环

  • robot获得程序可能弹出的未知窗口属性的方法

    2007-09-04 16:18:19

    If (WindowVP (Exists, "Caption=Print to File","Status=Normal;Wait=1,10") = 1) then
            Window SetContext, "Caption=Print to File", ""
            PushButton Click, "Text=Cancel"
    End If

     

  • SQAGetProperty使用

    2007-09-04 16:15:47

    使用SQA最好使用对应控件的函数,比如你要得到的是一个edit控件的text,你就查一下edit类的函数有没有得到text的

    看清楚,最后一个参数(变量)没有引号

    这句的意思是,把“Type=CheckBox;Text=Match case”窗口的属性"State"的值赋给CheckState
    这样你就得到了窗口的属性,对任何窗口都是一样的。

    调试时可以将该语句设置断点,并打开Variable window就可以看到Result值了,返回值0,表示语句正确,可以成功读取属性的值;返回值为1002,表示第一个参数的语法错误;返回值为1003,表示所要读取的控件没有找到,说明第一个参数的语法还是对的,这种情况经常出现在含有网页层次的控件中;返回值为1005,表示你要读取的属性没有找到,可能你想抓取的值并不是控件的属性,或者在区分控件前的“\”丢失了

  • 对象识别的利器―Inspector

    2007-09-03 15:48:22

    通过Robot toolsInspector..打开。现在使用SQAGetProperty命令获取11的结果值,并通过msgbox显示该值。
       
    鼠标左键按住Inspectot工具栏上的“Select Objcet”按钮,然后选择计算器的结果放开鼠标左键。Inspectot中显示出对象的识别方法,鼠标左键点击工具栏上的“Copy recognition String”按钮拷贝识别方法,属性值通过选择Inspector左下角窗口中的Text属性,然后鼠标左键点击工具栏上的“Copy”按钮拷贝属性。
  • 共用测试脚本

    2007-09-03 15:40:06

    Administrator中建立一个项目,然后在别的计算机上注册(右击Project)这个项目就OK了,同时要在administrator中设置几个test user,赋予不同的权限。把那个文件夹共享。

我的栏目

我的存档

数据统计

  • 访问量: 5093
  • 日志数: 14
  • 建立时间: 2007-09-03
  • 更新时间: 2007-09-24

RSS订阅

Open Toolbar