随手打开MEDC2007的课程列表页面,看到了一个课程的标题《使用
WindowsMobile
TestFramework进行自动化
测试》,突然想起来新的WindowsMobile6SDK中似乎包含这个叫做什么WindowsMobileTestFramework的东东,于是乎打开WM6的安装目录下的ToolsWindowsMobileTestFrameworkWindowsMobileTestFramework.zip这个zip包瞅一瞅。
0 @7 R0 B/ X& F' \( V 真是不看不知道,一看吓一跳。。。
微软居然把这个框架单独发布出来了。其实这套东西貌似在WindowsCE5的CEToolKit中就包含,不过现在貌似把它单独提出来进行推广了。那么,我也来写一个关于它的系列和大家来研究研究这套WindowsMobileTestFramework吧。
2 _4 q' \6 ^1 B r7 x2 o. ]. V, G 一、微软WindowsMobileTestFramework简介
3 p. K" m K- p+ v5 A; H
WindowsMobileTestFramework(以后简称为WMTF)是微软内部使用的一套WindowsCE/WindowsMobile上的自动化测试框架。使用这套框架,我们可以很方便的用它来模拟用户来对您的
程序进行操作,来进行
功能/UI/本地化等多种测试。
- q! v* ?1 r- O3 k- y8 ?# | 此框架的整体
结构如下图所示:
# e3 A1 }) |( y' j9 u# v( j
5 `& B7 {; M5 N2 p! B
. A6 y7 B' D* H
% ?$ e# W; }3 m& k- q: A
绿色部分为微软在这个WindowsMobileTestFramework中所提供的。
7 M# I+ U; k3 l0 w) z9 i4 w
橙色的UIAL,为我们需要使用微软在WindowsMobileTestFramework中的工具来自己生产且做少量修改工作的。
% @9 P2 G( I8 b 蓝色部分为需要我们大家自己来完成的部分。
2 }1 N; S% L: b. f0 w5 e1 f% Z
二、WindowsMobileTestFramework各层次介绍
1 ^( X9 I( C( l# H: Y, Y+ x 1)Utils.Net:
1 d. D: E3 Y# {6 o* ^: b7 j B 这一层提供了很多在其他各个层次中经常需要用到的公共
对象或者是一些在.NETFx中有而在.NETCF中被省略了的对象,例如进程/设备
信息/
内存/注册表等。
7 U" x) j* d! W. o1 ?
2)Logging:
6 V5 V$ }4 |1 [7 r
这一层顾名思义,当然是封装了日志记录的功能,用来记录测试中的过程和结果。当然,这套Logging机制非常不错,不但在这里可以用,您甚至可以把它用于开发过程中甚至是桌面程序开发中。
/ m! q+ d+ _2 ?% Y3 x 3)DATK:
8 v' a0 u! J0 l2 w3 N% u& L- N1 X/ n DATK的全称是DeviceAutomationToolKit。它是一套影射了所有的WindowsCE上的
标准控件的一套
类库。例如文本框,列表框,按钮等等。同时,在这一层还有一个主要的对象叫做WindowsFinder,它几乎可以说是DATK甚至是WMTF的核心部分。您可以通过它来制定条件(例如类型,文本,进程等等)来寻找到某一个控件,然后把这个控件绑定到一个DATK控件上,然后您的代码来操作这个DATK控件就可以实现对实际的控件的调用。这其实就是WindowsMobileTestFramework的核心部分。
1 y. d1 ^+ s; Z7 Y
4)MobilityToolKit:
' { {8 Q" D7 v* r8 l& t6 L 以后我们将它简称为MTK。MTK里面主要在DATK的基础上增添了许多针对移动设备特有的对象。可以认为它是DATK的一个扩展。
: V: }; w- q3 ]4 n 5)UIAL:
* p3 y2 ^( o5 R0 U8 m2 ~+ @- J9 _* m UIAL(UIAbstractionLayer),它是您要测试的应用程序的界面的一个影射。您必须为您的需要测试的每一个界面建立对应的UIAL层代码(借助微软提供的工具),这样才可以对程序进行测试。一个典型的UIAL层代码通常包含4部分。
' w& T+ W0 C, F& [# S# y2 J A.对话框类:它是你要测试的那个对话框的一个影射,同时这个类里面也应该包含该界面上面所有控件地应的DATK控件。
& N# R8 k5 F" o! `- w) v B.应用程序类:用来启动该对话框。
! l4 B% U; z2 d5 G; q3 T
C.IdnHolder类:用来查找对话框中的本地化资源文字。
8 {( D7 X* \ k7 i# S
D.自测试代码:赫赫。。。从这一层起,就需要做测试了。
' R4 s/ m$ L; c1 M 6)AreaLibraries:
( Y0 Q X" n, y0 Q
在这一层我们通常来封装一些可以复用的步骤。举例来说,您的测试程序中需要打开某一个对话框,而这个步骤显然是可以复用的(也许为了测试不同的地方我们需要反复的打开这个对话框)。那么我们就可以把这个打开程序,然后再打开该对话框的步骤封装到AreaLibraries便于以后复用。
- X- \ r" g! T1 g
7)TestCases%26TestSuites:
! R" |+ s9 d! K6 W0 R' S) B/ q 这一层我们通常简称为Tests层,显然,在这一层我们用来编写我们的测试代码。和NUnit之类的很相似。使用Suite来把一些TestCases组织到一起。
: ]6 {. {1 S, r& o 最终,测试引擎Tux.NET将调用Tests层中的测试代码,按照您的测试脚本来测试程序。