使用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个条件:

  1. 安装最新版本的WACK工具,目前版本3.3 包含在Windows SDK8.1中,同时也集成在Visual Studio 2013中
  2. 使用Windows Live ID 以使得测试机器获取有效的开发人员许可证,以安装运行Visual Studio创建的Windows Store App
  3. 待测试应用必须是发行版本的,且位于该测试机器上,可以通过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提交。