好学IT学院:IT信息技术分享交流平台
来源:中国IT实验室  作者:佚名  发布时间:2008-10-20  ★★★加入收藏〗〖手机版
Windows Mobile程序的自动化测试简介
摘要:随手打开MEDC2007的课程列表页面,看到了一个课程的标题《使用WindowsMobileTestFramework进行自动化测试》,突然想起来新的WindowsMobile6SDK中似乎包含这个叫做什么WindowsMobileTestFramework的…

 随手打开MEDC 2007的课程列表页面,看到了一个课程的标题《使用Windows Mobile Test Framework进行自动化测试》,突然想起来新的Windows Mobile 6 SDK中似乎包含这个叫做什么Windows Mobile Test Framework的东东,于是乎打开WM6的安装目录下的Tools\Windows Mobile Test Framework\Windows Mobile Test Framework.zip这个zip包瞅一瞅。

真是不看不知道,一看吓一跳。。。微软居然把这个框架单独发布出来了。其实这套东西貌似在Windows CE 5的CE Tool Kit中就包含,不过现在貌似把它单独提出来进行推广了。那么,我也来写一个关于它的系列和大家来研究研究这套Windows Mobile Test Framework吧。

一、微软Windows Mobile Test Framework简介

Windows Mobile Test Framework(以后简称为WMTF)是微软内部使用的一套Windows CE/Windows Mobile上的自动化测试框架。使用这套框架,我们可以很方便的用它来模拟用户来对您的程序进行操作,来进行功能/UI/本地化等多种测试。

此框架的整体结构如下图所示:

绿色部分为微软在这个Windows Mobile Test Framework中所提供的。

橙色的UIAL,为我们需要使用微软在Windows Mobile Test Framework中的工具来自己生产且做少量修改工作的。

蓝色部分为需要我们大家自己来完成的部分。

二、Windows Mobile Test Framework各层次介绍

1) Utils.Net:

这一层提供了很多在其他各个层次中经常需要用到的公共对象或者是一些在.NET Fx中有而在.NET CF中被省略了的对象,例如进程/设备信息/内存/注册表等。

2) Logging:

这一层顾名思义,当然是封装了日志记录的功能,用来记录测试中的过程和结果。当然,这套Logging机制非常不错,不但在这里可以用,您甚至可以把它用于开发过程中甚至是桌面程序开发中。

3) DATK:

DATK的全称是Device Automation ToolKit。它是一套影射了所有的Windows CE上的标准控件的一套类库。例如文本框,列表框,按钮等等。同时,在这一层还有一个主要的对象叫做WindowsFinder,它几乎可以说是DATK甚至是WMTF的核心部分。您可以通过它来制定条件(例如类型,文本,进程等等)来寻找到某一个控件,然后把这个控件绑定到一个DATK控件上,然后您的代码来操作这个DATK 控件就可以实现对实际的控件的调用。这其实就是Windows Mobile Test Framework的核心部分。

4)Mobility ToolKit:

以后我们将它简称为MTK。MTK里面主要在DATK的基础上增添了许多针对移动设备特有的对象。可以认为它是DATK的一个扩展。

5)UIAL:

UIAL(UI Abstraction Layer),它是您要测试的应用程序的界面的一个影射。您必须为您的需要测试的每一个界面建立对应的UIAL层代码(借助微软提供的工具),这样才可以对程序进行测试。一个典型的UIAL层代码通常包含4部分。

A. 对话框类:它是你要测试的那个对话框的一个影射,同时这个类里面也应该包含该界面上面所有控件地应的DATK控件。

B. 应用程序类:用来启动该对话框。

C. IdnHolder类:用来查找对话框中的本地化资源文字。

D. 自测试代码:赫赫。。。从这一层起,就需要做测试了。

6) Area Libraries:

在这一层我们通常来封装一些可以复用的步骤。举例来说,您的测试程序中需要打开某一个对话框,而这个步骤显然是可以复用的(也许为了测试不同的地方我们需要反复的打开这个对话框)。那么我们就可以把这个打开程序,然后再打开该对话框的步骤封装到Area Libraries便于以后复用。

7)Test Cases & Test Suites:

这一层我们通常简称为Tests层,显然,在这一层我们用来编写我们的测试代码。和NUnit之类的很相似。使用Suite来把一些Test Cases组织到一起。

最终,测试引擎Tux.NET将调用Tests层中的测试代码,按照您的测试脚本来测试程序。