使用WACK 验证Windows Store App
对于开发者的最终目的而言,无疑是所开发的APP得以成功上架(此处我们排除企业内部部署的应用),我们简要了解一下Windows Store App的上架过程:
参照上图中箭头方向:APP 提交以前,开发者需要注册开发者账号,有了该账号,才能登录到APP的管理端口-Windows Store App Dashboard或者Windows Phone App Dashboard(开发者仪表盘),进行APP提交及相关管理;APP开发完成后,登录到相应Dashboard提交APP到Store进行审核。审核主要包括WACK(Windows App Certification Kit)的自动技术审核及人工审核,该过程通常需要2到5个工昨日,测试人员会将测试报告发布到开发者的Dashboard,APP成功通过一系列审核后即会发布到Store;若审核失败,开发者必须按照测试报告指出的问题进行修复,再进行APP提交、审核,等2-5天…如此循环。
可见该过程还是不短的,那么有没有办法缩短此过程呢?答案是肯定的。我们可以看到正式的Store 审核过程包含WACK技术测试的过程,成功通过WACK测试后的应用才能继续被人工审核,WACK的测试可以在本地完成,所以为了保证应用能够快速成功的上架,在提交APP到Store 之前,强烈建议大家使用WACK 工具进行本地自动测试。
Windows Store App开发完毕后,即可在测试机器使用最新版本的WACK工具对该APP进行测试,要求测试机器必须满足3个条件:
- 安装最新版本的WACK工具,目前版本3.3 包含在Windows SDK8.1中,同时也集成在Visual Studio 2013中
- 使用Windows Live ID 以使得测试机器获取有效的开发人员许可证,以安装运行Visual Studio创建的Windows Store App
- 待测试应用必须是发行版本的,且位于该测试机器上,可以通过Visual Studio直接部署安装, 也可以使用PowerShell 命令进行旁加载安装。当然若是使用后文提及的命令行方式运行WACK测试,也可以不用直接安装,把安装包拷贝到测试机器即可
尽量在一个比较干净的环境下进行WACK测试,即尽量不要安装第三方的防火墙、杀毒软件,且在测试过程,避免与测试机器进行用户交互,否则可能影响测试结果。可以通过UI方式运行WACK测试,也可以通过命令行方式进行WACK测试,这两种方式简介如下。
1. WACK UI 测试Windows Store App
UI方式进行WACK的测试过程简单总结如下:
1) 运行Windows App Cert Kit,界面如下截图所示。选择 Validate Windows Store App (留意Validate Windows Phone App选项,可以测试Windows Phone 8.1 App ) , WACK会搜集系统信息列举出系统安装的所有Windows Store App, 若您的应用没在列表中,则可能是没有安装该应用
2) 当选定需要验证的应用后,测试项选择对话框列举出13个测试项,每一个测试项的详细信息见MSDN文档介绍,也可单独针对某一项进行测试
3) 测试过程可能耗时 10到50分钟, 取决于应用的大小及复杂度,会不断地重启app ,建议不要与测试测试机器交互
4) 测试结束后,会弹出对话框要求测试者选择测试结果保存路径,并最终给予测试结果 (Pass, Pass with warnings, Fail),如下截图 。
对于每一个测试项,APP可能会pass或者fail,每个测试项都会解释其测试内容及 fail的可能原因或详细信息链接。如下截图所示,使用了缺省的图像会导致失败,及debug build也会导致失败。
根据测试报告查看并解决问题,所有全面的测试过程信息位于目录:C:\Users\[useraccount]\AppData\Local\Microsoft\AppCertKit\
2. 命令行方式运行WACK测试Windows Store App
使用UI的方式操作简单方便,但是测试者无法知道测试进程,为了得知详细的测试过程,我们还可以通过命令行的方式进行WACK测试。
使用的工具是appcert.exe , 位于目录C:\Program Files (x86)\Windows Kits\8.1\App Certification Kit,可以通过如下2种命令行方式完成WACK测试。
1) 基于Windows Store App的package full name(包含开发者、build、app name等信息),以administrator 权限运行命令行工具,运行如下命令:
a) cd C:\Program Files (x86)\Windows Kits\8.1\App Certification Kit
b) appcert.exereset
该命令会清空上一次运行WACK工具时的系统痕迹,如清除保存在C:\Users\jenli\AppData\Local\Microsoft\AppCertKit\目录下的信息
c) appcert.exe test -apptype windowsstoreapp -packagefullname [package full name] -reportoutputpath [report file name]
此命令中package full name的值可以在VS project 中通过Windows.ApplicationModel.Package.Current.Id.FullName 属性获取
report file name-指定文件保存目录及后缀为xml的文件名(如 D:\WACKRst.xml)
使用以上命令进行测试的过程如下截图所示:
2) 基于Windows Store App Package 目录
前文提及进行WACK测试的第三个条件是Windows Store App Package必须位于测试机上,除了安装在机器上,我们还可以对没有安装的package进行测试。仍然使用位于C:\Program Files (x86)\Windows Kits\8.1\App Certification Kit目录下的工具-appcert.exe , 以administrator 权限运行命令行工具,再运行如下命令:
a) cd C:\Program Files (x86)\Windows Kits\8.1\App Certification Kit
b) appcert.exereset
c) appcert.exe test -apptype windowsstoreapp -appxpackagepath [path\xxx.appx] -reportoutputpath [report file name ]
此套命令demo如下截图所示
前文提及WACK总共有13个大测试项,UI运行WACK时可以单独指定某一项进行测试,那么在命令行方式中如何完成相同的目的呢?通过如下命令指定某个测试id即可:
appcert.exereset
appcert.exe test -apptype windowsstoreapp -testid [21,47,38] -packagefullname [package full name] -reportoutputpath [report file name]
那么该命令中的testid从何而来呢?该testid需要在C:\Program Files (x86)\Windows Kits\8.1\App Certification Kit\ 目录下的configuration.xml文件中查找,如下截图所示,在<Task>标签内部,INTERNAL_NAME属性表示该项测试内容,INDEX属性值即对应测试所需的testid值
本文简要讲解了Windows Store App的上架审核过程,为了缩短App成功上架的时间,强烈建议开发者使用Windows App Certification Kit对App进行本地测试,可以采用UI方式,也可以采用命令行的方式,再根据测试结果进行修复,确保APP成功通过WACK的测试后再进行APP提交。