首页 > 代码库 > Windows Phone 8 测试自动化初探 (利用Coded UI)

Windows Phone 8 测试自动化初探 (利用Coded UI)

前言

Windows Phone是个相对新的的平台,目前应用的数量少,相同应用的功能实现度也不如iOS和Android. 那么在Windows Phone上面的自动化测试的解决方案有什么?

目前就msdn来看,SeeTest是微软推荐的测试方案。

大家知道微软在VS里面集成了自动化测试工具Coded UI,那么Coded UI除了能测Windows, Web应用,它能不能支持Windows Phone应用呢?


利用Coded UI做Win Phone自动化的过程


利用Coded UI是可以做Windows Phone的自动化测试的,但是支持的不是很好,大概说一下流程

1. 首先需要一个真的Windows Phone或Windows Phone模拟器

(Windows Phone模拟器需要电脑支持一些硬件需求,貌似是基于Hyper-V技术,不要指望在虚拟机(vSphere, XenServer)里面能模拟,不过VMware workstation好像是可以的)


2. 需要VS 2013 + update 2,装的时候注意要选Windows Phone 8的SDK


3. 装好了之后,建一个Coded UI测试工程


4. 编写测试的代码

    我写了一个很小的Windows Phone程序,这个程序的UI是基于XamL的。

     

    下面就谈谈几个步骤


     a. 启动应用

这一步就非常巧妙,和Android和iOS启动应用完全不同,启动应用需要得到应用的AutomationID,然后启动。

打开Coded UI的录制界面,然后把鼠标移动到被测Windows Phone应用后,键盘使用快捷键 Ctrl+Shift+I,就可以获得当前控件的AutomationID 

(注意下图中虚化的那个窗口)

使用下面的Code打开特定应用

        

String Myapp = "{F0915983-7002-4079-A128-81323EFAA57A}:App:f0915983-7002-4079-a128-81323efaa57a_rkdnfethpsswy!App";
            
XamlWindow.Launch(Myapp);

     b. 识别控件

Coded UI不支持Windows Phone应用的录制,这点是比较头疼的,目前我采用的办法是这样。

     b.1  按照 <a.启动应用> 的办法,利用快捷键Ctrl+Shift+I查看控件的属性。

     b.2   对控件加入一个Assertion

    

    b.3 加入了Assertion之后,Coded UI就会把这个控件识别下来,在Coded UI的编辑界面就可以看到这个控件,(注意,如果你只是识别这个控件而不加Assertion,控件是             不会记录下来的)


    然后就简单了,先选择控件,然后按快捷键Ctrl + C,控件的代码就拷贝下来了(例如 UIMap.UIWpappWindow.UIAEdit),下面就要看怎么操纵了

    

     c. 操纵控件

     目前研究出两个方法,一个是点击,另外一个是输入

c.1 点击 

利用以下代码,括号里面是控件的例子

Gesture.Tap(UIMap.UIWpappWindow.UIPlusButton);

c.2  输入

利用一下的代码,控件.Text = "赋值"

UIMap.UIWpappWindow.UIBEdit.Text = "200";

类Microsoft.VisualStudio.TestTools.UITesting.Gesture,里面还有其他的方法,大家可以仔细揣摩。


     d. 检查结果

    这个和Coded UI的传统操作差不多,就是利用Assertion,这里就不多说了


     e. 其他主意事项

  e.1 目前Coded UI只支持基于Xaml的Win Phone应用,如果你看到了以下的截图,请不要大惊小怪

个人认为估计目前图像识别才是扩展Win Phone自动化测试的唯一途径。



小结

利用Coded UI做Win Phone应用的自动化,目前并不是很成熟,它也缺乏iOS和Android的开源界的鼎力支持,其实也算尴尬。个人还是支持Win Phone应用的发展的,希望其以后能越来越强大,让测试人员在移动应用测试上有更多职业机会。