路漫漫其修远兮,吾将上下而求索

发布新日志

  • vbs正则表达式的几个函数

    2011-08-13 19:18:34

    以前一直没有好好的学过,这次整理一下。

    正则中/d+就是代表一个或多个数字,用这个做例子。

    RegExp就是建立正则的对像。如Set regEx = New RegExp。regEx.Pattern 就是来设置正则的模式的,如

    regEx.Pattern ="/d+"。regEx.IgnoreCase = True   ' 设置是否区分大小写。regEx.Global = True   ' 设置全程可用性。

    RegExp对像有3种方法,分别是execute、test、replace。

    test方法是对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False

    例子:

    Function RegExpTest(patrn, strng)
    Dim regEx, retVal            ' 建立变量。
    Set regEx = New RegExp         ' 建立正则表达式。
    regEx.Pattern = patrn         ' 设置模式。
    regEx.IgnoreCase = False         ' 设置是否区分大小写。
    retVal = regEx.Test(strng)         ' 执行搜索测试。
    If retVal Then
        RegExpTest = "找到一个或多个匹配。"
    Else
        RegExpTest = "未找到匹配。"
    End If
    End Function
    MsgBox(RegExpTest("\d+", "abcd1234"))
    MsgBox(RegExpTest("\d+", "abcd"))

    Replace 方法替换在正则表达式查找中找到的文本,例子:

    Function ReplaceTest(str,patrn, replStr)
    Dim regEx, str1               ' 建立变量。
    'str1 = "dog 123."
    Set regEx = New RegExp               ' 建立正则表达式。
    regEx.Pattern = patrn               ' 设置模式。
    regEx.IgnoreCase = True               ' 设置是否区分大小写。
    ReplaceTest = regEx.Replace(str, replStr)         ' 作替换。
    End Function

    MsgBox(ReplaceTest("dog 123","\d+", "cat")) '将字符串中的123替换为cat

    Execute 方法,则是对指定的字符串执行正则表达式搜索。这里又涉及到Match对像和Matches 集合。Matches 集合就是match的对像集合。Matches 集合中包含若干独立的 Match 对象,只能使用 RegExp 对象的 Execute 方法来创建之。例子:


    Function RegExpTest(patrn, strng)
       Dim regEx, Match, Matches   ' 建立变量。
       Set regEx = New RegExp   ' 建立正则表达式。
       regEx.Pattern = patrn   ' 设置模式。
       regEx.IgnoreCase = True   ' 设置是否区分大小写。
       regEx.Global = True   ' 设置全程可用性。
       Set Matches = regEx.Execute(strng)   ' 执行搜索。
       For Each Match in Matches      ' 遍历 Matches 集合。
          RetStr = RetStr & Match.FirstIndex & "。匹配的长度为"&" "
    RetStr = RetStr & Match.Length &" "
          RetStr = RetStr & Matches(0) &" "      '值为123
         RetStr = RetStr & Matches(1)&" "      '值为44
        RetStr = RetStr & Match.value&" "    '值为123和44的数组
         RetStr = RetStr & vbCRLF
       Next
       RegExpTest = RetStr
    End Function
    MsgBox(RegExpTest("\d+", "123a44"))

  • QTP对象坐标属性abs_x,abs_y,x,y

    2011-08-12 16:48:22

    QTP中,abs_xabs_y是相对于屏幕的绝对坐标xy是相对于frame的坐标。在平时的对象识别过程中,有时不得以会用到QTP的坐标属性进行对象的识别。

            先说一下此前我遇到的问题:

            有这样一个对象结构:Frame--(WebTable)--多个WebElement,在加入对象库后WebElement直接处于Frame下。Frame有滚动条。

    WebElement的排列结构是两列多行,我现在想要通过第二列的对象找出同行第一列的对象,并取到innertext

    我的做法是,通过innertexthtml tag这两个属性找到第二列中的WebElement对象,取出该对象的abs_y。第一列的WebElement对象通过html tagabs_yabs_x进行识别,由于处于同列,abs_x的值是一定的,再将之前取到的abs_y通过SetTOProperty赋给该对象,然后通过GetROProperty取出innertext

    在操作过程中发现有以下几个问题:

    1、通过描述性编程使用html tagabs_yabs_x3个对象无法正确识别,而将一个WebElement加入到对象库后通过SetTOProperty修改属性值是可以识别到的。

    2、在通过GetROProperty获取innertext时,始终读取到的值是不变的,即为对象库加入该对象时对应的innertext值。

            对于第2个问题,通过使用x,y代替abs_xabs_y后解决,但对此仍存在困惑:既然已经能确定abs_xabs_y,为什么还无法取到正确的值?QTP取到的值与界面并不能对应,那么这个错误的值又是怎么来的?


  • QTP问题解答

    2011-08-12 16:39:30

    1.      运行错误:不能识别对象(Cannot identify object)
    出现了这个错误时,就表示当前被测程序的窗口中没有符合条件的对象。
    出现这种错误,可能的原因有以下两种:
    >>> 对象此时在程序中没有显示或不存在。
    >>>在程序中存在该对象,但是它的描述在后来发生了改变,导致与对象仓库中存储的信息不匹配,从而QTP无法识别对象。
    如果你正遇到“Cannot identify object”的问题,解决方法见1.1。
     
    1.1 如何去识别对象描述(Idenfirying Test Object Descrīption Problems)
    如果你能在被测程序中看到对象,但仍出现了“Cannot Identify Object”错误信息,这就表示仓库中对象的描述与程序中对象的描述一定存在着差异。
    解决对象描述问题的第一步是找到差异,最简单的方法是将仓库中对象的属性值与程序中对象的属性值进行比较。(仓库中对象的属性值可在Object Repository窗口中查看,程序中对象的属性值可用Object Spy功能查看。)
    比较仓库中对象的属性值与程序中对象的属性值的操作见1.3。
    在完成比较后,是否发现存在差异?
    如果是,请参考1.4;
    如果否,请参考1.5。
     
    1.2 处理对象丢失问题(Solving Missing Object Problems)
    在运行脚本时,QTP偿试进行某种操作,而该操作的对象在程序中却没有出现,出现这种情况的原因有以下几种:
    >>> 对象不再存在。对象已经被从程序中删除。
    解决方法:见1.2.1。
    >>> 对象还没有装载。
    解决方法:见1.2.2。
    >>>当前的程序页面(或窗口)不正确,不是对象所在的页面(或窗口)。
    解决方法:见1.2.3。
    >>>前一个步骤没有正确执行。
    解决方法:见1.2.3。
    1.2.1 解决对象不再存在的问题
    如果对象已经不再在被测程序中存在,则应在脚本中修改或删除相关步骤。
    1.2.2 解决对象装载超时的问题
    如果对象丢失的原因是因为没有足够的时间装载,偿试以下解决方案:
    a.对于Web对象,增加Browser Navigation Timeout(File>Setting>Web页签)时间。
    b.在包括该对象的步骤前使用Wait语句,让QTP在执行该步骤之前等待一段时间。
    1.2.3 检查前面步骤的执行情况
    如果是因为打开了错误的页面(或窗口)导致对象丢失问题,或因为前一步骤执行措误导致对象丢失问题,则请按以下方法检查原因:
    a. 如果怀疑在完成脚本后,被测程序又发生了改变,则检查对象的继承关系以及对象描述。参考1.1。
    b. 如果怀疑脚本错误,则检查脚本的每一个步骤。你可能是遗失了某个步骤,也可能是使用了不正确的方法或参数。
     
    1.3 测试对象的属性值与Run-time对象的属性值的比较(Comparing Test Object and Run-Time Object Property Values)
    根据以下的步骤比较测试对象与Run-time对象的属性值:
    1) 进入Obecjt Repository窗口(Resources>Object Repository),选择对象。
    2) 用笔记下对象的class以及它的各个属性及属性值。
    3) 打开被测程序,并打开包含被测对象的页面或窗口。
    4) 在QTP中选择菜单Tools>Object Spy或点击Object Spy按钮,打开Object Spy对话框。
    5) 选择“Test Object Properties”选项。
    6) 点击右上角的按钮(带有手图标的),这时QTP窗口以及Object Spy对话框都被最小化。
    7) 在程序页面(或窗口)中点击目标对象,恢复Object Spy对话框,并在对话框中显示对象及其父对象(以树的形式显示),并在Properties页签中显示当前对象的属性及属性值。
    8) 这时Object Spy对话框的Properties页签中显示Run-time对象的所有属性,在此查看对象的class,以及它的属性及属性值,并将它与第2步中记下的内容进行比较。
     
    1.4 解决对象描述存在的问题(Solving Object Descrīption Problems)
    如果发现仓库中对象的属性值与程序中对象的属性值存在不同,你应该判断这个不同是个别对象的问题,还是其它同类对象也存在相同的问题。
    是所有(或多个)同类对象都存在问题吗?
    如果是,则参考1.6
    如果否,则参考1.7
     
    1.5 关于父对象描述的识别问题(Identifying Parent Object Descrīption Problems)
    对象的识别还与它所继承的父对象有关。
    如果你能在被测程序中看到对象,而且程序中对象的属性值与仓库中对象的属性值也是一致的,但仍然遭遇到了“Cannot identify object”错误,则这个错误可能与它的父对象有关(如仓库中父对象的属性值与程序中父对象的属性值不一致),也可能是仓库中的对象与程序中对象的继承关系不相同导致的。
    要判断是继承关系中的哪个父对象出现了问题,请偿试下面的方法之一:
    >>>重新录制对象,比较新旧对象的父对象。
    欲了解如何完成比较,参考1.8。
    >>>对继承关系中的每个父对象,分别插入一个Exist语句,并运行该部分脚本。
    欲了解如果创建Exist语句,参考1.9。
    注:你也可以使用Object Repository窗口中的Highlight in Application功能,在被测程序中定位对象。
    一旦找到了存在问题的父对象,接下来偿试以下方法:
    >>>修复存在问题的父对象的描述。方法见1.4。
    >>>在专家视图的模式下,查找所有继承存在问题的实例并进行修正。
    举例:1.8.1。
     
    1.6 解决某类对象的识别问题(Soving Object Identification Problems for a Test Object Class)
    如果你发现某类对象的对象描述对于被测程序来说都不是很合理,或你预期到对象描述中的某属性值是经常变化的,你可以在Object Identification对话框中改变该类的识别属性的设置,或定义该类的Smart Identification设置并启用Smart Identification机制,这样QTP就可以唯一识别对象了。
     
    1.7 解决单个对象的描述问题(Solving Individual Test Object Descrīption Problems)
    选择下列方法之一来解决对象的描述问题:
    >>>如果被测程序中对象描述发生了改变,并且你也清楚改变的内容,并且该改变是永久性或长期性的,你可以直接手工修改仓库中对象描述中的相关属性值。
    >>>如果被测程序中的对象的属性值依赖于前面的步骤或其它对象,则将该属性值参数化,这样就可以使用其它步骤的输出值为属性值。
    >>>如果属性值的组成部分中,部分是固定的,部分是动态改变的,则可以将属性值设计为正则表达式。
    >>>如果属性值是遵循某种规则变化的,或者是不可预期的,则从对象描述中移除该属性,并向对象描述中添加一个或多个属性以便于QTP进行对象识别。
    >>>If you can only access the information on the property values during the run session, you can create and use functions that use programmatic descrīptions to identify the object using property values retrieved earlier in the run session.
    For more information on programmatic descrīptions, see Using Programmatic Descrīptions.
    >>>如果在录制过程中对象是唯一的,但现在程序中出现了两个或多个描述相同的对象,但是它们在页面(或窗口)中的位置不相同,则应在Object Properties或Object Repository窗口中,向对象描述中添加一个ordinal identifier(index或location)。
     
    1.8 重新录制对象,以判断父对象描述是否存在问题(Re-recording an Object to Identify Parent Object Descrīption Problems)
    根据下面的指引,来判断父对象的问题。
    通过重新录制对象,来判断它的父对象是否存在问题:
    1) 打开浏览器或程序,来到包含被测对象的页面或窗口。
    2) 在关键字视图模式,选择最后一个组件(component),或在专家视图模式,将光标放在最后一个脚本步骤的下面。
    3) 点击Record按钮,或选择Automation>Record。
    4) 点击(或操作)页面或窗口中的目标对象。
    5) 点击Stop按钮,或选择Automation>Stop,完成步骤添加。
    6) 右击新添加的步骤,并选择Object Properties右键菜单。
    7) 在Object Properties对话框中,点击Repository,打开Object Repository窗口,并选中了新对象。注意记下该对象的继承关系。
    8) 在Object Repository窗口中找到旧的对象(即存在问题的对象),将它的继承关系与新对象的继承关系进行比较。
    通过比较,可以检查到新旧对象是父对象的描述存在不同,还是它们的继承关系根本就不同。
    a. 如果是父对象的描述问题,则修改父对象的描述。参见1.4.
    b. 如果是对象的继承关系不正确(即具有不同的父对象)引起的问题,则在脚本中找到所有使用该继承关系的实例,将它们替换为正确的继承关系。
    举例:参见1.8.1。
     
    1.8.1 举例
    假设有一个带有Frame的网站,你录制了一个操作针对Image对象“Poster”的操作步骤。在Object Repository窗口,你可以Image对象的继承关系如下所示:
    MyCompany(Browser)
        MyCompanyPage)
            Main(Frame)
                 Poster(image)
    当你运行脚本时,网页看起来没有什么不同,但是识别Image对象时却出现了“Cannot identiry object”的错误提示。当你重新录制操作步骤,然后在Object Repository窗口中查看新的Image对象时,发现该对象的继承关系如下所示:
    MyCompany(Browser)
        MyCompanyPage)
             Poster(image)
    从中可以看出,Frame已经从Web Page中移除,所以尽管Image对象“Poster”的描述没有发生任何改变,但它的继承关系已经改变了。
    Object Repository窗口,你可以看到新旧Image对象“Poster”是两个完全不同的对象:旧的位于已经被移除的Frame对象之下,而新的则直接位于Page“Mycompany”对象之下。
    修复这个问题,可以在脚本步骤中将旧的对象替换为新的对象。
    为了保持Object Repository窗口的整洁,你应删除那些已不再存在的对象(如本例中的Frame)。
     
    1.9 创建Exist语句,以判断父对象的描述是否存在问题
    QTP在录制发生在某个对象上的操作时,也会同时去了解对象以及它的继承关系。因此,如果在运行过程中,QTP不能识别继承关系中的任何一个父对象,都会导致目标对象的识别失败。
    使用带有Exist方法的Msgbox语句,可以方便的检查出是继承关系中的哪个父对象出现了问题。
    假设在运行下面脚本时,你遇到了“Cannot identify Object”错误信息(但是可以确定对象仓库中Link对象的描述与当前程序中对象的描述是完全一致的):
    Browser("Yahoo!").Page("Yahoo!").Link("Arts & Humanities").Click
    你可以在该语句前面插入以下语句:
    Msgbox Browser("Yahoo!").Exist
    Msgbox Browser("Yahoo!").Page("Yahoo!").Exist
    Msgbox Browser("Yahoo!").Page("Yahoo!").Link("Arts & Humanities").Exist
    然后你从头开始运行脚本,发现第1行语句运
    但是,当QTP运行到第2步时,就弹出信息框,内容为“False”,表示不能找到Page object。这就证明Page对象存在问题。
    确定了出现问题的父对象以后,修复该问题。参见1.4。
     
    2.      运行错误:对象不唯一(The object is not unique)
    在被测页面或窗口中的同一父对象下,找到多个与仓库中对象描述相符的Run-tim对象。
    请确定是只有个别对象存在此问题,还是此类对象的所有对象(或部分对象)存在此问题。
    此类对象的所有对象(或部分对象)都存在此问题吗?
    如果是,参考2.1;
    如果否,参考2.2。
     
    2.1 为某对象类设置能唯一识别对象的描述规则(Configuring Unique Test Object Descrīptions for a Test Object Class)
    如果你发现某类对象的对象描述都不足以唯一识别对象,你可以在Object Identification对话框中,改变该类的识别属性的设置,或定义该类的Smart Identification设置并启用Smart Identification机制,这样QTP就可以唯一识别对象了。
     
    2.2 设置通唯一识别对象的对象描述(Creating a Unique Test Object Descrīption for an Object)
    查看当前对象的描述,并偿试在程序中找到其它具有相同描述的对象并查看它们的描述。
    >>>如果你找到了可以将它们区别开来的一个或多个属性,则修改仓库中对象的相关属性(如向描述中添加属性等),以使QTP在运行时可以唯一识别它。
    >>>如果它们的识别属性完全相同,则在对象描述中为对象添加一个ordinal identifier(index或location)。
     
    3.      运行错误:找不到父对象(Parent not found)
    识别对象时,会先识别它的父对象是否正确。如果遇到“Parent not found”的错误信息,请偿试以下解决方法:
    >>>修复出现问题的父对象的描述。参见1.4。
    >>>在脚本中找到继承关系不正确的实例,并修改为正确的继承关系。例如1.8.1。
     
    4.      运行错误:无效的参数(Invalid arguments)
    一个或多个方法的参数是无效的。
    参数无效可能是参数类型错误,也可能是参数个数不正确。
    根据以下建议,找到方法的正确语法:
    >>>在Keyword模式,如果方法包括参数,则在Value栏会显示该方法的参数提示。
    >>>在Expert模式,如果方法包括参数,则当你插入方法然后按下Shift+Ctrl+Space键时,QTP会显示该方法的参数的提示信息。(注:只有在Editor Options对话框的General页签中打开了Statement completion功能时才可以看到参数的提示信息。)
     
    5.      运行错误:不能识别item(Cannot identify item)
    QTP不能识别方法参数中指定的列表或树对象的item时,请确认指定的item是否存在于对象之中。
    >>>如果item不存在,则删除相关脚本步骤,或修改item。
    >>>如果item存在,但被测程序中它的名字发生了改变,则修改item的名称,或在脚本中使用item的index而不是名字(如“#4”)。注意,不同的对象或方法,它们使用index的语法可能不同。
     
    6.      运行错误:对象的item不唯一(The object’s item is not unique)
    在列表或树对象中,可能有多个名字相同的item。
    在这种情况下,可以指定item使用index(例如“#4”)。
     
    7.      运行错误:运行失败(Test run failed)
    测试运行失败,还有可能是其它未知错误造成的。检查出现错误时的脚本步骤。
    如果错误出现在执行检查点或输出值时,请查阅关于检查点与输出值的帮助。
    如果错误出现在使用外部文件时,如数据库表、数据库、环境变量文件、或关联仓库文件等,则检查是否可以正常获取并使用文件,或这些文件的存储格式是否正确。
    如果错误出现在完成某个脚本动作时,请参考QuickTest Object Model Reference帮助,以确认方法或函数的使用是否正确。
    如果错误出现在执行一个标准的VBscrīpt语句时,参考Microsoft VBscrīpt Reference以获得帮助。
  • QTP中获取当前路径[转]

    2011-08-03 23:54:10

    转载地址:http://hi.baidu.com/yolanguo/blog/item/53fab0ff17e8388eb801a088.html

    实属转帖,方便以后查找~

    QTP9.2版本,以下内容适合QTP和vbs。

    路径一:QTP的测试当前路径
    environment("TestDir")

    使用environment("TestDir")能获取当前测试的绝对路径,不包括最后的“\
    方法
    Path = environment("TestDir")

    路径二:QTP安装目录下bin目录的路径
    WshShell.CurrentDirectory

    注:不包括地址最后的“/
    方法
    Dim WshShell,path
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Path = WshShell.CurrentDirectory
    以上为vbs中的用法,如果是在QTP中使用,则可以用以下方法(vbs也可以用以下方法):
    Dim WshShell,path
    Set WshShell = CreateObject("WScript.Shell") ‘就这一句少了“WScript
    Path = WshShell.CurrentDirectory
    注意:此方法在QTP运行时获取的将是QTP安装目录下bin目录的路径,如果是写在vbs文件中,然后加载到QTP中,在QTP运行时也是获取QTP安装目录下bin目录的路径。但是如果是编辑一个测试脚本(脚本里包含此获取路径方法,或引用的vbs文件包含此获取路径方法),然后保存(不要关闭脚本),这时运行脚本,则此方法将获取测试脚本存放的当前路径。关闭脚本再打开运行,则还是会获取QTP安装目录下bin目录的路径。因此在调试时可能是正常的,但到运行时就出错了。
       而如果用environment("TestDir"),则获取的都是当前测试的存放路径,但是不能用在VBS文件中(除非此文件是加载到QTP中运行的,那就可以)。
    QTP安装目录下的bin路径:C:\program files\Mercury Interactive\QuickTest Professional\bin

    路径三:vbs文件的路径
    left(Wscript.ScriptFullName,len(Wscript.ScriptFullName)-len(Wscript.ScriptName))

    注:包括地址最后的“/
    方法
    Path = left(Wscript.ScriptFullName,len(Wscript.ScriptFullName)-len(Wscript.ScriptName))
    注意:此方法只能用在单独的vbs文件中,加载到QTP中的vbs文件如果含有此方法也会报错。因为QTP不支持WScript

  • vbs 获取当前路径

    2011-08-02 11:41:52

    test = createobject("Scripting.FileSystemObject").GetFolder(".").Path

    test = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path
  • QTP中与时间同步点:Sync、Wait、Waitproperty、Exist

    2011-08-02 09:47:14

    同步点是QTP是很重要的一部分。常用的同步点方法有以下几种:
    1)Sync方法;
    2)WaitProperty方法;
    3)Wait方法;
    4)Exist方法;
    1)Sync
    只有browse和page对象具有Sync方法,其它的对象都不具有该方法,那么browse.sync和page.sync有什么区别呢?
    browse.sync表示等待浏览器加载完成后进行下一步操作,浏览器加载完成的标志是浏览器显示左下角显示完成字样。
    page.sync表示页面中所有的元素都已加载完成后,进入下一步的操作。
    语法:object.Sync
    示例:
    Sub Sync_Example()
    'The following example uses the Sync method to wait for the
    'Mercury Tours page to synchronize.
    before performing the next operation.
    Browser("Mercury Tours").page("Mercury Tours").Sync
    End Sub
     
    2)WaitProperty
    等待指定对象属性获得指定值或超出指定超时后再继续下一步。如果属性获得该值则返回 TRUE,如果在属性获得该值之前发生超时则返回 FALSE(注意:FALSE 返回值不表示步骤失败)
    语法:object.WaitProperty (PropertyName, PropertyValue, [lTimeOut])
    示例1:
    Sub WaitProperty_Example()
    'The following example uses the WaitProperty method to wait for the
    'All kind of link's readyState to be complete or for
    '4 seconds (4000 milliseconds) to pass, whichever comes first.
    'If the link achieves this value before 4000 milliseconds pass,
    'QuickTest clicks the link.
    If Browser("index").Page("index").Link("All kind of").WaitProperty("attribute/readyState", "complete", 4000) Then
        Browser("index").Page("index").Link("All kind of").Click
    End If
    End Sub
    示例2:
    Sub WaitProperty_Example()
    'The following example uses the WaitProperty method to wait for the
    'Account edit box to be enabled before setting its value to 123.
    'If it is still disabled after the test's
    'Object Synchronization Timeout time has been exceeded, it will not
    'perform. the Set method.
    If Browser("index").Page("index").WebEdit("Account").WaitProperty("disabled", 0) Then
        Browser("index").Page("index").WebEdit("Account").Set ("123")
    End If
    End Sub

    3)wait
    wait函数,当脚本走到wait函数时,就开始执行这个函数.如:wait(10),就等待10秒种后再继续执行下面的语句.wait函数的这个等待的时间,那相对来说是固定的,可能造成时间的浪费,或者等待时间的不足.

    4)Exist
    检查对象当前是否存在于打开的应用程序中。返回一个Boolean 值。
    语法:object.Exist([TimeOut])
    示例:
    Sub Exist_Example()
    'The following example uses the Exist method to determine the
    'existence of the "Mercury Tours" browser. If the object exists,
    'a message box appears confirming its appearance.
    If Browser("Mercury Tours").Exist Then
      MsgBox "The browser exists."
    End If
    End Sub
    在项目中根据不同的需要选择适合的函数或方法。
  • 修炼成QTP高手的十个步骤

    2011-07-07 00:33:00

    修炼成QTP高手的十个步骤

     
      1 QTP实用VBScript作为测试脚本语言,因此需要掌握很多VBScript的知识;软件测试自动化框架 ;QTP的用户指南 Sources:;COM/DCOM 技术 主要是Excel, Word, Outlook等相关的COM技术;HP的QTP Knowledge Base 包含很多实用的QTP技术文章……

        VBScriptQTP实用VBScript作为测试脚本语言,因此需要掌握很多VBScript的知识:
            w3schools' VBScript. tutorial
            MS' VBScript. Guide.
        软件测试自动化框架
            Test Automation Frameworks
            Choosing a Test Automation Framework
            Totally Data-Driven Automated Testing
            Seven Steps to Test Automation Success
        QTP的Tutorial帮助文档Sources:'\help\QTTutorial.pdf' or '\help\Tutorial.chm' in QTP Install folder.
        QTP的用户指南Sources:'\help\QTUsersGuide.pdf' or '\help\MainUsersGuide.chm' in QTP Install folder.
        COM/DCOM技术主要是Excel, Word, Outlook等相关的COM技术:
            MS Internet Explorer
            MS Excel
            MS Outlook
        SQL
            w3schools' SQL tutorial
            MS SQL Server -thisandthis
            Oracle DB
        XML
            w3schools' XML tutorial
        HTML, DOM测试WEB应用程序时必须了解:
            w3schools' HTML tutorial
            w3schools' DHTML tutorial
            A Beginner's Guide to the XML DOM
            DOM tutorials
        HP的QTP Knowledge Base包含很多实用的QTP技术文章:
            HP Self-solve Knowledge Search
        一些有用的网站
            Google
            Easy way to automate testing


  • QTP书籍推荐

    2011-06-15 23:12:24

    http://www.testwo.com/space-3226-do-blog-id-3029.html
    摘自 测试窝网站
    目前国内自动化测试的书籍和教程还比较少,TIB自动化测试工作室特地汇集了一下国内外自动化测试方面的书籍,供大家参考,其中包括TIB自动化测试工作室成员的著作,也包括国外专家的著作、电子教程:
    1、《QTP自动化测试实践》
    http://www.china-pub.com/39984
    国内第一本QTP自动化测试专著,自发行以来经过多次重印,详细介绍了基于QTP的自动化测试技术,适合自动化测试初学者阅读。
     
    2、《QTP自动化测试进阶》
    http://www.china-pub.com/196842
    《QTP自动化测试实践》的升级版,补充了一些高级内容,基于QTP10讲解自动化测试技术。
    读书笔记
    http://www.cnblogs.com/testware/archive/2010/08/21/1805134.html
     
    3、《软件自动化测试成功之道》
    http://www.china-pub.com/196509
    国内第一本基于TestComplete的自动化测试著作,同时讲解了自动化测试框架搭建的内容。
    节选连载:
    http://blog.csdn.net/Testing_is_believing/archive/2010/04/25/5527702.aspx
    学习笔记:
    http://www.cnblogs.com/testware/archive/2010/06/26/1765938.html
     
    4、TestComplete基础教程
    http://www.cnblogs.com/testware/archive/2010/07/11/1775317.html
    由TIB自动化测试工作室成员负责翻译的TestComplete教程,覆盖了工具基本使用、数据驱动等方面的内容。
     
    5、《QuickTest Professional Unplugged》
    国外QTP专家Tarun Lalwani编写的QTP专著。
    http://knowledgeinbox.com/books/quicktest-professional-unplugged/
    附带源代码下载:
    http://download.csdn.net/source/2452893
     
    6、《TestComplete Made Easy》
    国外专家编写的TestComplete工具使用教材。
    下载地址:
    http://www.microway.com.au/catalog/automatedqa/TestComplete7-comp.pdf
    http://blog.csdn.net/Testing_is_believing/archive/2010/01/09/5163184.aspx
     
    7、《WebUI Test Studio QA Edition Made Easy》
    国外专家编写的WebUI Test Studio工具使用教材。
    下载地址:
    http://www.telerik.com/documents/automated-testing-tools/WebUITestStudioQAEditionStepByStep.pdf?hq_e=el&hq_m=426238&hq_l=31&hq_v=9005804ccf
     
     
    9、《软件测试自动化》
    国内翻译的为数不多的自动化测试书籍,英文名《Just Enough Software Test Automation》
    书摘:
    http://files.cnblogs.com/testware/JustEnoughSoftwareTestAutomation.rar

Open Toolbar