如何建立自己的轻量级UI 测试工具(上)

发表于:2010-3-26 15:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Gang.Wang(cnblogs)    来源:51Testing软件测试网采编

  目前流行的自动化测试 工具很多,如 WR 、 QTP 、 ROBOT 、 ROBOTJ 、 TC 、 RFT 可能一下子都数不过来,功能很强大,有没有想过做一个属于自己的测试工具?应该还有很有意思的。

  开门见山,先从这类测试工具的 基本原理说起,向大家展示自动化测试工具是 不是像大家想的那样神秘,它到底是如何工作的,最后探讨一下如何建立自己的测试工具。

  一、自动化测试工具原理

  一个自动化测试工具应该有三大模块:录制、回放和对象库。就是这三个模块才支持了整个自动化测试工具,下来分别探讨下这三个模块:

点击图片可在新窗口打开

  1、录制( Recorded )

  录制就是把操作的过程记录下来,在这个过程中需要记录的主要有以下三点 :鼠标事件、键盘事件、事件响应过程的对象。对象即窗体( WINDOWS 系统中,控件就是一种特殊的窗体,所以本文中不再区分窗体和控件,一律叫窗体),这些对象会被存入一个叫对象库的地方,当然和对象相关的属性也会被记录如 class 、 caption 、 enabled 等等就会和对象一起存入对象库,并分配一个唯一的 ID 进行识别。

  在这个过程用到的技术是一种叫做“钩子( hook )”的东西,在你点击录制后,测试工具会加载一些相关的钩子,如鼠标钩子,键盘钩子就是最常见的两种, WINDOWS 的钩子函数可以认为是 WINDOWS 的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过 “ 钩挂 ” ,您可以给 WINDOWS 一个处理或过滤事件的回调函数,该函数也叫做 “ 钩子函数 ” ,当每次发生您感兴趣的事件时, WINDOWS 都将调用该函数。一共有两种类型的钩子:局部的和远程的。局部钩子仅钩挂您自己进程的事件。远程的钩子还可以将钩挂其它进程发生的事件。当您创建一个钩子时, WINDOWS 会先在内存中创建一个数据结构,该数据结构包含了钩子的相关信息,然后把该结构体加到已经存在的钩子链表中去。新的钩子将加到老的前面。需要注意的是如果是一个远程钩子,系统就必须把钩子函数插入到其它进程的地址空间,要做到这一点要求钩子函数必须在一个动态链接库中,所以如果您想要使用远程钩子,就必须把该钩子函数放到动态链接库中去。

  2、回放( PlayBack )

  先说一个简单的例子,在使用测试工具的时候,看到一切操作都是自动的,那么点击一个按钮的过程在系统内部是如何完成的? WINDOWS 系统对每一个窗体都有一个唯一的标识,成为句柄(本文中涉及窗体句柄),句柄是和对象一一对应的 32 位无符号整数值。对象可以映射到唯一的句柄,句柄也可以映射到唯一的对象。 WINDOWS 众多的 API 当中就是如何通过句柄得到和这个句柄相关的窗体的坐标位置,然后移动鼠标到这个位置,再产生一个鼠标点击的事件就完成了一个单击的回放。那是如何得到句柄的?不错在回放的过程中得到句柄是最重要的,这又要提起对象库,通过对象库里记录的每个对象的相关属性找到正确的窗体,这个就是在录制过程中(或者在添加对象的过程)需要完成的事情。

  3、对象库( Object Map )

  对象库是测试工具开发商自己定义的一种数据结构,每个窗体在对象库中存为一个对象,对象包括自身许多的属性。目的在于回放的时候告知程序应该去操作什么样的控件,就是“重现”操作环境的目的。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号