自动化测试项目开发流程说明(4)

发表于:2015-02-28来源:uml.org.cn作者:不详点击数: 标签:自动化测试
1.9.2. 论对象识别机制 QTP工具在管理对象库方面是成功的,对象管理的结构很清晰,也很简单,对于开发人员来讲易于管理和使用,例如:对象的关联方法

  1.9.2. 论对象识别机制

  QTP工具在管理对象库方面是成功的,对象管理的结构很清晰,也很简单,对于开发人员来讲易于管理和使用,例如:对象的关联方法、对象的定义、对象的识别处理机制。个人觉得这些都是QTP工具上的亮点。以前,网上论坛常有人在争论描述性识别对象方法和对象库识别对象方法的优劣之分,其实,在我看来,二者本无优劣之分,仅有在特定的情况下,那种方法更适用,更方便脚本的开发。此处,我总结下我的看法:

  1) 描述性对象识别方法:使用简单、体现直观、易于理解、处理灵活,在小规模项目和简单的对象识别上可以考虑使用,但是前提是对象在后期不会变更,否则随之带来的是大量的维护任务。

  2) 对象库识别方法,科学管理、识别机制更强大、适用于大型的自动化项目开发,多人协作模式,以及项目对象频繁变更的场景下。一般是推荐使用对象库来管理识别对象,更有利于整个项目的管理。

  上述二者之关系,好比一个是摩托车(描述性方法),一个是轿车(对象库管理),都可以用来处理对象识别,因为他们都是用发动机引擎,不过发动机的引擎规格不同,决定了它们的性能不同。摩托车固然灵活轻巧,容易驾驶上手,但是安全性不足,上了高速容易出事故,抛头颅,洒热血!而轿车呢,成本高,得先考驾照吧,即掌握使用方法,然而,相比摩托车,其速度更快、安全性更高(安全气囊)、行程更远。

  另外,引用上述比喻,轿车也非万能,跑高速路上很优秀,但是走山路呢?这里想说明一个问题,对于产品的web对象可识别度不高、开发人员无法给与支持配合的情况下,对象库的使用也容易出现不灵光的现象,毕竟QTP对象库提供的识别技术有限。解决办法?请挽起袖子自己造轮子吧!这也是定义对象库文件【XXX_Object.vbs】的目的之一,对于识别难的对象(包括识别不到和识别速度慢),可以采用DOM方法封装函数对象的方式处理。这个方法目前在多个项目中被使用,效果比较好,因为这样即利用了对象库的优点,也提高了对象识别的灵活度。

  1.9.3. 公共对象库的管理方法

  对于新手,往往对对象库管理比较不感冒,使用过程也常头疼,觉得写个脚本中间还隔着个对象库,不论编写或维护脚本都比较麻烦。但是随着学习的深入以及经验的积累,对于QTP对象库会更为准确的认识。

  本人在这三年来积累的一些相关认识记录下来供大家参考:

  1) 使用对象库,必须先掌握对象识别机制,否则一定管理不好对象库。例如测试对象中的Web控件类别、每一类对象常用到几种定位属性、对象识别的优先顺序和策略等。

  2) 对象库的目录树需要合理规划,正常情况下可以按照页面的功能排布来划分,如果存在特殊的对象,如上传弹窗,页面弹窗等,也可以根据对象的类别独立出来管理。良好的对象库目录树分类有助于脚本的编写和对象库的维护。

  3) 对象命名的方式也需要统一准确,避免和其他模块的对象名称相混淆。对于集合类的对象需要做出特征标示,标示该对象属于集合对象、可以通过定义属性来定义对象。其次,良好的命名风格,可以使对象在目录树中分门别类清晰排布,如果随意命名,对象显示会呈现散乱不易管理。

  4) 对象添加到对象库后,需要对特征属性进行重新确认并编辑,因为QTP默认识别到的对象属性不一定是最优方案,需要根据项目的对象特点采用最为稳定的特征属性。另外,对于使用定位属性(Index、Location、CreateTime)这类的对象,一定要慎重!多考虑在不同场景下,对象的定位是否准确。

  5) 对象库中的定位属性,并不是越多越好,也不是越少也好,而是应该从稳定和识别速度上来取舍。

  6) 通过对象库工具添加对象不一定能定位到属性,此时,可以使用FireBug这类工具来查看对象代码,通过分析代码抓取有效的特征值。

  7) 灵活运用对象定位属性值的正则匹配方法,对于某些特征值,虽然不固定,但是有一定的规律,此时可以使用正则表达式来匹配,往往会有惊喜!

  1.10. 设计脚本批量执行

  1.10.1. 概念说明:

  脚本批量执行就是根据给定对配置,调用执行工具对多个脚本进行遍历执行,并将执行对结果保存到指定对位置以供分析。

  1.10.2. 批量执行方法

原文转自:http://www.uml.org.cn/Test/201304163.asp