`
zdw624ma
  • 浏览: 12743 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Windows Mobile Test Framework实现手机软件自动化测试的介绍

阅读更多

Windows Mobile Test Framework实现手机软件自动化测试的介绍
2010年11月25日
  摘要:本文就Windows Mobile Test Framework(WMTF)自动化测试做了比较详细的介绍,它介绍了WMTF的由来,获取,测试环境的搭建,以及如何创建软件自动化测试工程的AbstractionLayer,AreaLibrary,Test Suits和Test。特别是在WMTF实现自动化测试的过程中,图文并茂,操作步骤非常详细,图片说明非常具体。希望能够给Windows Mobile Test Framework初学者提供一点点的帮助。
  关键字:Windows Mobile Test Framework, 测试环境搭建,Abstraction Layer, Area Library, Test Suits and Test Cases的创建
  一、 前言
  最近,公司领导参加了微软组织的一次培训,带来了一个叫Windows Mobile Test Framework的好东西,他看了之后特别感兴趣。回来之后,把这项光荣的任务交给我研究,计划在公司Mobile产品线上使用并且推广。
  以前,我从来没有接触过Mobile上面的任何东西,当然更加不知道Windows Mobile Test Framework是什么东西了。可领导安排我研究,是对我的信任和重视,我只能硬着头皮披甲上阵了。领导给我的时间不多,前后只有两个礼拜。在这一段时间里,我还需要做其他的事情,又加上家里母亲生病,需要我照顾,时间特别的紧张。我想通过网络寻找一些资料,可是对Windows Mobile Test Framework的介绍实在是非常非常的少。我记得只有在一位网友的博客里有关于Windows Mobile Test Framework的简单介绍,他还只是把Windows Mobile Test Framework自己带的帮助文件中的一个简单例子进行了翻译而已。
  功夫不负有心人,经过一段时间的研究,终于对Windows Mobile Test Framework有所体会了。发现有很多人问Windows Mobile Test Framework实现自动化测试的事情,我想把自己仅有的一点收获和大家分享。
  二、 Windows Mobile Test Framework简介 
  对每一位不了解Windows Mobile Test Framework的朋友来说,肯定会问这样一个问题,"Windows Mobile Test Framework是什么东西呀?"。当然,我自己也不例外。
  Windows Mobile Test Framework,是微软内部使用的实现软件自动化测试的框架,它是构建自动化测试程序的框架,是一个可以供测试工程师编写调试运行测试脚本的编译环境和运行环境。
  Windows Mobile Test Framework,它随着Windows Mobile 6 SDK的发布而公开发布出来了。
  三、 Windows Mobile Test Framework的获取 
  知道了Windows Mobile Test Framework是什么之后,也许大家会马上关心这样一个问题,"我从哪里去拿Windows Mobile Test Framework呢?"。
  Windows Mobile Test Framework它不是微软对外公开的独立产品,它是随着Windows Mobile6 SDK的发布而发布的,拿到它其实非常的简单。
  在http://www.microsoft.com/downloads/details.aspx?Fa milyId=06111A3A-A651-4745-88EF-3D48091A390B&display lang=en
  下载Windows Mobile 6 Professional and Standard Software Development Kits Refresh。Windows Mobile6 SDK有两个版本,一个是Professional版本,一个是Standard版本。它们之间的区别,我不想在这里说明了,请大家自己尝试一下就明白了。
  这里,我拿Professional版本举例子,从微软网站下载Windows Mobile 6 Professional SDK Refresh.msi之后,双击它进行运行安装。比如把它安装在
  C:\Program Files的目录下面,我们可以看到这样一个目录C:\Program Files\Windows Mobile 6 SDK\Tools\Windows Mobile Test Framework,同时在这个目录下面,我们还会看到一个Windows Mobile Test Framework.zip文件。
  Windows Mobile Test Framework.Zip就是微软公司开发的Windows Mobile Test Framework软件自动化测试的框架。我们可以把它拷贝到其他目录,并且解压进行使用。
  四、 Windows Mobile Test Framework安装前的准备
  我们了解Windows Mobile Test Framework目的是为了应用。如何搭建Windows Mobile Test Framework的测试环境,这个问题就自然而然地出来了。
  在使用Windows Mobile Test Framework编写自动化测试脚本之前,我们需要安装以下几个软件:
  Visual Studio5.0 以上版本;
  Visual Studio SP1包, 如VS80sp1-KB926601-X86-ENU.exe;
  NETFCF框架,如NETCFSetupv2 sp2.msi;
  Activesync4.5
  需要特别说明的是,如果机器上没有安装以上之些工具,Windows Mobile6 SDK是安装不上的,请大家注意一下。
  五、 Windows Mobile Test Framework自动化测试的实现
  如何使用Windows Mobile Test Framework进行自动化测试,这个问题非常大,也是必然的一个问题。它非常难以回答,可是这是每个想使用Windows Mobile Test Framework进行自动化测试的朋友想要知道答案的问题。目前因我自身能力有限,只能回答一些比较粗浅,入门级别的问题,衷心地希望能够给徘徊在Windows Mobile Test Framework门口的朋友一点点的启示。
  1. Windows Mobile Test Framework的层次
  Windows Mobile Test Framework分六个层次,从上到下依次是TestCases and Suites, Area Libraries, UIAL, MobilityToolKit, DATK, Logging和Utiles.Net层次。以下这个图是Windows Mobile Test Framework帮助文档中自己带的一个层次结构图,相信大家会看得比较清楚。
  
  TestCases and Suites层和Area Libraries层的功能是由测试工程师自己来完成的;换句话说,如果使用Windows Mobile Test Framework编写自动化测试脚本,就是在这两个层进行的。
  UIAL层,主要是由微软提供的工具帮助生成脚本。
  MobilityToolKit层,DATK层以及Logging, Utils.Net层是Windows Mobile Test Framework自己提供的,这三层是Windows Mobile Test Framework的核心。
  2. Windows Mobile Test Framework测试环境搭建 
  在创建自动化测试工程之前,先搭建一下Windows Mobile Test Framework的测试环境,我们使用设备模拟器来进行讲述。
  第一步,运行ActiveSync软件,打开File菜单,选择Connection Settings菜单选项,进入Connection Settings窗口,把"Allow Connections to one of the following"的下拉列表框设置成"DMA"后,按"OK"按钮保存。请看下图:
  
  第二步, 运行Visual Studio,打开"Tools"菜单,选择"Device Emulator Manager"菜单项,找到"Windows Mobile 6 Professional Emulator",并且右键点击。如下图: 
  
  第三步,点击"Device Emulator Manager"中,刚才右键弹出菜单的Connect菜单选项,连接设备模拟器。如下图: 
  
  第四步,点击设备模拟器中的"Windows Mobile 6 Professional Emulator"项,右键菜单,选择"Cradle"菜单项,按照提示完成设备模拟器与PC机器的同步配置。配置完成之后,可以看到PC机器上会有一个手机模样的盘符,打开它,会看到跟手机目录结构一样的东西,请看下图: 
  
  第五步,进入Windows Mobile Test Framework解压之后所在的目录,如我把它解压到D盘的根目录下面,运行D:\Windows Mobile Test Framework下面的Command窗口,输入Set命令查看当前Windows Mobile Test Framework所运行的环境。如下图: 
  
  第六步,在刚才的Command Window中,输入命令setupdevice,把Windows Mobile Test Framework所要用到的dll等文件同步到刚才运行起来的设备模拟器中。请见下图: 
  
  经过上述六个步骤之后,Windows Mobile Test Framework的测试环境已经搭建完毕。说了这么多,也许大家觉得累了,等熟练了也就好了。
  3. Windows Mobile Test Framework创建自动化测试工程
  Windows Mobile Test Framework一个自动化测试工程里边包含三个项目:AbstractionLayer项目,AreaLibrary项目和Tests项目。这三个项目都由测试工程师自己创建的,Windows Mobile Test Framework本身是不提供的。刚开始使用Windows Mobile Test Framework的朋友,也许会有一个惯性思维,以为只要创建一个工程就够了,而Windows Mobile Test Framework必须包含这三个项目。
  也许有人会问,这三个项目有什么用?Windows Mobile Test Framework为什么要这么设计呢?
  在前面,我跟大家说过,Windows Mobile Test Framework包含六个层次,其中前三个层次TestCases and Suites, Area Libraries, UIAL是由用户自己创建的,它的作用就体现在这里。AbstractionLayer项目对应UIAL层, AreaLibrary项目对应Area Libraries层,Tests项目对应TestCases and Suites层。
  AbstractionLayer项目通过微软提供的工具抓取被测试软件的界面元素,如Button, Checkbox, TextBox, RadioBox等等,并且形成代码,让其与被测试软件界面元素对应。比如,手机软件中有回复短消息的功能,在回复短消息的界面有Reply按钮。如果我想写几句代码实现对Reply按钮的点击,Windows Mobile Test Framework如何知道这几句代码是点击Reply按钮,而不是Close按钮呢?这就需要AbstractionLayer层帮助,它提供了代码与软件界面元素的对应关系,如ReplyBtn代表回复消息窗口中的Reply按钮,CloseBtn代表回复消息窗口中的Close按钮。其中ReplyBtn, CloseBtn是怎么来的,请看下面说明。
  AreaLibrary项目是完全需要自动化测试工程师来完成的,它引用AbstractionLayer项目创建的类和方法,为Tests层创建公共的类和方法。如果说AbstractionLayer项目是被测试软件界面元素的集合,那么AreaLibrary可以说成是对被测试软件界面元素操作的集合。比如,在Tests层经常用到创建短消息的代码,我们可以在AreaLibrary项目中创建一个方法,如Public abstraction int TmailWriteSMS(string ToPersonal, string SubjectInfo)。有了这个方法之后,Tests层在每个测试案例中,可以使用这个方法了,不再需要在每个测试案例中,重复书写这样一段创建短消息的代码了。Tests只要控制每个测试案例的流程和检查点就可以了,让代码变得紧凑和精简。
  Tests项目,是测试套件和测试案例的集合。比如我需要测试手机的TMail软件的发送短消息功能,接收短消息功能。其中发送短消息功能有10个测试案例,接收短消息有15个测试案例。在Tests项目可以将发送短消息功能作为一个测试套件(SendMessengTestSuit),将接收短消息作为另外一个测试套件(RecieveMessengeTestSuit)。在SendMessengTestSuit中书写发送短消息功能中的10个测试案例;在RecieveMessengeTestSuit中书写接受短消息功能中的15个测试案例。 4. 使用Visual Studio创建AbstractionLayer
  第一步,启动Visual Studio5,打开"File"菜单中的"New"菜单项;
  第二步,在"New Project"窗口中,选择"Smart Device->Windows Mobile 6 Professional"作为项目类型;同时选择"Class Library"作为"Visual Studio installed templates";
  第三步,"Name"文本框中输入"PocketPC";"Location"文本框中输入自动化测试功能存放的地址。比如,"D:\Windows Mobile Test Framework\MyDemo\AbstractionLayer"作为自动化工程存放的目录,就可以把这个地址输入到"Location"文本框中;同时把"Create directory for solution"复选框取消选中。最后,点击"Ok"按钮保存。请看下图:
  
  第四步,修改Solution和Project的名称,让这些名称变得更加有意义,也更加方便记忆。同时选中Project后,鼠标右键弹出菜单,选择"Properties",进入属性中的"Application"窗口,修改"Assembly name"和"Default namespace"的名称,让它们的名称和Solution/Project的名称一样。 
  如:"Microsoft.MobileDevices.AbstractionLayer.TMailMMS .PocketPC",请看下图: 
  
  第五步,进入Project的属性窗口(如上图)之后,切换到Debug属性页面,在"Start Action"中,选中"Start external program",并且输入"\test\TuxNet.exe";再切换到"Devices"属性页面,把"Output file folder"文本框设置成"\test",接着选中"Sign the project output with this certificate",点击"Select Certificate…"按钮,导入证书"TEST USE ONLY-Sample Priveleged Root for Windows Mobile SDK"。如果没有这个证书,可以点击"Manage Certificates", 导入"C:\Program Files\Windows Mobile 6 SDK\Tools\Security\SDK Development Certificates\SamplePrivDeveloper.pfx"证书后再添加,保存所有设置。 
  经过上述几个步骤之后,您可以在刚才设定的目录下面,看到以下一些文件,说明AbstractionLayer的框架已经搭建好了,接下来要做的是往里边填充东西了。请看下图: 
  
  第六步,利用Windows Mobile Test Framework自带的工具抓取被测试软件界面元素,并生成代码。 
  启动应用程序,并切换到您想要抓取的窗口,如TMail中的NewMMS窗口; 
  在Windows Mobile Test Framework Command Windows中,把目录切换到项目所在的位置,如D:\Windows Mobile Test Framework\MyDemo,输入命令行rapistart \test\rcmlsnap命令抓取手机模拟器上面的屏幕; 
  使用ActiveSync工具,把刚才产生的两个文件拷贝到PC的D:\Windows Mobile Test Framework\MyDemo目录下面。如下图: 
  
  修改tmail.exeDialog文件为TMailMMSNewMMS.exeDialog(这是在做项目过程中的一个技巧。因为在做自动化测试过程中,一个软件的界面不仅是一个,会有其他的界面,为了方便记忆,或者以后软件界面的更新,把这个屏幕拷贝文件进行重新命名并且保存是非常明智的),使用Visual Studio打开这个TMailMMSNewMMS.exeDialog.rcml文件; 
  编辑TMailMMSNewMMS.exeDialog.rcml文件,在XML文件中把Page部分的APPNAME值设置成TMailMMSNewMMS, FRIENDLYNAME的值设置成TMailMMSNewMMS并且添DIRCETORY =? "\AbstractionLayer\PocketPC"; 将每个控件的名称与被测试软件的界面的元素名称对应起来,方便记忆。设置完毕之后保存,请看下图: 
  
  在Windows Mobile Test Framework的命令行窗口输入"rctocs -dll TMail.exe -rcml .  o ."命令。执行完这个命令行之后,在 
  D:\WindowsMobileTestFramework\MyDemo\AbstractionLa yer\PocketPC下面,会看到新增加了两个文件,IdnHolders.cs和TMailMMSNewMMS.cs,请见下图: 
  
  在Windows Mobile Test Framework Command 窗口把目录切换到D:\WindowsMobileTestFramework\MyDemo\AbstractionLa yer\PocketPC, 输入命令行? 
  UIALAppGen? .\
  Microsoft.MobileDevices.AbstractionLayer.TMailMMS. PocketPC.cs TMailMMSNewMMSDialog
  执行完这条命令之后,在MyDemo\AbstractionLayer\PocketPC下面会看到新添加了两个文件,一个是AssemblyInfo.cs,另外一个是Microsoft.MobileDevices.AbstractionLayer.TMailMMS. PocketPC.cs。请看下图: 
  
  第七步,将刚才新产生的AssemblyInfo.cs移动到Properties目录下面,覆盖原来的AssemblyInfo.cs文件。 
  第八步,修改 
  Microsoft.MobileDevices.AbstractionLayer.TMailMMS. PocketPC.cs文件,把该文件中的所有Harness,修改成TuxNet;注销这两句代码,并换成下面一句代码 
  //public static readonly Mtk.IdnString TMailMMSNewMMSIdn= new Mtk.IdnString ("outres.dll", "unknown");
  //public static readonly Mtk.IdnString TMailMMSNewMMSMainIdn = new Mtk.IdnString ("outres.dll", "unknown"); public static readonly TMailMMSNewMMSDialogIdnHolder TMailMMSIdns = new TMailMMSNewMMSDialogIdnHolder ();
  因为我们不需要直接进入到创建短消息窗口,我们也可以把如下方法中的一句代码给注销了。
  public static void Launch ()
  {
  //Mtk.PocketPC.ApplicationManager.LaunchApplicatio n (TMailMMSNewMMSIdn);
  }
  第九步,创建一个CommandLine.txt文件,输入-assembly Microsoft.MobileDevices.AbstractionLayer.TMailMMS. PocketPC.dll并且保存;
  第十步,把刚才创建的文件都加载到这个项目中来;
  CommandLine.txt
  IdnHolders.cs
  TMailMMSNewMMS.cs
  Microsoft.MobileDevices.AbstractionLayer.TMailMMS. PocketPC.CS
  第十一步,从Windows Mobile Test Framework中DeviceFiles目录中加载以下几个DLL到这个项目的References里:
  Microsoft.MobileDevices.MobilityToolKit.dll 
  Microsoft.MobileDevices.TuxNet.Core.dll 
  Microsoft.MobileDevices.Utils.dll 
  Microsoft.WindowsCE.DATK.dll 
  Microsoft.WindowsCE.Logging.dll 
  第十二步,点击Visual Studio中的Build菜单Build Solution菜单项,编译这个工程。如果这个工程没有出现任何错误,会在项目所在目录的Debug目录中生成一个DLL,该DLL可以被AreaLibrary层调用。结果请看下图:
  
  经过十二步的操作,AbstractionLayer项目终于创建完毕。因为在实际的测试过程中,我们需要获取被测软件的很多界面,可以重复第六步操作来实现测试的需求。 
  5. 使用Visual Studio创建AreaLayer
  与创建AbstractionLayer相比,创建AreaLayer简单了很多很多,其创建过程与AbstractionLayer相仿。
  第一步,创建一个新的Visual Studio C# Smart Device项目:
  把项目类型选择成"Windows Mobile 6 Professional";
  使用"Class Library"模板;
  把项目的名称写成AreaLibrary;
  把项目的位置设置成D:\Windows Mobile Test Framework\MyDemo;
  取消选择"Create directory for solution"复选框;
  最后点击"Ok"按钮保存;
  重新命名Project和Solution以及Project属性页面中的Assembly Name和Default Spacename,使它们一致并且更加的有意义,如Microsoft.MobileDevices.AreaLibrary.TMailMMS
  象AbstractionLayer项目一样,设置Project属性页面中的Device页面和Debug页面;
  设置完成之后保存。
  第二步,生成 Area Library skeleton code:
  打开Windows Mobile Test Framework命令行窗口,将目录切换到MyDemo\AreaLibrary;
  输入命令AreaGen  p TMailMMS,生成以下六个文件:
  AreaLibraryManager.cs 
  AssemblyInfo.cs 
  GeneralAbstract.cs 
  GeneralPPC.cs 
  MainDialogAbstract.cs 
  MainDialogPPC.cs 
  第三步,把AreaLibraryManager.cs,  AssemblyInfo.cs, GeneralAbstract.cs, GerneralPPC.cs, MainDialogAbstract.cs和MainDialogPPC.cs加载到项目中来;
  第四步,从Windows Mobile Test Framework中DeviceFiles目录中加载以下几个DLL到这个项目的References里:
  Microsoft.MobileDevices.MobilityToolKit.dll 
  Microsoft.MobileDevices.Utils.dll 
  Microsoft.WindowsCE.DATK.dll 
  Microsoft.WindowsCE.Logging.dll 
  第五步,从
  %_WMTFROOT%\MyDemo\AbstractionLayer\PocketPC\bin\D ebug 
  目录加载 
  Microsoft.MobileDevices.AbstractionLayer.TMailMMS. PocketPC.dll ;
  第六步,修改GeneralAbstract.cs文件,注销所有这样的语句deviceInstance = new GeneralSmartPhone();
  第七步,在MainDialogAbstract.cs文件中声明函数,如下图:
  
  第八步,在MainDialogPPC.cs文件中书写函数主体,如下表: 
  
  
  6. 使用Visual Studio创建Test层
  第一步,在%_WMTFROOT%\MyDemo目录下面创建一个Tests文件夹;
  第二步,从%_WMTFROOT%\TuxNetSkeleton目录下面,拷贝所有的文件到MyDemo/Tests下面;
  第三步,双击TuxNetSkeleton.csproj,在Visual Studio中打开该项目,如果遇到错误,请点击Ok按钮继续;
  第四步,在Properties window窗口中,将"File Path"项的值设置成"C:\Program Files\Windows Mobile 6 Test Framework\Common\TuxNet\exe\TuxNet.csproj";
  第五步,在Solution Explorer窗口,右键点击TuxNet项目,选择"Reload"重新加载该项目;
  第六步,重新命名该Project,Solution,Assembly Name, Default Namespce名称为Microsoft.MobileDevices.Tests.TMailMMS; 项目属性页面中的Debug,Device设置和AbstractionLayer和AreaLibrary的设置一样,请参照它们完成设置;
  第七步,在Vusial Studio Solution Exporler中,将SkeletonTests.cs重新命名为TMailMMSTests.cs;同时将TMailMMSTests.cs中出现的TuxNetSkeletonTests修改成CalViewTests;
  第八步,从%_WMTFROOT%\DeviceFiles目录加载
  Microsoft.MobileDevices.MobilityToolKit.dll
  Microsoft.MobileDevices.Utils.dll
  Microsoft.WindowsCE.Logging.dll
  Microsoft.MobileDevices.TuxNet.Core.dll
  Microsoft.MobileDevices.MDUtils.dll 
  第九步,从%_WMTFROOT%\MyDemo\AreaLibrary\bin\Debug 
  目录加载DLL文件:
  Microsoft.MobileDevices.AreaLibrary.TMailMMS.dll ;
  第十步,在CalViewTests.cs加一句代码,引用
  AreaLibraryManager;
  usingCalViewAreaLib= Microsoft.MobileDevices.AreaLibrary.TMailMMS.AreaL ibraryManager;
  第十一步,在该工程中,新建一个CommandLine.txt,跟AbstractionLayer类似,在此文件中输入
  -assembly Microsoft.MobileDevices.Tests.CalView.dll -type BVT并且保存。
  第十二步,创建TestSuits和TestCases,如下图:
  
  
  第十三步,在Visual Studio中Build Solution,运行此工程,等运行结束之后,使用ActiveSync工具把设备模拟器\Test目录下面的Result. log同步到PC机器上面,可以查看结果。
  六、 总结
  这次先说到这里,希望它能够给大家带来一点点的帮助。在使用Windows Mobile Test Framework实现自动化测试的路上,我也跟大家一样,是一位初试者,希望在以后的日子里能够跟大家一起分享和进步。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics