标题：QTP
基本简介
QTP(6张)Mercury QuickTest 企业级自动化测试工具!
现在已经被惠普收购，正式名字为HP QuickTest Professional software ，最新的版本为HP QuickTest Professional 11.0
HP QuickTest Professional 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程，自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。
软件特点
1）QTP是一个侧重于功能的回归自动化测试工具；提供了很多插件，如：.NET的，Java的，SAP的，Terminal Emulator的等等，分别用于各自类型的产品测试。默认提供Web，ActiveX和VB。
2）QTP支持的脚本语言是VBScript，这对于测试人员来说，感觉要“舒服”得多（如相比SilkTest采用C语言）。VBScript毕竟是一种松散的、非严格的、普及面很广的语言。
3）QTP支持录制和回放的功能。录制产生的脚本，可以拿来作为自己编写脚本的template。录制时，还支持一种lower level 功能，这个对于QTP不容易识别出来的对象有用，不过它是使用坐标来标识的，对于坐标位置频繁变动的对象，采用这种方式不可行。另外，QTP的编辑器支持两种视图：Keyword模式和Expert模式。Keyword模式想法是好的，提供一个 描述近似于原始测试用例的、跟代码无关的视图（我基本很少用，除了查看、管理当前test中各个action的完整流程），而Expert就是代码视图，一般编写脚本都在这个区域。
4）一个有用的工具：Object Spy，可以用来查看Run-time object和Test object属性和方法。
5）QTP通过三类属性来识别对象：a）Mandatory； b）Assitive； c）Ordinal identifiers。大部分情况下，通过对象的一些特定属性值就可以识别对象（类型a）。这些属性可以通过Tools->Object Identification 定义。
6）Object Repository（OR）是QTP存储对象的地方。测试脚本运行后，QTP根据测试脚本代码，从这个对象库中查找相应对象。每个Action可以对应有一个或者多个OR，也可以设置某个OR为 sharable的，这样可以供其他Action使用。注意，使用QTP录制功能时，默认将被测对象放在local OR中，可以通过 Resources->Object Respository，选择Local查看。
7）说到QTP的要点，不得不说Action。Action是QTP组织测试用例的具体形式，拥有自己的DataTable和Object Repository，支持Input和output参数。Action可以设置为share类型的，这样可以被其他test中的Action调用（注意：QTP是不支持在一个test中调用另外一个test的，只有通过sharable action来调用）。
8）如3）所述，一个test中，多个action的流程组织，只有通过Keyword视图查看和删除，在Expert视图中没有办法看到。
9）调用Action可以通过菜单Insert->Call to *** 来实现。QTP提供三种类型的调用方式：a）call to new Action，在当前test中创建一个新的Action；b）call to Copy of Action；c）call to existing action，调用一个re-usable action，如果这个re-usable action来自另外一个test，将以只读的方式插入到当前test中。
10）QTP提供excel 形式的数据表格DataTable，可以用来存放测试数据或参数。DataTable有两种类型：global 和local。QTP为DataTable提供了许多方法供存取数据，在对测试代码进行参数化的时候，这些方法非常有用。
11）环境变量（Environment Variables）。在一个test中，环境变量可以被当前test中所有action共享。环境变量也有两种类型：build in 和user defined。用户自定义的环境变量可以指向一个XML文件，这样可以实现在众多test之间共享变量。
12）QTP可以引用外部的VBS代码库，通过Settings-》Resource加入，也可以ExecuteFile命令在代码中直接执行。这种VBS库可以为所有action和test共享。
13）QTP默认为每个test提供一个测试结果，包括Passed，Failed，Done，Warning和information几种状态类型，可以进行对结果Filter。但是，只能为每个test产生一个testing result，不能为多个testing产生一个总的testing result.
主要步骤
QTP进行功能测试的测试流程 [制定测试计划]——>[创建测试脚本]——>[增强测试脚本功能]——>[运行测试]——>[分析测试结果] 大致五个步骤：
1、制定测试计划自动测试的测试计划是根据被测项目的具体需求，以及所使用的测试工具而制定的，完全用于指导测试全工程。
QTP是一个功能测试工具，主要帮助测试人员完成软件的功能测试，与其他测试工具一样，QTP不能完全取代测试人员的手工操作，但是在某个功能点上，使用QTP的确能够帮助测试人员做很多工作。在测试计划阶段，首先要做的就是分析被测应用的特点，决定应该对哪些功能点进行测试，可以考虑细化到具体页面或者具体控件。对于一个普通的应用程序来说，QTP应用在某些界面变化不大的回归测试中是非常有效的。
2、创建测试脚本当测试人员浏览站点或在应用程序上操作的时候，QTP的自动录制机制能够将测试人员的每一个操作步骤及被操作的对象记录下来，自动生成测试脚本语句。与其他自动测试工具录制脚本有所不同的是，QTP除了以VBScript脚本语言的方式生成脚本语句以外，还将被操作的对象及相应的动作按照层次和顺序保存在一个基于表格的关键字视图中。比如，当测试人员单击一个链接，然后选择一个CheckBox或者提交一个表单，这样的操作流程都会被记录在关键字视图中。
3、增强测试脚本的功能录制脚本只是为了实现创建或者设计脚本的第一步，基本的脚本录制完毕后，测试人员可以根据需要增加一些扩展功能，QTP允许测试人员通过在脚本中增加或更改测试步骤来修正或自定义测试流程，如增加多种类型的检查点功能，既可以让QTP检查一下在程序的某个特定位置或对话框中是否出现了需要的文字，还可以检查一个链接是否返回了正确的URL地址等，还可以通过参数化功能，使用多组不同的数据驱动整个测试过程。
4、运行测试QTP从脚本的第一行开始执行语句，运行过程中会对设置的检查点进行验证，用实际数据代替参数值，并给出相应的输出结构信息。测试过程中测试人员还可以调试自己的脚本，直到脚本完全符合要求。
5、分析测试运行结束后系统会自动生成一份详细完整的测试结果报告。[1]
主要优点
Mercury QuickTest Professional 甚至可以使新测试人员在几分钟内提高效率。您只需通过按“记录”按钮，并使用执行典型业务流程的应用程序即可创建测试脚本。系统使用简明的英文语句和屏幕抓图来自动记录业务流程中的每个步骤。用户可以在关键字视图中轻松修改、删除或重新安排测试步骤。 
QuickTest Professional 可以自动引入检查点，以验证应用程序的属性和功能，例如验证输出或检查链接有效性。对于关键字视图中的每个步骤，活动屏幕均准确显示测试中应用程序处理此步骤的方式。您也可以为任何对象添加几种类型的检查点，以便验证组件是否按预期运行（只需在活动屏幕中单击此对象即可）。 
然后，可以在产品介绍（具有 Excel 所有功能的集成电子表格）中输入测试数据，以便在不需要编程的情况下处理数据集和创建多个测试迭代，从而扩大测试案例范围。您可以键入数据，或从数据库、电子表格或文本文件导入数据。 
高级测试人员可以在专家视图中查看和编辑自己的测试脚本，该视图显示 QuickTest Professional 自动生成的基于业界标准的内在 VB 脚本。专家视图中进行的任何变动自动与关键字视图同步。 
一旦测试人员运行了脚本，TestFusion 报告显示测试运行的所有方面：高级结果概述，准确指出应用程序故障位置的可扩展树视图，使用的测试数据，突出显示任何差异的应用程序屏幕抓图，以及每个通过和未通过检查点的详细说明。通过使用 Mercury TestDirector 合并 TestFusion 报告，您可以在整个 QA 和开发团队中共享报告。 
QuickTest Professional 也加快了更新流程。当测试中应用程序出现变动（例如“登录”按钮重命名为“登入”）时，您可以对共享对象库进行一次更新，然后此更新将传播到所有引用该对象的脚本。您可以将测试脚本发布到 Mercury TestDirector，使其他 QA 团队成员可以重复使用您的测试脚本，从而消除了重复工作。 
QuickTest Professional 支持所有常用环境的功能测试，包括 Windows、Web、.Net、Visual Basic、ActiveX、Java、SAP、Siebel、Oracle、PeopleSoft 和终端模拟器。
QTP8.0带出了自动化测试革命的一个新名词：关键字驱动。
QTP自身又带有数据表支持数据驱动的测试，数据驱动使得自动化测试代码复用率显著提高，E测工作室自动化测试专家认为一段自动化测试脚本想要收回成本至少要被运行6次以上，数据驱动即提高了自动化测试收益。
学习方法
使用QTP的目的是想用它来执行重复的手动，主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试，例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。
1，确保你的IE运行正常，依次点击菜单 查看 ——> 工具栏，一定要上网助手等插件卸载掉，特别3721这个垃圾网站和其它拦截广告的插件（它也把测试过程中弹出的窗口当成广告，一样会拦截的！）
2，如果是按照Tutorial_oldsidney_cn.pdf 文件 中的订购飞机票的例子来练习 QTP的使用，那么只需选择Web 插件就可以了。如果是测试其它的应用程序或系统，就要根据需要来选择相应的插件了。
在这个阶段你就要自己针对某个系统去录制脚本、维护脚本了。在录制后的回放过程中，你可能会遇到各种问题，这个时候就需要发挥你的主观能动性来解决遇到的问题。我想你可以按照下面的方法去解决：1，查看QTP的有关文档，包括Help 、QTP User‘s Guide等文档。这些都是比较系统全面的材料。你该好好利用呀。
3，在本论坛上查看以前别人是如何解决此类问题的（如果有的话）或者是发新贴寻求帮助，也可以搜索Google 等网站寻找问题的解决方法；3，与自己部门的同事交流，例如与测试人员交流他们是如何解决的，与开发人员交流某个QTP无法识别的控件具体是是用什么来识别的等。毕竟他们对你测试的环境和测试的软件比论坛上的人熟悉呀。
4，自己通过学习VB scrīpt 等方式来提高自己的管理QTP scrīpt的能力。
或许你会发现许多问题都是由提出问题的人来解决的，因为他们希望问题得到解决的迫切心比谁都强烈。
如果你对VB scrīpt 、QTP和需要测试的程序或系统非常熟悉，你可能就想直接写QTP scrīpt来表现一下了。如果你能达到这个水平，那么恭喜你——－你就是真正的高手了。这个时候你已经可以从宏观上把握QTP了，也能灵活自如地使用QTP了。[2]