对很多从功能测试转自动化测试的人来说,QTP(HP QuickTest Professional,现在叫Micro Focus UFT One)可能有点遥远,但只要你进过那些跑了十来年的测试资产,就绕不开它。为什么今天还要写“安装QTP”这种标题?因为我这两年帮好几个团队搭过这套环境,发现翻车点从来不在“下一步”按钮,而在版本兼容、License激活、IE设置和ALM连接这四件事上。把这些盘明白,装QTP就是半小时的事;盘不明白,装两天都可能原地转圈。
这篇文章适合三类人看:一是维护老测试脚本的工程师,公司给了台Win10新机,需要在上面把老环境完整还原出来;二是准备用UFT接手老QTP项目的测试负责人,你想知道新旧版本之间到底差在哪;三是只在虚拟机里跑过试用版、第一次在公司正式域环境安装QTP的入门者。下面我按“装前规划、安装步骤、装后配置、问题排查、维护心得”五部分一次讲透。
1. 安装QTP之前需要先想清楚的几件事
1.1 版本选择:先搞清楚手里是QTP还是UFT
经常有同事拿着一个安装包就来问我:“这个能不能装在Win10?”结果一看安装包名字还叫“QuickTest Professional 11.00”。这种老版本我不建议硬装Win10,除非你能接受兼容模式下的各种隐性问题。QTP的主流版本演进,可以简化成下面这个表来对照:
| 安装包 | 推荐操作系统 | 浏览器要求 |
|---|---|---|
| QTP 9.2 / 10.x | Windows XP SP3、Windows 7 32位 | IE6 / IE7 / IE8 |
| QTP 11.00 | Windows 7 32位或64位,以32位IE为主 | IE8 / IE9 |
| UFT 11.5x | Windows 7 SP1、Windows 8、Windows 10 | IE10 / IE11 |
| UFT 14.x / 15.x | Windows 10 x64、Windows Server 2016 | IE11、Chrome扩展 |
这个表不是越新越好,关键看你手上脚本是用哪个版本录出来的。QTP项目里的对象仓库文件(.tsr)和脚本文件(.mts)大部分能跨小版本打开,但大版本之间来回倒很容易出兼容性提示。我的建议是:新机器尽量保持和原项目一致的QTP大版本;没有旧环境包袱的新项目,才推荐直接上UFT 14或15。
另一个容易忽略的是位宽问题。QTP主程序是32位进程,要驱动浏览器里的ActiveX加载项,IE也必须以32位进程运行。Windows 7里的IE一打开就是32位,不用太担心;但Windows 10上如果IE11被配置成64位进程,QTP的加载项就可能始终不生效。检查方法很简单:打开IE后调出任务管理器,看浏览器进程后面有没有“32位”标签,没有的话需要改注册表或组策略把IE切回32位进程。
1.2 License类型和插件清单
License这块,常见分两种:一种是seat license,等同于把授权绑定在当前这台机器上,适合固定测试机;另一种是浮动License,也叫concurrent license,安装时不用输序列号,启动时向License服务器申请一个可用席位。公司如果已经有ALM或HPE License Server,通常会用后者。但我个人的经验是:单机部署先把本地seat license准备好,等安装完成、确认脚本能正常跑之后,再切换成浮动License。这样排错的时候,至少少一个变量。
插件更像一道单选题。安装向导里的Add-ins列表会让你勾选Web、ActiveX、VisualBasic、Java、SAP等。很多第一次装的人会全选,觉得这样稳妥。实际上QTP启动时如果把所有插件全加载,不仅启动变慢,还可能因为插件之间的权限冲突报莫名其妙的问题。建议按被测系统选:测Web项目一定要Web插件,这个躲不开;测C/S架构的WinForm程序,一般选VisualBasic和ActiveX;被测系统涉及Java客户端再把Java加上。插件装完可以再补装,不用在第一次安装时求全。
2. 安装QTP的完整实操步骤
2.1 准备安装文件和系统环境
按QTP 11或UFT 11.5x这个级别来说,官方安装包通常是一个ISO或者解压后的文件夹,里面至少有Setup.exe、若干MSI包和Readme。安装前我自己的习惯动作有四个:
- 把安装包整个解压到一个纯英文路径,比如
C:\QTP_Setup或D:\temp\qtp_setup。老安装程序对中文路径支持很差,路径里一旦出现中文,有时候刚点Setup就报“Fatal error during installation”; - 用本机管理员账号跑安装,不是普通域账号,也不是“右键以管理员身份运行”就能糊弄过去;
- 关闭IE、Outlook等Office程序,旧版安装程序会检测到占用文件,触发“重启后继续安装”的流程,那个流程特别容易卡住;
- 如果这台机器是Windows 10且开了“内存完整性”,建议安装前临时关掉。QTP的驱动签名和内核级保护存在冲突,不关的话安装完成后一启动就可能蓝屏。
做完这四步,再双击Setup.exe。这一步千万别省,我见过太多人跳过环境准备直接装,最后卡在同一个地方。
2.2 向导里的关键选项
安装向导最前面的几页没有太多需要操作的地方,典型流程是:Welcome点Next,License Agreement点Accept,Customer Information填用户名和公司名,名称随便写都行。到了填序列号的那一页,如果手里暂时没有序列号,可以直接留空继续,安装完成后用License Utility补注册,不会影响安装结果。
比较关键的是后面这几步:
- 安装类型选“Custom”,不要选“Typical”。Typical不会给你选择插件的入口,默认把所有插件都装上,后面对你来说是个小灾难;
- 在Select Features页面,按上一节说的方法勾插件,不要全选;
- 选择安装路径时,我习惯装到
D:\HP\QuickTest Professional。不是因为C盘空间不够,而是因为老版QTP在C:\Program Files (x86)下面经常和权限控制较劲。你不想每次启动都遇到“Access denied”的话,单独建一个纯英文目录会省很多事; - 接下来是Release Notes、Start Copying之类的确认页,直接Next,然后等进度条。
安装时间取决于插件个数和机器性能,一般5到15分钟。中途如果弹出“是否重启”的提示,选稍后,等安装全部完成再统一重启。
2.3 重启后第一轮检查
安装完成后强制重启一次,这是必须的,除非你想在启动QTP时撞见一个“executable cannot find”的提示。重启后别急着双击图标,先把三个地方过一遍:
- 开始菜单里有没有“QuickTest Professional”或“UFT One”;
- 进入安装目录,确认
bin\QTPro.exe存在; - 检查
C:\ProgramData\HP\QuickTest Professional下是否生成了配置目录。如果这个目录没生成,多半是安装时某个核心组件没注册成功,后期QTP会启动即闪退。
确认这些都没问题,再双击快捷方式。第一次启动会弹出Add-in Manager对话框,你按之前想好的插件列表勾选,然后点OK。这一步的重点是观察程序能不能顺利进入主界面,而不是急着录脚本。能进主界面,说明安装阶段基本成功了。
3. 安装完成不等于配置完成
3.1 先激活License再谈其他
打开开始菜单里的License Utility,或者在安装目录下找bin\LicenseUtility.exe。选择Seat License,输入25位密钥,点Apply。验证方法是重新打开QTP,在Help > About里看到License类型和有效期,那就没问题了。
有两个容易踩坑的细节:第一,激活是按机器特征计算的,网卡、主板,甚至虚拟机里加了块新网卡,都有可能让激活失效。我在VMware里装QTP时遇到过,开了两块虚拟网卡,第二次启动就提示License不可用,删掉其中一块网卡后重新激活,问题才消失。第二,如果公司要求用浮动License,不要在License Utility里硬折腾,应该去配置ALM连接,或者在环境变量里设置License Server地址。第三,即便安装时没填序列号,也别慌,绝大多数版本允许过后补录。
3.2 IE安全设置是回放成败的关键
QTP要驱动Web测试,必须依靠IE的ActiveX加载项,所以IE设置与其说是浏览器配置,不如说是QTP的运行环境配置。以IE11为例,最基础的检查清单有六条:
- Internet选项 > 高级 > 勾选“启用第三方浏览器扩展”。这条和很多人的直觉相反,有人觉得第三方扩展不安全就关掉,结果QTP的BHO根本没加载;
- 把被测站点加进“受信任的站点”,同时把安全级别调到“中低”;
- 关闭“弹出窗口阻止程序”;
- 在“高级”设置里,不要勾选“禁用脚本调试”;
- 确认“允许运行或安装软件,即使签名无效”没有被公司安全策略锁死;
- 目标站点如果用了较老的HTML,在兼容性视图设置里把域名加进去,避免IE用Edge模式渲染,导致对象属性全变。
绝大多数“QTP能开但录不了Web脚本”的问题,都是上面某一条没做到。尤其是第一条,我至少帮人解决过十次。
3.3 连接ALM/QC,把测试资产管起来
如果公司测试资产存在ALM/QC里,QTP安装后还要做一次连接配置。在QTP菜单栏选Tools > Quality Center Connection,输入ALM服务器URL,比如http://alm.company.local:8080/qcbin,回车后会自动带出登录页面。登录成功后,QTP左侧测试树里就能看到ALM里的Test Plan;你打开一个测试用例,它会连带把对象仓库、Test Data、Action脚本一起加载到本地临时目录里编辑,保存时再写回服务器。
连接ALM时,版本兼容性是最容易被忽略的。老QTP 11去连ALM 12.60,有时候会提示“Client version not supported”。这时候要么在ALM站点管理员后台把客户端的兼容模式打开,要么升级QTP到UFT 11.5以上。如果连不上,先用浏览器单独访问一下URL,确认能打开登录页面;如果浏览器都打不开,那就不是QTP的问题,先查网络通不通、URL端口对不对。
4. 常见问题与排查经验
4.1 安装中途回滚怎么处理
最稳定的排查顺序是先看安装日志,QTP安装时会在系统临时目录里写Install*.log或Setup*.txt,里面有失败的MSI组件名。但日志文件大且专业,新人未必看得动。更快的办法是先把环境补齐,再重装。
- 到“控制面板 > 程序和功能 > 启用或关闭Windows功能”里确认.NET Framework 3.5已启用。QTP 11依赖.NET 2.0/3.5,而Windows 10默认不开;
- 安装VC++ 2005/2008/2010运行库,缺哪个版本都可能导致安装后启动失败;
- 清理之前残留的QTP版本,卸载不干净的可以用Windows Installer CleanUp(老版本适用)清除MSI注册;
- 关闭杀毒软件和UAC再重装。
按这个顺序处理下来,我遇到的大部分找不到原因的安装回滚都能解决。
4.2 能启动但License提示不可用
这类问题很常见,我把典型现象和处理方式整理成一张表:
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 提示No valid license | License没激活或激活失效 | 用License Utility重新激活 |
| 提示License Server连接失败 | 浮动License服务器地址不对 | 检查服务器端口和地址,或临时改回seat license |
| 激活后重启又失效 | 网卡/主板特征变化 | 停用多余网卡,重新激活 |
| 启动时提示Feature Expired | 试用版到期 | 购买正式License,或重新申请试用码 |
除了表里这些,还要检查系统日期和时间。License会基于时间校验,时间跳变会导致立刻失效。这个坑尤其出现在装了还原软件的测试环境里,还原到旧快照后系统时间还是对的,但License状态文件是旧的,也会报错。删除C:\ProgramData\HP\QuickTest Professional\License下的缓存文件后重新激活,能解决一部分诡异问题。
4.3 脚本回放时对象识别不到
回放找不到对象,第一步先确认浏览器有没有被QTP正常驱动起来。能正常驱动的话,页面上通常会有黄色高亮边框。如果连高亮都没有,检查IE管理加载项里HP SmartQA或UFT相关的BHO有没有被禁用,启用后重启IE再试。
有高亮但回放还是失败,就要用Object Spy查看实际对象属性,和对象仓库里存的属性做对比。很多Web应用会生成动态ID,每次刷新页面都变。这种情况下,建议把对象仓库里WebEdit、WebElement的识别属性从ID换成name或XPath,再开启智能识别(Smart Identification),让QTP在属性匹配失败时按预设规则继续尝试。页面加载慢也会造成误判,脚本里该加Wait或同步点的地方不要省。
5. 装好之后的环境维护心得
5.1 把环境做成模板,别反复重装
QTP这种老牌工具,安装一次不容易,激活还和机器特征绑定,所以我强烈建议在虚拟机里把装好的环境做成模板。我个人会留三个快照:
- 刚装好操作系统、没装QTP的干净快照;
- 装好QTP并激活License、但没接入项目的快照;
- 接入ALM、配置好IE和插件、跑通一条冒烟用例的完整快照。
平时测试就基于第三个快照派生副本,出问题直接回滚,不用重新激活,也不用重装插件。这个习惯帮我省了非常多时间,尤其是License激活次数有限制的时候,价值更大。
5.2 别让浏览器自动升级
QTP的浏览器驱动依赖版本,IE也好,Chrome也好,每次大版本升级都可能让对象识别方法失效。测试机的Windows Update里,建议把浏览器更新单独挂起;如果公司有WSUS或Intune策略,找管理员把测试机从浏览器升级组里排除。这不是故步自封,而是被测系统、QTP脚本、浏览器三者必须保持稳定的三角关系,每次只动一个变量,出了问题才知道是谁引起的。
最后再分享一个小技巧:在装好的QTP上,把QTPro.exe的兼容性设为Windows 7,并勾选“以管理员身份运行”,同时把测试脚本目录加入杀毒白名单。这两件事看起来不起眼,却能把启动闪退、回放中断的概率降到最低。我自己帮别人排查环境问题时,几乎每台机器都会先检查这两项,收益非常高。