Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com

Different QTP: 前言

上一篇 / 下一篇  2012-08-26 21:02:24 / 个人分类:QTP

这是我对两年来QTP工作的一份总结。详细介绍了Framework的设计理念和方法。

前言:Different QTP

为什么叫做“Different QTP”,具体来说,在我的项目里,下面一些是不使用的

1.   Object Repository(尽量不用)

2.   Reusable Action(严禁使用)

3.   Smart identification(严禁使用)

4.   Keyword view(没有必要用)

5.   Reporter ReportEvent(尽量不用)

简单来说,QTP里一些提高易用性的工具,基本上统统都用不上。

QTP(QuickTestPro)作为最流行的商业软件测试工具,像其他商业软件一样,在软件的易用性方面都是费尽心机。设计了很多工具来让用户能够快速开始设计一个测试脚本。但是,最近我在对这两年QTP测试工作进行总结时,发现在我的项目里,并没有使用QTP提供的这些提高“易用性”的工具,甚至很多工具是严禁使用的。可以说,我做QTP测试项目的开发方式和QTP的推荐方式完全不一样。这就是我把文章命名为“Different QTP“的原因。

在我看来,QTP提供的很多工具只是为了Quick比如record对于小项目尚能接受,但对于比较大且长期运行的项目,却带来了维护的问题,反而是效率低下的。

也许你觉得这样比较“激进”,但我的实践证明了这些措施是有效的。在两年的时间里,我按照这样的理念设计了QTP测试的framework在此framework基础上有超过1000testcase也是在使用同样的理念开发出来。整个Team都觉得这些testcase的开发效率和可维护性远远超过了按照常规的QTP方式开发的testcase。这也是我有信心把这个过程中的经验教训共享出来的原因。

一个QTP测试项目如果简单的划分,包括三个部分。如下所示。

       +-------------------------+    +--------+
       |                         |    |        |
       |      TestCases          |    |        |
       |                         |    | Mngt.  |
       |                         |    | Tools  |
       |                         |    |        |
       +------------------------->    |        |
       |                         |    |        |
       |                         |    |        |
       |                         |    |        |
       |   Function Library      |    |        |
       |                         |    |        |
       |                         |    |        |
       +-------------------------+    +--------+

Testcase就是根据手动测试的Testcase实现的QTP testcase

 

Mngt. Tools是一些脚本工具,来自动化批量执行,产生测试报告,生产代码文档等工作。

Function Library是对产品操作的封装库。对产品的操作既包括高层次的业务层面的操作比如“创建一个用户”,也包括低层次的对某个GUI元素的操作,比如“Click Button”。它的封装形式并不限于FunctionQTP支持的Reusable  Action也是一种封装形式。一个测试框架应该包括Function LibraryMngt Tools两个部分,但因为Function Library是主要的部分,所以,有时候也把Function Library叫做Framework。在本文里,并不涉及Mngt. Tools,所以两个名词是可以互换的。

决定一个framework最否有效解决问题的关键是它对问题领域的抽象。所以下一篇,我要介绍Framework里最重要的两个抽象。

 1:通常来说,一个framework几乎都是产品特定的。不可能完全把测试A产品的framework用在B产品上。但是framwork的设计思路是可以共享的。下面的系列文章里我会具体介绍这些设计思路,希望能对你能有所启发,能引起你的一些思考。任何你的idea也欢迎和我讨论。

TAG:

zhaomiaoqq的个人空间 引用 删除 zhaomiaoqq   /   2012-09-07 23:16:34
1
LIFR: Life Is For Run...? 引用 删除 lifr   /   2012-09-03 09:15:17
原帖由liuzhijun401于2012-08-30 17:20:16发表
不用Reporter ReportEvent,怎么进行判断呢


用内建的一套Assertion API。这套API接口和Unit test类似, 比如有
AssertTrue, AssertNotTrue, AssertNothing, AssertNotNothing, Failure
也还有一些扩展, 比如
AssertInclude:用于判断数组是否存在某元素
AssertMatch:用于判断字符串是否match正则表达式。
等等。

用Assertion API的特点是:
1. 一旦出错, 马上就停止testcase的运行。出错了永远不会继续执行下去。
2. 和外面batch run和report配合, 可以自己在一个HTMLreport里看到错误的内容。 能在第一时间对错误原因做出判断。 而不用把Result View打开才能知道具体的错误内容。
liuzhijun401的个人空间 引用 删除 liuzhijun401   /   2012-08-30 17:20:21
5
liuzhijun401的个人空间 引用 删除 liuzhijun401   /   2012-08-30 17:20:16
不用Reporter ReportEvent,怎么进行判断呢
 

评分:0

我来说两句

Open Toolbar