QTP 11 安装与自动化测试入门:从录制回放到VBScript编程
2026/8/8 23:57:01 网站建设 项目流程

1. 项目概述:从QTP11说起,自动化测试的“老将”与新思考

最近在整理旧资料时,翻出了一个尘封的安装包——QTP 11。对于很多刚入行的测试新人来说,这个名字可能有些陌生,但在我刚接触自动化测试的那个年代,QTP(QuickTest Professional)和它的“兄弟”LoadRunner,几乎是功能自动化测试的代名词。虽然如今测试领域早已是Selenium、Cypress、Playwright等开源框架的天下,但重新回顾QTP的安装与入门,依然有其独特的价值。这不仅仅是为了怀旧,更是因为理解一个经典的、商业化的录制回放工具的设计哲学,能帮助我们更好地把握自动化测试的本质,尤其是在处理一些遗留系统或特定环境(如SAP、Delphi等)时,QTP这类工具仍有其用武之地。QTP 11是HP Mercury产品线中的重要版本,它集成了强大的对象识别、关键字驱动和VBScript脚本编辑能力。今天,我就带大家走一遍QTP 11的完整安装流程,并分享一些最核心的入门操作和那些年我踩过的坑,希望能给需要接触这类工具的朋友,或者想了解测试工具演进历史的朋友,提供一份实用的参考。

2. 安装前的深思熟虑:环境、版本与许可证

在双击安装程序之前,有几个关键决策点必须想清楚。盲目安装往往会导致后续脚本无法运行、工具不稳定甚至需要推倒重来。

2.1 系统环境与依赖的精准匹配

QTP 11是一个诞生于Windows XP/7时代的桌面应用,它对运行环境有比较严格的要求。虽然理论上能在更新的Windows系统上运行,但兼容性问题层出不穷。

首要原则是尽可能使用官方支持的操作系统。最理想的测试环境是Windows 7 SP1(32位或64位)。如果必须在Windows 10或11上安装,请务必做好心理准备,可能会遇到UAC(用户账户控制)导致的权限问题、.NET Framework版本冲突,或者某些插件无法正常加载。我的经验是,如果只是为了学习和评估,可以在虚拟机(如VMware Workstation或VirtualBox)中安装一个纯净的Windows 7镜像,这是最稳妥的方案。

除了操作系统,还需要检查几个核心依赖:

  • .NET Framework:QTP 11通常需要.NET 3.5 SP1。在Windows 10/11上,可能需要通过“启用或关闭Windows功能”来手动安装。
  • Internet Explorer:QTP对Web测试的支持深度绑定IE浏览器。QTP 11最佳搭档是IE 8或IE 9。使用更高版本的IE需要调整兼容性视图等设置,且稳定性无法保证。这也是QTP逐渐被淘汰的主要原因之一——它无法跟上现代浏览器快速迭代的节奏。
  • Java Runtime Environment (JRE):如果你需要测试Java应用程序,必须安装对应版本的JRE,并在QTP中正确配置Java插件。

注意:强烈建议在安装QTP前,关闭所有杀毒软件和实时防护软件。某些安全软件会拦截QTP对系统注册表的修改或对浏览器的注入行为,导致安装失败或录制功能异常。

2.2 安装包获取与许可证类型解析

如今,官方渠道已经很难下载到QTP 11的安装包。通常,它作为HP ALM(Application Lifecycle Management)或UFT(Unified Functional Testing)套件的一部分存在。确保你拥有合法的许可证文件(.lic文件)或知道许可证服务器的地址。

QTP的许可证主要分两种:

  1. 浮动许可证(Concurrent License):由一台许可证服务器管理,客户端从服务器“借用”许可证。适合团队使用。
  2. 节点锁定许可证(Node-Locked License):绑定到特定计算机的硬件特征(如MAC地址)。适合个人或固定机器。

安装过程中,你需要根据实际情况选择“我已拥有许可证”并指定文件或服务器信息。如果只是短期试用,也可以选择“临时评估模式”,但功能会有时间限制。

3. 分步安装实操与关键配置详解

假设我们已经准备好了Windows 7环境、安装包和许可证,下面开始实战安装。

3.1 主程序安装步骤拆解

  1. 启动安装程序:以管理员身份运行setup.exe。安装界面可能略显陈旧,但步骤清晰。
  2. 接受许可协议:仔细阅读后,勾选接受条款。
  3. 选择安装类型:对于大多数用户,选择“典型安装”即可。它会安装主程序、必备插件和示例。“自定义安装”允许你选择特定插件,如.NET、Java、SAP等,如果你确定不需要测试某些技术类型的应用,可以不装以节省空间。
  4. 指定安装路径:不建议安装在系统盘(C盘)根目录或带有中文、空格的路径下。像D:\Program Files\HP\QuickTest Professional这样的路径是比较好的选择。
  5. 配置许可证:这是最关键的一步。在弹出的许可证配置窗口中:
    • 如果你有.lic文件,选择“使用许可证文件”,并浏览到该文件。
    • 如果使用许可证服务器,选择“使用许可证服务器”,并填入服务器地址和端口(默认为27000)。
    • 临时评估则选择相应选项。
  6. 安装与重启:点击安装后,等待进度条完成。安装程序可能会提示需要重启计算机,务必照做,以确保所有环境变量和注册表项生效。

3.2 核心插件管理与配置

安装完成后,首次启动QTP,会有一个“加载项管理器”窗口弹出。这里的配置直接决定了QTP能测试什么类型的应用程序。

  • Web:必选,用于测试IE浏览器中的网页应用。
  • ActiveX:用于测试包含ActiveX控件的桌面应用或网页。
  • Visual Basic:测试用VB6开发的桌面应用。
  • .NET:测试WinForms或WPF应用程序。
  • Java:测试Java Swing、AWT或SWT应用。
  • SAP:测试SAP GUI客户端。
  • Oracle:测试Oracle Forms应用。

我的建议是:除非你百分百确定未来不会测试某类应用,否则在磁盘空间允许的情况下,把可能用到的插件都勾选上。因为后续再想添加插件,可能需要重新运行安装程序,比较麻烦。勾选所需插件后,QTP会进行初始化配置,这可能需要几分钟时间。

4. QTP 11 核心界面与入门操作解析

第一次看到QTP的界面,可能会觉得有些复杂。我们将其分解为几个核心区域来理解。

4.1 主界面功能区与核心概念

启动后,你会看到菜单栏、工具栏、测试窗格、数据表、调试查看器等。我们先建立几个核心概念:

  • 动作(Action):QTP组织测试脚本的基本单位。一个测试可以包含多个动作,类似于编程中的函数或模块。默认会有一个Action1
  • 对象库(Object Repository):这是QTP的“眼睛”和“记忆”。它存储了你测试应用中所有GUI对象(如按钮、文本框)的识别属性(如name、id、html tag)。录制时,对象信息会自动添加到这里;回放时,QTP根据这里的信息去界面上寻找对象。
  • 关键字视图(Keyword View):以表格形式展示测试步骤,每一行是一个操作(如Click、Set),列包括项目、操作、对象、值等。非常适合新手快速理解和编辑。
  • 专家视图(Expert View):显示真正的VBScript代码。所有在关键字视图中的操作,都会同步生成这里的代码。高级调试和复杂逻辑都在这里编写。

4.2 第一个自动化测试脚本:录制与回放

让我们用经典的“计算器”或一个简单的登录页面来完成第一次录制。

  1. 新建测试:点击“文件”->“新建”->“测试”。
  2. 开始录制:点击工具栏上的红色圆形录制按钮,或按F3。会弹出录制对话框,选择“在应用程序打开时录制”,并指定要录制的应用程序路径(例如calc.exe)或浏览器及起始URL。
  3. 执行操作:在打开的应用程序中,像正常用户一样操作。例如,在计算器中依次点击1+2=
  4. 停止录制:点击工具栏上的方形停止按钮。此时,关键字视图和专家视图中会自动生成对应的测试步骤。
  5. 回放验证:关闭被测试的应用,点击工具栏上的三角形播放按钮。QTP会自动启动应用,并重复你刚才的操作。如果一切顺利,你会看到步骤全部通过(绿色对勾)。

这个简单的过程揭示了QTP的核心工作原理:录制-回放。它通过捕获你对GUI对象的操作,并将其转化为可重复执行的脚本和对象描述。

4.3 对象库:自动化脚本稳定的基石

录制完成后,立即打开对象库(资源->对象库)。你会看到刚才操作过的所有对象,比如计算器窗口、按钮1、按钮+等。点击任何一个对象,在下方属性面板中可以看到QTP用来识别它的属性,如micClass(对象类别)、namenativeClass等。

这里有一个至关重要的经验:录制的对象识别属性往往不是最优的。例如,一个按钮可能被index(索引)属性识别,而这个索引很容易随着界面变化而改变,导致回放失败。你需要手动优化对象识别属性。

优化原则:优先选择那些唯一且稳定的属性。对于Web按钮,idname通常比html tagindex更稳定。你可以右键对象,选择“对象属性”,在“强制属性”列表中添加更可靠的属性(如id),并移除不可靠的属性(如index)。这个维护对象库的过程,是保证QTP脚本长期可用的关键,也是从“录制员”走向“自动化工程师”的第一步。

5. 从录制到编程:VBScript基础与调试技巧

仅仅依靠录制,无法应对复杂的测试逻辑(如条件判断、循环、数据驱动)。这就需要用到专家视图中的VBScript。

5.1 必须掌握的VBScript核心语法

QTP使用的VBScript是VB的一个轻量子集。掌握以下几点,足以应对大部分测试场景:

  • 变量与数据类型:使用Dim声明变量,如Dim username。VBScript是弱类型,但要注意常用类型:字符串(String)、整数(Integer)、布尔值(Boolean)。
  • 输入输出MsgBox “提示信息”用于弹窗提示;InputBox(“请输入”)用于获取输入。
  • 条件判断
    If 条件 Then 语句 ElseIf 条件 Then 语句 Else 语句 End If
  • 循环
    For i = 1 To 10 ‘执行操作 Next Do While 条件 ‘执行操作 Loop
  • 操作对象:这是QTP脚本的核心。语法通常是对象.方法 参数,例如:
    Browser(“百度”).Page(“百度”).WebEdit(“kw”).Set “QTP” Browser(“百度”).Page(“百度”).WebButton(“百度一下”).Click
    这条语句的意思是:在名为“百度”的浏览器中,找到名为“百度”的页面,再找到该页面中名为“kw”的编辑框,设置其值为“QTP”,然后点击名为“百度一下”的按钮。

5.2 数据驱动测试实战

数据驱动是自动化测试的精华,它让同一段脚本可以用多组数据运行。QTP通过“数据表(Data Table)”功能原生支持。

  1. 准备测试数据:在QTP下方的数据表(Global工作表)中,输入多组数据。例如,在A列(Action1)下创建两行,一行用户名user1密码123,另一行user2密码456
  2. 参数化对象值:在关键字视图中,选中需要参数化的步骤(如“设置”用户名),在“值”单元格点击小图标,选择“参数”,然后选择“数据表”和对应的列(如Global表的A列)。
  3. 设置迭代方式:点击“文件”->“设置”,在“运行”选项卡中,设置“运行所有行”或“从第X行到第Y行”。
  4. 回放:回放时,脚本会自动迭代数据表中的每一行数据执行。

更高级的做法是在专家视图中使用DataTable对象直接读取数据:

For i = 1 to DataTable.GetSheet(“Global”).GetRowCount username = DataTable(“UserName”, dtGlobalSheet) password = DataTable(“Password”, dtGlobalSheet) ‘ 执行登录操作… DataTable.SetCurrentRow(i) Next

5.3 脚本调试与错误处理

没有人能一次写出完美的脚本。QTP提供了基本的调试功能:

  • 断点:在专家视图的行号前点击,设置断点(红点)。运行到此处会暂停。
  • 逐语句执行:暂停后,按F11可以逐行执行代码,观察变量变化。
  • 调试查看器:在暂停状态下,打开调试查看器,可以监视或修改变量的值。

健壮的脚本必须包含错误处理。使用On Error Resume NextOn Error Goto 0来捕获和处理预期中的错误(如对象暂时找不到),并结合If Err.Number <> 0 Then来判断是否发生错误,并记录日志。避免脚本因为一个非致命错误而完全停止。

6. 进阶实战:自定义函数与可重用动作

当脚本越来越多,代码复用和模块化就变得极其重要。

6.1 创建与调用函数库

你可以将常用的功能封装成函数,保存在函数库文件(.vbs.qfl)中。

  1. 新建函数库:在资源窗格,右键“函数库”->“附加函数库”->“新建”。
  2. 编写函数:例如,编写一个通用的登录函数:
    Function Login(appUrl, username, password) SystemUtil.Run “iexplore.exe”, appUrl Browser(“Browser”).Page(“Page”).WebEdit(“user”).Set username Browser(“Browser”).Page(“Page”).WebEdit(“pwd”).Set password Browser(“Browser”).Page(“Page”).WebButton(“login”).Click ‘ 添加一些等待和验证逻辑… Login = True ‘ 假设登录成功 End Function
  3. 关联与调用:在测试脚本的设置中,关联这个函数库文件。然后,在专家视图中就可以直接调用Login “http://…”, “admin”, “123456″

6.2 设计可重用动作

动作可以设置为“可重用”。例如,将登录流程封装成一个名为LoginAction的可重用动作。在其他测试中,你可以通过“调用现有动作”来插入这个LoginAction,并传递不同的输入参数。这极大地提升了脚本的模块化程度和维护性。

7. 常见问题排查与性能优化经验谈

即使按照指南操作,在实际使用中仍会遇到各种问题。以下是我总结的一些典型问题及解决思路。

7.1 对象无法识别:90%问题的根源

这是QTP使用者遇到最多的问题。回放时报错“无法找到对象”。

  • 排查步骤

    1. 检查对象库:首先确认对象是否已正确添加到对象库中,且属性值是否与当前应用程序中的对象匹配。使用“对象探测器”(Tools -> Object Spy)去捕获当前运行时对象的实际属性,与对象库中的进行对比。
    2. 检查运行时状态:对象是否已经出现?在操作对象前是否添加了足够的等待时间?使用Wait语句或Exist属性检查。
    3. 检查属性唯一性:对象的识别属性是否足够唯一?是否因为动态内容(如ID包含时间戳)导致属性值变化?考虑使用描述性编程(Descriptive Programming)进行动态识别。
    4. 检查插件:确认是否正确加载了对应应用程序类型的插件(如Web、Java)。
  • 高级技巧:描述性编程: 当对象属性动态变化时,可以不依赖对象库,直接在代码中描述对象。例如:

    ‘ 使用描述性对象直接操作 Set desc = Description.Create() desc(“micclass”).Value = “WebEdit” desc(“name”).Value = “.*user.*” ‘ 使用正则表达式匹配name包含user的编辑框 Browser(“B”).Page(“P”).WebEdit(desc).Set “test”

    这种方式更灵活,但代码可读性会下降。

7.2 脚本运行速度慢

  • 优化点1:同步点与等待:减少硬性等待(Wait 10),多用Sync方法或检查对象Exist属性作为同步点。
  • 优化点2:对象库大小:定期清理对象库,移除不再使用的测试对象。庞大的对象库会降低QTP启动和识别速度。
  • 优化点3:资源检查:关闭不必要的QTP插件和附加进程。

7.3 与外部系统的集成问题

  • 连接数据库:使用ADODB.ConnectionADODB.Recordset对象来连接数据库,验证测试数据或准备测试数据。
  • 处理Excel:除了内置数据表,经常需要操作Excel。可以使用Excel.Application对象模型,但要注意在脚本结束时释放对象,避免进程残留。
  • 调用DLL:对于一些复杂计算或加密操作,可以封装成DLL,在QTP中通过Extern.Declare声明后调用。

回顾整个QTP 11的安装与入门过程,它更像是一个时代的缩影。它的强大在于其高度集成的、对商业环境友好的录制回放机制和对象识别能力,但它的笨重和封闭性也最终让位于更灵活、开源、拥抱现代开发流程的测试框架。学习它,不仅是学习一个工具,更是理解录制回放式自动化的优缺点,理解对象识别的核心思想,这些知识在你使用任何其他GUI自动化工具时都是相通的。最后,如果你今天仍需要在某些特定环境下使用QTP,记住维护好你的对象库、编写模块化的可重用脚本、并建立完善的错误处理和日志机制,这是让“老将”继续可靠工作的不二法门。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询