Windows Phone App 的本地自动测试
在上一篇blog 使用WACK 验证Windows Store App中,我们了解到为了加速Windows Store App的上架过程,强烈建议开发者使用Windows App Cert Kit-即WACK工具对APP进行测试验证,确保通过WACK测试之后再进行APP提交,因为Store对APP的审核过程也包含了WACK的测试过程。那么对于Windows Phone App,是否也遵循类似的审核逻辑呢?答案是肯定的,Windows Phone App的上架过程与Windows Store App的上架过程类似,只不过自动测试工具根据Windows Phone App的版本有所差别,本文将针对Windows Phone App的本地测试验证进行总结介绍。
我们从一个应用实例来看该测试过程的意义:有开发者发现对于Windows Phone OS 7.1的APP, 出于对用户安全隐私的考虑(如一些银行类的应用),其并没有在WMAppManifest.xml文件中声明使用ID_CAP_MEDIALIB(应用对媒体库的访问权限控制),但是当APP发布到Store后,App require 列表中却添加了Photo, music and video libraries内容,导致APP用户抱怨其安全隐患。这是为什么呢?原因在于Store在审核APP时,会使用一个工具对APP进行静态分析并自动添加所需要的Capabilities, 即若APP包含了使用媒体库的组件(如使用Microsoft.Xna.Framework.Media.MediaPlayer),那么ID_CAP_MEDIALIB会被自动添加。那么这个分析工具是什么呢?它即是Store Test Kit。这个工具集成在Windows Phone SDK8.0中,开发者可以使用Store Test Kit对使用某API的AP进行测试以判定其是否是依赖于某个capability。例如需要判别Microsoft.Xna.Framework.Media.MediaPlayer 类是否使用ID_CAP_MEDIALIB,使用Store Test Kit测试发现MediaPlayer 需要ID_CAP_MEDIALIB,简要过程为(基于Visual Studio 2012):
1) 创建一个新的基于Windows Phone 7.1 OS的Project
2) 添加code, code中包含调用相应的API
3) “Release”编译APP
4) 运行Store Test Kit(右击该project,选择“Open Store Test Kit”即可)
5) 在Automated Tests 标签下,点击 “Run Tests” 按钮进行测试,发现需要用到ID_CAP_MEDIALIB
针对这种场景,可以使用其他的类做替代,如若是需要播放音乐(playing a sound),可以使用Soundeffect类,使用Store Test Kit发现不要求ID_CAP_MEDIALIB;或者若是需要添加背景音乐,可以参考 sample Background Audio Player Sample,在文档中How to play background audio for Windows Phone有所提及,Store Test Kit测试发现同样不要求ID_CAP_MEDIALIB。
以上仅以一个简单的实例说明使用Store Test Kit进行Capability的需求判别,当然该工具还包含许多其他内容的测试,可以详细参见MSDN 文档。该工具对Windows Phone OS 7.1 及Windows Phone 8.0 OS的APP进行测试,对于Windows Phone 8.1 OS的APP, 我们使用WACK工具。
使用最新版本的WACK(3.3)对Windows Phone 8.1 App进行测试,需要首先在Visual Studio 2013中创建Package,然后运行最新版本的Windows Cert App Kit, 过程大致与使用WACK 验证Windows Store App描述的UI运行WACK 对Windows Store App的审核过程类似,选择Validate Windows Phone App,在后续弹出的APP选择框中从文件系统对应Windows Phone 8.1 App package 文件,WACK对Windows Phone 的测试内容大致包含10个测试项,可以详见MSDN 文档。
除了使用UI方式,我们也可以通过命令行的方式,同使用WACK 验证Windows Store App介绍的命令行方式大致相同,同样使用C:\Program Files (x86)\Windows Kits\8.1\App Certification Kit目录下的appcert.exe工具,只不过运行的命令只能使用package的目录方式。过程如下:
1) 以Administrator权限运行cmd.exe
2) 运行如下命令:
cd C:\Program Files (x86)\Windows Kits\8.1\App Certification Kit
appcert.exereset
appcert.exe test -apptype windowsphoneapp -appxpackagepath [path\xxx.appx] -reportoutputpath [report file name ]
例如:appcert test -apptype windowsphoneapp -appxpackagepath C:\Input\MyApp.appx -reportoutputpath c:\Output\MyReport.xml
Demo演示截图如下:
本文简要总结对Windows Phone App的本地验证,对于Windows Phone OS 7.1/8.0的APP,使用Windows Phone SDK8.0包含的Store Test Kit, 对于Windows Phone OS8.1的APP,则使用WACK工具进行测试,可以采用UI方式,也可以采用命令行方式,根据测试结果进行APP project 的修复,确保APP通过Store Test Kit 或WACK 测试,再进行APP提交,以加快APP的成功发布过程。