QTP中的descriptive programming
上一篇 / 下一篇 2007-06-18 16:12:57 / 个人分类:QTP
文章出处:www.51testing.com 作者:周坚 发布时间:2005-10-19 | ||||||||||||||||||||||
X`w%j R3MYY0【摘要】自动化功能测试是一种企业级的用于检验应用程序是否如期运行的功能性测试工具。通过自动捕获,检测,和重复用户交互的操作,能够辨认缺陷并且确保那些跨越多个应用程序和数据库的业务流程在初次发布就能避免出现故障,并且保持长期可靠运行。在市场上用的比较多的主要包括Mercury公司的WinRunner,QuickTest Professional和IBM的RationalRobot。笔者对于QuickTest Professional相对较为熟悉,希望有机会向大家逐步介绍QuickTest Professional中的一些要点及技巧。在本文里主要介绍了QuickTest Professional中的一项核心内容Descrīptive Programming,希望对大家有所借鉴和帮助。在文中,为了方便起见,将QuickTest Professional简称QTP。(本文是基于Quick Test Professional V8.0而写)。51Testing软件测试网 I*x jl;W&c0H 6Nr/of e|7M0【关键词】 T#M({2rLR c0$C-C4SW6o3[f0描述性编程Descrīptive Programming51Testing软件测试网$S{&o7DEi` #t|WRp@0功能测试Functional Test n q-e9KW%@dw&DG04lb;k`z0专家视图Expert View51Testing软件测试网-tU${6Gy;W,_ 51Testing软件测试网MnVE8^%_关键字视图Keyword View 7t!wL2_]&Xg%a051Testing软件测试网|?3O_Or+V K对象模型Object Model "DKRz qV l7~,D K?05R%^yV2Ss4z1v0运行时对象Run-Time Object o"p'~W zd1n0;B$iNi4d9Zx*I0测试对象Test Object +x%awj+Z1sPr/A'? P0U;f}$lD})w d0【正文】 $w^hP \*N051Testing软件测试网$b2h2w^-JB.QTP功能测试基本方法51Testing软件测试网u%C!~{?4@jw(y3}s)P )E%}L%v-P1x0我们简单介绍一下有关功能测试的基本方法,这实际上对于所有自动化功能测试产品来说都是一样的。一般情况下,用QTP来进行功能测试的基本方法主要包括三个主要阶段: ,]@ OG4W1pM01、创建测试或组建 7y|Z-IK4Q4R#H&N051Testing软件测试网j!p9EP/A|W7}首先可以通过在应用程序或网站上录制会话,或者建立对象库并使用关键字驱动功能向关键字视图中手动添加步骤来创建测试或组件。在QTP里面我们可以通过两种方式添加步骤来创建测试或组件: !To.m6` n!ja0p!XmV^0然后在在测试或组件中插入检查点,检查页面、对象或文本字符串中的特定值或特征,通过它可以标识网站或应用程序是否正常运行。或是通过用参数替换固定值扩展测试或组件的范围。提供数据表中的数据,定义环境变量和值,定义测试、组件或操作参数和值,或者使用QTP生成随机数字或当前用户和测试数据等。51Testing软件测试网n7udtv$RS 51Testing软件测试网L7T:l\tvyB+s&X最后如果需要的话使用QTP中众多的功能测试功能来增强测试或组件或添加编写语句来实现更复杂的测试目标。 Y!|z O1cv0j])FlR FWU*L02、运行测试和组建 ~!B3e.\Q5r8Z0/dn'oP(qI0控制运行会话,帮助标识和消除测试或组件中的缺陷。使用“单步执行”、“单步跳过”和“单步退出”命令逐步运行测试或组件,或设置断点使测试或组件在预定点暂停。每当测试或组件在断点处停止时,可以在“调试查看器”中查看其变量的值。51Testing软件测试网&l I!W m0lRw~ 3nC2K8Cx Uc03、分析结果 JS U}W+_*o)XBi Vv051Testing软件测试网8OG+C&SGj/@Q#[在运行测试或组件之后,通过两种方式可以查看其结果:在“结果”窗口中查看结果;自动报告在运行会话过程中检测到的缺陷,可能的话并上报到其他缺陷管理产品中。51Testing软件测试网jk MI3f1@3NR )XPK4zkz~0.试图与对象模型51Testing软件测试网%ObI6dVk 51Testing软件测试网v5`;QEa在介绍QTP中的Descrīptive Programming前,我们有必要先介绍一下ExpertView及在ExpertView里进行编码的一些基本知识。51Testing软件测试网)Ba$~.?/h;_ 51Testing软件测试网/[#N"zC_5`在QTP里面提供了两种视图,第一种我们把它称为KeywordView(关键字视图,在早期的版本中称为TreeView),第二种把它成为ExpertView(专家视图),这两种视图分别是针对两种类型的人进行使用的。51Testing软件测试网W0zhF3x:{$e4f0^ T 51Testing软件测试网iu(]n,o K8{-Yq cO1、KeywordView(关键字视图)51Testing软件测试网&c W UD0D z.U%nGvkt{ 51Testing软件测试网-jP I7A)|通过关键字视图,QTP提供了一种模块化的表格格式创建和查看测试或组件的步骤。每个步骤在关键字视图中都是一行,这样用户可以轻松的修改任何一部分组成。 QC3Dr*Vf"J S07Y*vZ@ vx)xl&h0在录制会话过程中,用户在应用程序上执行的每个步骤在关键字视图中记录为一行。例如,在51testing的页面上执行的下列三个步骤:51Testing软件测试网"?K H(D0b,Lh
8IK y,C*S'U8[0那么,关键字视图将包含下列行: $u+dGv-LqC)^0很显然,关键字视图非常直观有效,使用的人可以很清晰的看到被录制对象的录制层次及运行步骤,比较适合那些对于业务操作流程熟悉的人员使用。但是,如果需要一些增强型的操作,那就需要切换到专家视图里进行了。51Testing软件测试网&h#o!|#d@UK Gc#f+P(S02.ExpertView(专家视图) Hpi1@'e ^`.r051Testing软件测试网3pI9n7PT-|FPQTP在关键字视图中的每个节点在专家视图中对应一行脚本。上面例子对应的脚本如下:(删除后一句是因为前后重复,一句可以说明问题)51Testing软件测试网/@)xBzhd 51Testing软件测试网\5^d4@a7} QBrowser("51Testing软件测试网:软件测试的专业网站").Page("51Testing软件测试网:软件测试的专业网站").WebEdit("username").Set "zhoda02" 4j4V IdK2j0!r(@q!E^0Browser("51Testing软件测试网:软件测试的专业网站").Page("51Testing软件测试网:软件测试的专业网站").WebEdit("password").SetSecure "41c630a213508cd49eb35089db1b893144b9" !\*zQUj@0k]Z|7OHvrmZ0Browser("51Testing软件测试网:软件测试的专业网站").Page("51Testing软件测试网:软件测试的专业网站").WebButton("登录").Click 2A%D+f'?#~xx051Testing软件测试网Mt-z0BSnc对于QTP来说,其核心编码语言是Visual Basic scrīpt,因此,如果用户熟悉VBscrīpt,可以运用自如的添加和更新语句,并通过编程方式增强测试和脚本,而这一切必须在专家视图中完成。 z-uwb0`051Testing软件测试网"^zS9[ y#_L更为重要的是,有些操作是必须在专家视图中才可以完成的,例如:要处理动态对象、客户化报告、获取对象运行时的属性值(Run-time Value)等等,这些都必须通过专家视图中的VBscrīpt编码完成。51Testing软件测试网BeR7VP!Pm mqZ\A4eh"r:w0z0然而,QTP里所有的操作都是基于对象进行的,所以我们必须对对象模型有一个基本了解,才可以在专家视图内进行Descrīptive Programming。51Testing软件测试网]8U@"W[z 51Testing软件测试网$YT'E]!fA @3、测试对象模型 [(dAwwCZi.p0?)r9^:]3\J~ T0测试对象模型是一大组对象类型或类,QTP用这些对象类型或类来表示应用程序中的对象。每个测试对象类都有一个可以唯一标识属于该类的对象的属性列表,以及一组 QTP可以对其进行录制的方法。它包括测试对象(Test Object)和运行时对象(RunTime Object)。 .C5q?7x|5O/x7o H0FE,j$A4^ R1hS$w4f9K0测试对象是QTP在测试或组件中创建的用于表示应用程序中的实际对象的对象。QTP存储有关该对象的信息,这些信息有助于它在运行会话期间标识和检查该对象。 w h:r me*e\ [051Testing软件测试网,q;Tx&["Km0yN运行时对象是网站或应用程序中的实际对象,在运行会话期间执行针对该对象的方法。 ~+b{hm M1o^(h051Testing软件测试网V?E5wwJT如果录制时执行应用程序的相应操作,则一般情况下QTP将完成以下操作: 7r^{*vb3x]y0
例如,假定使用以下 HTML 源代码单击“查找”按钮:51Testing软件测试网!H.F(H*{/[f.K}%sUF4Q Z crT%r0<INPUT TYPE="submit" NAME="Find" VALUE="Find">51Testing软件测试网D,qK!h0h:@,} C7O@W `*~0QTPl将单击的对象标识为 WebButton 测试对象。它将创建一个名为 Find 的 WebButton 对象,然后为该 Find WebButton 对象录制下列属性和属性值,同时还会录制对WebButtion的Click方法。51Testing软件测试网9yv,kPOB 在关键字视图及专家视图中显示内容分别为: T$C#DO;@tT;X0)t#O n%hp8Gdw7R(dV-HZ0Browser("Mercury Interactive").Page("Mercury Interactive").WebButton("Find").Click !}E2~'i8Z1g2o0#DVlL:ke`M9j;c0运行测试或组件时,QTP通过其测试对象类及其描述(一组用于唯一标识该对象的测试对象属性和属性值)来标识应用程序中的每个对象。测试对象及其属性和属性值的列表存储在对象库中。例如在上例中,QTP将在运行会话期间在对象库中搜索 WebButton 对象,通过名称 Find 来查找其描述。QTP根据找到的描述,在应用程序中查找 WebButton 对象,该对象带有 HTML 标记 INPUT、类型为 submit、值为 Find。找到对象后,它将对其执行 Click 方法。51Testing软件测试网h6S a1P b7Q%e6J 51Testing软件测试网 Drc2sUIy8^U在这样一组对象模型的基础上,QTP为各类应用对象都提供了一组方法和属性,例如Web Objects,Windows Objects,SAPGUI Objects,ActiveX,Java等。下面是一些Web Objects的方法和示例: 8F)z'kh B K%E*^(~d!y0
|