QTP应用模式设计

上一篇 / 下一篇  2009-09-03 16:08:42 / 个人分类:自动化测试

51Testing软件测试网iZ(?~:O#|0n#M7a

以下只是个人对自动化测试的一些看法。针对的QTP工具所写,其他软件测试工具相应的设计可能不一样。

h7SXW ~}m"P9@ n_ p051Testing软件测试网2Q%yaJ4fsr

  自动化测试并不只是利用自动化测试工具进行录制回放操作。虽然基本是每一个自动化测试工具都必须提供的功能,但如果只是这么应用,从严格意义上来说,这并不能算是自动化测试。最多只能说是实现了一定的自动化操作。因为这时自动化脚本都是写死的,自动化测试使用的数据也是写死的,没有灵活性可言,也没有对脚本进行容错性处理,脚本基本是运行不完。且也没有添加测试验证,不能验证执行结果是否符合预期的结果。51Testing软件测试网Uj_8{Sv7~8wl

51Testing软件测试网(g dob fo&y

  早期使用QTP,可以利用 QTP提供的功能实现三层架构:测试数据,测试对象和测试脚本三个结构的分离。QTP提供DataTable对象来保存测试数据,且也提供了把脚本中的测试数据参数化到DataTable而脚本中只引用了参数化的名称的功能,而DataTable存储的是一个Excel文档,方便修改测试数据,这样便实现了测试数据与测试脚本分离;QTP也把自动化测试中要操作的对象放到了对象库中进行管理者,实现了对对象的统一管理,也实现了测试对象与测试脚本的分离。51Testing软件测试网 Ll|v9S

:U3s[Fx051Testing软件测试网!TU$E|GBN%n R'V

51Testing软件测试网h:P3L N {u3y K

  51Testing软件测试网_;]v}RL3C5z9G

51Testing软件测试网 Vo,s8Y0s

  进一步的深入,会发现自动化脚本中的逻辑结构的功能实现紧密的结合在一起,给后期的维护和修改造成的很大的麻烦。这时就会想到需要把测试脚本进行细分。因此除了按上面说到的把测试数据,测试对象分离出脚本外,还需要把脚本细分为:逻辑控制和功能实现脚本。也即实现了自动化脚本的四层架构设计。功能实现脚本即为把脚本把每个小功能细分出来并编写成一个个独立的小的功能实现脚本,如登录,登记等等。然后编写逻辑控制脚本来实现这些小的功能实现脚本执行的先后和次数,如,实现流程等。51Testing软件测试网q;Pf7h!N n5g

51Testing软件测试网8Ctm!@\"^CDjLv

nv3Qej2`051Testing软件测试网 e5NR;Cv? p:cC

  

n_?XR;ep051Testing软件测试网 D7L NK*k${f)yO

  实际应用自动化后,会发现很多脚本实现方法相同或相似,而且功能小脚本拼接不容易修改。这时可以再上面四层架构的基础再增加一个框架结构,实现五层架构。利用框架封装一些常用的方法、函数和小脚本,以实现公共脚本的复用,减少自动化脚本的开发时间。在框架中还可以把上面的四层架构的内容包含到框架中进行统一管理和调度。当然还可以利用配置文档(如ini文件)来实现流程或其他功能的可配置测试(如,网址,用户名,密码。方便改变测试环境后修改)。

4~}B:y3Q6S0

J&j}Jv$r)xd0  

%`7~/X^R e']051Testing软件测试网2zz7Wi5W-DD-m

以上只是针对整体的大的自动化方面来区分,当然还可以对一些小的部分进行细分,以达到更好的可配置性和容错性,降低脚本的修改成本。可以再细分的设计如下(暂时想到的):

Ap i%T[0ut051Testing软件测试网8[!q$c X5s`:~9r

  1. 测试对象的定制51Testing软件测试网 F$Q6y1Vm$Q+|*U

-rC*r)Ld8i F0  首先可以应用QTP的对象管理来实现对象维护功能,但是这个功能在实现对象的定制上还是比较弱。QTP支持使用描述性编程来实现对象的识别,即可以通过定制的识别对象的属性名和属性值来实现对象的识别。这样就可以把对象的类型和识别对象的属性名和属性值维护在框架中的对象识别Excel文档中,格式如下,这样就能实现更强的对象定制功能:

0mr4FqO051Testing软件测试网enV.PbYD _

  表--对象识别表

o X)K?4X*c Z0
对象名对象类型识别对象属性及值
登录按钮WebButtonName:=登录
   
51Testing软件测试网E4s/?*ni__3O

  2. 逻辑配置到外部文档,实现事件与脚本分离

`r:ajhGk051Testing软件测试网2qo1D7p9H"G ]:p

  通过把要实现的逻辑按顺序配置到外部文件,然后再QTP脚本中调用此配置文件,最后根据配置文件中的信息调用不同的脚本、对象、测试数据来进行测试。配置样表如下:

K9n5zdk:w0

&QE!??$wt^ Wn+b%ZP-[0  表--登录流程表51Testing软件测试网"nK!M%X0w^|3d ~y0q$T

序号对象事件
1用户名输入框Set
2用户密码输入框Set
3登录按钮Click
4登录后页面Check
   

z#m} k Q0  3. 页面对象检验文档化51Testing软件测试网1z?v)a etf}

51Testing软件测试网i9A&RZ%{2b e

  把要添加大量验证点的页面的对象维护到外部Excel文档,然后在QTP脚本中调用此文档,这样就可以实现要验证对象的动态修改。样表如下:

O&} vW;@S9P?9X+W\0
页面对象类型识别对象属性及值期望值
案件保存结果页面姓名Name:=姓名测试姓名
案件保存结果页面地址Name:=address北京市海淀区
    

Y|S\ ^d3{0  4. 测试数据按功能分离51Testing软件测试网3z#S._Q4~n.hG!A

51Testing软件测试网"YV.e.E{*h(U"wNo X

  QTP虽然把测试数据给分离出来到一个Excel文档中,但当测试数据很多时就不好查找,这时可以把测试数据按功能模块划分,分别放到多个测试数据Excel文档中,然后在QTP脚本中通过QTP内置对象DataTable提供的方法ImportSheet根据脚本需要使用的测试数据加载对应的 Excel数据文档的工作表。这样就能实现一个数据文件按功能分解成多个数据文档,方便后期维护。

AOE5d D oQ8n7ll0

_g$?8qJ-E$J0  5. 测试数据自动生成51Testing软件测试网yQ&UI[-R3X6`D

51Testing软件测试网f2P'b0d7?@h

  当需要比较多的测试数据时,如果人工方式输入,将需要比较大的工时投入。这时可以考虑应用VB,C#等编写一个修改Excel数据文件中的数据的工具,且要实现能自动生成测试数据。然后在编写的工具中能过QTP提供的接口自动调用QTP并执行自动化测试,然后显示测试结果。

SN}z.j2S051Testing软件测试网_-fi$WD^B%A^7Erl

  6. 脚本与QTP分离

ztNz*P-}051Testing软件测试网 uGOOYv

  要实现脚本与QTP分离,使QTP只成为执行工具,最好可以使用VBS文件来实现,毕竟QTP支持VBS,加载VBS脚本到QTP中后可以直接运行。当然也可以使用其他文件来存储这些脚本,然后加载到QTP后使用Execute来动态执行这些脚本。不过最好还是用VBS,在VBS文件中最好全用 Function和Sub来模块化小脚本,以实现更好的可配置。使用的方式可以如下:51Testing软件测试网4CH k.k#\%\

51Testing软件测试网j!~F7^%yy!\

  51Testing软件测试网%Ed/[7f$U(~+bG YAk

gy,ld w*[2U3xt0  以上只是在学习QTP和使用QTP的过程中想到的一些QTP应用方式的设计思路(有些思路已经在当前测试部的自动化测试中实际应用了),并不是说要应用QTP就得实现这些设计,只有适应当前QTP应用现状和项目现状的应用方式才是最好的方式。但这些设想也可以为将来更好的使用和优化QTP测试提供一些思路。但主要还是在实践中要多总结,并多考虑更好的架构和实现形式,并不断补充和实践,才能促进自动化更好的应用。

;g(x} M u4aZ*U9M051Testing软件测试网 Q g6[!p,{~

 

~4AbY!lsO0

AY!R$~ytS[{&i0本文出自chenyb85的51Testing软件测试博客:http://www.51testing.com/?13098651Testing软件测试网 D$rsV$} p8G


TAG: 设计 QTP 应用模式

 

评分:0

我来说两句

日历

« 2024-03-16  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 46404
  • 日志数: 47
  • 建立时间: 2009-09-03
  • 更新时间: 2010-06-10

RSS订阅

Open Toolbar