QTP中使用描述性编程
QTP脚本编程指导教程

在QTP软件中,用户可以创建脚本项目,设置脚本语 言和运行环境等参数。
QTP脚本编程语言基础
VBScript语言
QTP脚本编程使用VBScript语言,这是一种简单 易学的脚本语言,用于编写自动化测试脚本。
关键字和数据池
QTP提供关键字和数据池功能,用于定义测试数 据和参数化测试用例。关键字可以用于编写条件 判断、循环控制等逻辑语句。
问题3
如何处理异常和错误?
问题4
如何提高脚本的稳定性和可维护性?
QTP脚本编程解决方案
01
解决方案1
使用对象识别器识别动态变化的界 面元素
解决方案3
使用异常处理机制处理异常和错误
03
02
解决方案2
使用条件语句和循环结构实现多步 骤操作的自动化
解决方案4
遵循良好的编程规范,提高脚本的 稳定性和可维护性
01
设计清晰的目录结构,规范测试脚本命名规则,便于测试框架
的管理和维护。
实现测试用例管理
02
使用测试用例库,统一管理测试用例,方便测试用例的复用和
更新。
集成持续集成工具
03
将自动化测试框架与持续集成工具集成,实现自动化构建、部
署和测试。
QTP脚本编程与其他工具集成
与Bug跟踪工具集成
将测试结果与Bug跟踪工具集成,实现Bug 的跟踪和管理。
动态对象识别
对于动态变化的界面元素,QTP支持使用正则表 达式进行对象识别。
QTP脚本编程数据驱动测试
数据驱动测试的概念
数据驱动测试是一种测试策略,通过将 测试数据与测试逻辑分离,提高测试的
复用性和可维护性。
数据参数化
在QTP中,可以使用参数化功能将测 试数据传递给测试脚本,实现动态测
QTP-学习软件测试QTP入门

调试脚本
对脚本进行调试,确保其正 确性和稳定性。
优化脚本
对脚本进行优化,提高其执 行效率和准确性。
03 QTP高级功能
QTP自动化测试框架
QTP自动化测试框架
QTP(Quick Test Professional)提 供了一个强大的自动化测试框架,使 得测试人员能够通过录制和编辑测试 脚本,实现自动化测试。
02
它通过模拟用户操作,对软件界 面进行测试,验证软件的功能是 否正常。
QTP的特点
01
02
03
自动化测试
QTP支持自动化测试,能 够快速、准确地执行测试 用例,提高测试效率。
测试管理
QTP提供了测试管理功能, 能够对测试计划、测试用 例、测试结果等进行统一 管理。
兼容性强
QTP支持多种操作系统和 多种浏览器,能够满足不 同软件平台的测试需求。
QTP-学习软件测试QTP入门
目 录
• QTP简介 • QTP基础知识 • QTP高级功能 • QTP实践案例 • QTP常见问题与解决方案 • QTP未来发展与展望
01 QTP简介
QTP的含义
01
QTP是Quick Test Professional 的缩写,是一款自动化测试工具 ,用于对软件进行功能测试和回 归测试。
QTP性能测试
性能测试基础
QTP提供了性能测试功能,可以帮助测试人员对被测试应用程序 进行负载测试和压力测试。
场景设计
通过QTP的场景设计器,测试人员可以模拟多用户并发访问被测试 应用程序的情况,以检测应用程序的性能表现。
Байду номын сангаас结果分析
QTP提供了丰富的性能测试结果分析功能,可以帮助测试人员快速 定位瓶颈和问题所在。
09C-windows控件

1.QTP测试标准Windows对象标准QTP对象是QTP直接支持的对象。
标准Windows对象是指基于Win32API和MFC创建的应用程序。
2.Desktop对象的使用通过Desktop对象,可以访问Windows的桌面对象。
2.1 Desktop 的CaptureBitmap 方法使用CaptureBitmap方法,可以把屏幕对象的截屏保存为图像文件Desktop.captureBitmap “c:\temp.bmp”,true2.2 Desktop 的ChildObjects 方法使用ChildObjects方法,可以获取到某个测试对象中包含的所有对象。
QTP描述性编程(初级的描述性编程)3.Windows控件的基本属性和方法在QTP中,对于各种标准的Windows控件,都提供了一些公共的、通用的基本属性和方法。
例如使用exist 来判断控件是否存在于当前打开的应用程序中。
3.1 使用CheckProperty检查控件属性使用CheckProperty方法可以实现与标准检查点类似的功能。
'描述性编程与录制脚本后再编辑'摆脱对象库的依赖'描述性编程其一“直接描述”其二“使用Description 对象”代码:'描述性编程与录制脚本后再编辑'摆脱对象库的依赖'描述性编程其一“直接描述”其二“使用Description 对象”Dialog("Login").ActivateDialog("Login").WinButton("Cancel").Click。
qtp常用方法

2, 查找相应的字符串: instr (1,查找目标字符串,所查找的字符串)
3, 随机数的获取: Randomnumber.Value() 或cstr(int(Rnd*10)+1)
4, 等待函数: Wait(秒数)
5, 获取数组下标: UBound (数组名)
说明:where FileName is the absolute or relative path of your VBscrīpt file.
例:ExecuteFile("F:\test.vbs")
5.Strcomp函数
作用:比较文本
例:dim strtext1,strtext2,str ,str1,comp1
6, 拆分数组: Split(MyString, ",", -1, 1)
7, 可执行步骤: OptionalStep
8, 报告信息: Reporter.ReportEvent 3, "Save Step", "Out of cycle!"
9, 判断对话框是否存在: .exist
10,事件过滤函数:Reporter.Filter=过滤条件(0,1,2,3),0代表显示所有的error和warning,1,显示error,2,显示waining,3,任何error和warning都不显示。
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("mand")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142" '这句话是连接数据库的数据源,要做修改
2.QTP核心功能详解

> QTP为用户提供了两种操作对象的接口,一种就 是对象的封装接口,另一种是对象的自身接口。
> 对象的自身接口是对象控件本身的接口。 > 对象的封装接口是QTP为对象封装的另一层接口,它是 QTP通过调用对象的自身接口来实现的。
> 两种接口的脚本书写格式的差别在于:
> 自身接口需要在对象名后面加object再加属性名或方法 名 > 封装接口就不用在对象名后面加object。
对仓库对象的操作:
对象的封装接口是QTP使用的缺省接口,我们录制出来
的脚本都是使用封装接口,平时用的也都是封装接口。 但是封装接口不如自身接口丰富,因为QTP只是封装了 部分常用的自身接口。 所以我们在需要时,可以绕过封装接口,直接调用对 象的自身接口。
当我们在录制脚本中,有时会遇到某个对象回放时不能
WebEdit一般用来赋值 WebEdit(“WebEdit”).set “XXXX” WebCheckBox:多选框有两种操作 WebCheckBox(“WebCheckBox”).Click WebCheckBox(“WebCheckBox”).Set “on/off” WebRadioGroup WebRadioGroup(“WebRadioGroup”).select “XXX” WebList WebList(“WebList”).select “XXX”
仓库对象TO一般在录制/编写脚本时加入仓库文件,它
不仅可以在录制编写时进行修改,也可以在运行过程 中进行动态修改,以匹配实际对象。 和TO、RO相关的几个函数有:
GetTOProperty() 取得仓库对象的某个属性的值 GetTOProperties() 取得仓库对象的所有属性的值 SetTOProperty() 设置仓库对象的某个属性的值 GetROProperty() 取得实际对象的某个属性的值
QTP工具教程

QTP测试工具教程第一部分第一章 QTP 简介1.1自动化测试的好处如果你执行过人工测试,你一定了解人工测试的缺点,人工测试非常浪费时间而且需要投入大量的人力。
使用人工测试的结果,往往是在应用程序交付前,无法对应用程序的所有功能都作完整的测试。
使用QuickTest可以加速整个测试的过程,并且建置完新版本的应用程序或网站后,可以重复使用测试脚本进行测试。
以QuickTest执行测试,就与人工测试一样。
QuickTest会仿真鼠标的动作与键盘的输入,不过QuickTest比人工测试快了很多。
1.2 QuickTest工作流程1.录制测试脚本前的准备在测试前需要确认你的应用程序及QuickTest是否符合测试需求?确认你已经知道如何对应用程序进行测试,如要测试哪些功能、操作步骤、预期结果等。
同时也要检查一下QuickTest的设定,如Test Settings以及Options对话窗口,以确保QuickTest会正确的录制并储存信息。
确认QuickTest以何种模式储存信息。
2.录制测试脚本操作应用程序或浏览网站时,QuickTest会在Keyword View 中以表格的方式显示录制的操作步骤。
每一个操作步骤都是使用者在录制时的操作,如在网站上点击了链接,或则在文本框中输入的信息。
3.加强测试脚本在测试脚本中加入检查点,可以检查网页的链接、对象属性、或者字符串,以验证应用程序的功能是否正确。
将录制的固定值以参数取代,使用多组的数据测试程序。
使用逻辑或者条件判断式,可以进行更复杂的测试。
4.对测试脚本进行调试修改过测试脚本后,需要对测试脚本作调试,以确保测试脚本能正常并且流畅的执行。
5.在新版应用程序或者网站上执行测试脚本通过执行测试脚本,QuickTest会在新本的网站或者应用程序上执行测试,检查应用程序的功能是否正确。
6.分析测试结果分析测试结果,找出问题所在。
7.测试报告如果你安装了TestDirector(Quality Center),则你可以将发现的问题回报到 TestDirector(Quality Center)数据库中。
QTP基础教程

QTP基础知识培训
目录
QTP工具历史、简介 QTP自动化测试流程 QTP工具基础(重点讲解) QTP支持的脚本语言VBS 正则表达式 自动化常见问题(脚本编写、执行中断、测试结果常见错误)
QTP工具历史、简介
历史
➢ QuickTest Professional 1.0发行于1998年05月,取名为Astra QuickTest仅支持WEB, 它是一种基于图标的功能测试工具,主要用于电子商务领域,可以记录用户动作来简 化并加速测试过程,标价4000美元每个license;
从认识Add-in Manager开始
QTP Add-in即为QTP插件。就是QTP识别不同控件 对象类型的一套标准。
当我们在启动QTP时,QTP会首先弹出一个AddinManager窗口,这个窗口主要提供给自动化测 试人员选择相应的插件。
1、插件的类型: • Web • ActiveX • VB • .Net • WPF •… 2、如何选择插件: • 首先确定被测控件对象类型,然后选择相应的
运行时对象即是被测应用程序中真实存在的控件对象,动态的;
➢ QTP对象识别原理:
• 预期测试对象的识别属性 • 实际运行时对象的识别属性 • 对比预期与实际是否一致 • 若是对比之后可唯一匹配,那么对象即识别成功;反之,则失败。
QTP描述性编程脚本分析

的有 效性 使用 . 使脚 本 具有 广泛 性及 代 表性 . 就需 要 述性 编 程思想 注重控 件 的类 型及控 件 的特征 在脚本 中 这
我们 对脚 本进 行描 述性 编 程 .使 脚 本脱 离 或减 少对 对 的描 述 . 通过通 俗易懂 的脚 本 表述 . 构建 被测 软件所 需 象库 文件 的依赖 的对 象元 素 .以编程 的方 式实 现 自动化 测试脚 本并 进 二 、 P脚本 执行 分 析 QT 行测试 。 下面 以 WE B页面 中 go| 图的链 接有效 性 oge地 Q P通 过 选项 设 置 可 以直 接使 用 已有 的对象 库 文 测试 对 Q P描述性 编程 进行 分析 : T T 件 .也可 以在进 行脚 本 录 制时 自动 生成对 象 库描 述 文 通 过 gol og e页面 中 “ 图” 地 文字链 接 的 打开及 整 个 件并 随脚本 一起 保存 .下面 以 Q P对 w n o s自带 的 页 面的关 闭得到 以下脚 本 : T id W 计 算 器 进 行 简 单 的 功 能 测 试 对 Q P的 脚 本 执行 过 程 T 进 行分 析 : 我们 通 过 wn o s 用 程 序 录制 方 式 录 制 1 2 ? id w 应 + : 加法运 算功 能 . 当我 们 停止 录制 时 . 在关键 词 视 图 中会
的 有效 性使 用 , 脚 本 具有 广 泛性 及代 表性 , 就 需要 我们 对脚 本 进行 描 述性 编程 , 脚 本脱 离或减 少对 使 这 使
对 象库 文件 的依 赖。
【 关键词 】 T 脚本 :Q P
一
对象
编程 Leabharlann 脚 本 中 WiB tn… ’ n ut (1) o 中的 1 为 3 再 次运 行修 改后 改 . Q i T s rf s H lf T uc et oe i a Q P是 新一 代 自动 化 测试 的脚本 . k P s o 当脚本 运行 时会 提示错 误信 息 解 决方 案 .采用 专 家视 图及 关键 词视 图两 种模 式 供用 这说 明 Q P在 进行 脚本 运行 时 .对 窗 口及控 件 对 T
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
QTP中使用描述性编程QTP知识库2010-06-09 17:26:12 阅读26 评论0 字号:大中小订阅我们简单介绍一下有关功能测试的基本方法,这实际上对于所有自动化功能测试产品来说都是一样的。
一般情况下,用QTP来进行功能测试的基本方法主要包括三个主要阶段:1、创建测试或组建首先可以通过在应用程序或网站上录制会话,或者建立对象库并使用关键字驱动功能向关键字视图中手动添加步骤来创建测试或组件。
在QTP里面我们可以通过两种方式添加步骤来创建测试或组件:在应用程序或网站上录制会话。
建立对象库并使用这些对象在关键字视图或专家视图中手动添加步骤然后在在测试或组件中插入检查点,检查页面、对象或文本字符串中的特定值或特征,通过它可以标识网站或应用程序是否正常运行。
或是通过用参数替换固定值扩展测试或组件的范围。
提供数据表中的数据,定义环境变量和值,定义测试、组件或操作参数和值,或者使用QTP生成随机数字或当前用户和测试数据等。
最后如果需要的话使用QTP中众多的功能测试功能来增强测试或组件或添加编写语句来实现更复杂的测试目标。
2、运行测试和组建控制运行会话,帮助标识和消除测试或组件中的缺陷。
使用“单步执行”、“单步跳过”和“单步退出”命令逐步运行测试或组件,或设置断点使测试或组件在预定点暂停。
每当测试或组件在断点处停止时,可以在“调试查看器”中查看其变量的值。
3、分析结果在运行测试或组件之后,通过两种方式可以查看其结果:在“结果”窗口中查看结果;自动报告在运行会话过程中检测到的缺陷,可能的话并上报到其他缺陷管理产品中。
.试图与对象模型在介绍QTP中的Descriptive Programming前,我们有必要先介绍一下ExpertView及在ExpertView里进行编码的一些基本知识。
在QTP里面提供了两种视图,第一种我们把它称为KeywordView(关键字视图,在早期的版本中称为TreeView),第二种把它成为ExpertView(专家视图),这两种视图分别是针对两种类型的人进行使用的。
1、KeywordView(关键字视图)通过关键字视图,QTP提供了一种模块化的表格格式创建和查看测试或组件的步骤。
每个步骤在关键字视图中都是一行,这样用户可以轻松的修改任何一部分组成。
在录制会话过程中,用户在应用程序上执行的每个步骤在关键字视图中记录为一行。
例如,在51testing的页面上执行的下列三个步骤:在“用户名”编辑框中输入zhoda02。
在“密码”编辑框中输入加密字符串41c630a213508cd49eb35089db1b893144b9。
单击“登录”按钮。
那么,关键字视图将包含下列行:很显然,关键字视图非常直观有效,使用的人可以很清晰的看到被录制对象的录制层次及运行步骤,比较适合那些对于业务操作流程熟悉的人员使用。
但是,如果需要一些增强型的操作,那就需要切换到专家视图里进行了。
2.ExpertView(专家视图)QTP在关键字视图中的每个节点在专家视图中对应一行脚本。
上面例子对应的脚本如下:(删除后一句是因为前后重复,一句可以说明问题)Browser("51Testing软件测试网:软件测试的专业网站").Page("51Testing软件测试网:软件测试的专业网站").WebEdit("username").Set "zhoda02"Browser("51Testing软件测试网:软件测试的专业网站").Page("51Testing软件测试网:软件测试的专业网站").WebEdit("password").SetSecure "41c630a213508cd49eb35089db1b893144b9"Browser("51Testing软件测试网:软件测试的专业网站").Page("51Testing软件测试网:软件测试的专业网站").WebButton("登录").Click对于QTP来说,其核心编码语言是V isual Basic Script,因此,如果用户熟悉VBScript,可以运用自如的添加和更新语句,并通过编程方式增强测试和脚本,而这一切必须在专家视图中完成。
更为重要的是,有些操作是必须在专家视图中才可以完成的,例如:要处理动态对象、客户化报告、获取对象运行时的属性值(Run-time V alue)等等,这些都必须通过专家视图中的VBScript编码完成。
然而,QTP里所有的操作都是基于对象进行的,所以我们必须对对象模型有一个基本了解,才可以在专家视图内进行Descriptive Programming。
3、测试对象模型测试对象模型是一大组对象类型或类,QTP用这些对象类型或类来表示应用程序中的对象。
每个测试对象类都有一个可以唯一标识属于该类的对象的属性列表,以及一组QTP可以对其进行录制的方法。
它包括测试对象(Test Object)和运行时对象(RunTime Object)。
测试对象是QTP在测试或组件中创建的用于表示应用程序中的实际对象的对象。
QTP存储有关该对象的信息,这些信息有助于它在运行会话期间标识和检查该对象。
运行时对象是网站或应用程序中的实际对象,在运行会话期间执行针对该对象的方法。
如果录制时执行应用程序的相应操作,则一般情况下QTP将完成以下操作:标识QTP测试对象类(表示执行了操作的对象),并创建相应的测试对象读取应用程序中对象属性的当前值,然后将属性和属性值列表与测试对象一起存储。
选择该对象的唯一名称,一般使用该对象某个重要属性的值。
使用适当的QPT 测试对象方法录制对对象执行的操作。
例如,假定使用以下HTML 源代码单击“查找”按钮:<INPUT TYPE="submit" NAME="Find" V ALUE="Find">QTPl将单击的对象标识为WebButton 测试对象。
它将创建一个名为Find 的WebButton 对象,然后为该Find WebButton 对象录制下列属性和属性值,同时还会录制对WebButtion的Click方法。
在关键字视图及专家视图中显示内容分别为:Browser("Mercury Interactive").Page("Mercury Interactive").WebButton("Find").Click运行测试或组件时,QTP通过其测试对象类及其描述(一组用于唯一标识该对象的测试对象属性和属性值)来标识应用程序中的每个对象。
测试对象及其属性和属性值的列表存储在对象库中。
例如在上例中,QTP将在运行会话期间在对象库中搜索WebButton 对象,通过名称Find 来查找其描述。
QTP根据找到的描述,在应用程序中查找WebButton 对象,该对象带有HTML 标记INPUT、类型为submit、值为Find。
找到对象后,它将对其执行Click 方法。
在这样一组对象模型的基础上,QTP为各类应用对象都提供了一组方法和属性,例如Web Objects,Windows Objects,SAPGUI Objects,ActiveX,Java等。
下面是一些Web Objects 的方法和示例:对象方法BrowserCheckFrameClickImageExistLinkGetCellDataPageGetPropertyWebAreaGetROPropertyWebButtionMouseoverWebCheckBoxRowCountWebEditSelectWebListSetWebRadioGroupSetPropertyWebTableSubmit例1:获取单元格中的值thisText = Browser(…).Page(…).Frame.(…).WebTable("sample").GetCellData(2,1)例2:获取图片的名称ObjectName = Browser(…).Page(…).Image("Find").GetProperty("Name")例3:检查某个对象是否存在,如果存在弹出对话框说明对象存在。
If Browser("Browser").Page("Page").Applet("login.html").JavaEdit("username").Exist Then MsgBox("The object exists.")End if.描述性编程(descriptive programming)1、descriptive programming概述通常情况下,当在录制一个操作时,QTP会将被操作对象加入到对象库里(Object Repository)。
一旦对象存在于对象库里,我们就可以在专家视图里通过添加相关的对象方法来对该对象进行操作。
我们可以通过引用层次型对象库里的对象描述(Object Description)来添加相应的方法。
因为QTP对象库中的每个对象都具有唯一名称,所以在引用时对象名是必须需要指定的。
然后在测试运行期间,QTP在对象库中根据这个对象的名称和父对象来查找对象,并使用为这个测试对象存储的测试对象描述,在网站或应用程序中标识该对象。
例如我们用QTP录制Y ahoo Mail登录情况时我们需要输入用户名,于是在录制时我们就会录下一个WebEdit对象,它的缺省逻辑名为“login”,该编辑字段位于名为“Y ahoo! Mail - The best” 的页面上,并且该页面在浏览器中使用名称Y ahoo!进行录制。
如图所示,即为录制时的对象库的内容:那么如果我们想要应用该对象,就可以在专家视图输入以下信息:Browser("Y ahoo!").Page("Y ahoo! Mail - The best").WebEdit("login").Set “xxx”或者我们也可以调用一些方法,获取改对象在运行时的对象名,如:Browser("Y ahoo!").Page("Y ahoo! Mail - The best").WebEdit("login").GetROProperty(“name”)然而,我们可以发觉到,上面的例子在处理对象时,对象已经存在于对象库里,因此我们可以应用这个对象的逻辑名。