当我们在使用 Windows 8 的操作系统平台上不断创新的同时,我们还增强了 Visual Studio 中可用的工具集,用来提高您测试 Windows 8 应用的工作效率。通过深思熟虑的设计和测试可以确保您的应用在这一全新的现代操作系统环境中的一流品质,而这将有助于提高您的应用的成功机率。在以前的博文测试 Windows 8 中的 Metro 风格应用中,我们重点介绍了构建高质量 Windows 8 应用所需要考虑到的一些关键环节。在本博文中,我们将探索 Visual Studio 2012 中的一些功能,它们将有效地简化您应用的测试和验证过程。

我的应用在 Windows 8 设备中的外观如何?

在应用的成功取决于其自身向客户所提供的价值的同时,遵循 Windows 8 设计指南来提供华丽外观的应用才能令最终用户满意。为了减小您使用物理设备来验证应用的用户体验的依赖性,Visual Studio 2012 提供了模拟器,从而您无需在开发期间始终连接到平板设备。该模拟器还可以减小您对使用各种设备外形的物理设备进行测试的需求。您的测试将惠及以下方面,而模拟器将允许您以便捷的方式来验证应用的外观,这一切只需单击几次鼠标即可完成:

显示 Windows 8 [Start](开始)屏幕的 Visual Studio 模拟器图 1. 显示 Windows 8 [Start](开始)屏幕的 Visual Studio 模拟器。

Windows 8 应用可运行于多种具有不同外形的设备。为帮助您以不同的屏幕尺寸和分辨率来测试您的应用的行为,Visual Studio 模拟器提供了涵盖从最低支持分辨率到 27” 台式计算机显示器的 7 种最常见的这两种因素的组合。图 1 显示了以 1366x768 的默认分辨率和 10.6” 的屏幕尺寸显示 Windows 8 [Start](开始)屏幕的示例。您首先要验证的内容之一就是在较低分辨率下您的应用布局未出现被截断或垂直或水平方向未对齐的情况。另一方面,您也不希望应用在以高分辨率显示时留有大量的空白空间。如果您的应用布局超出了屏幕范围,则应适当地显示滚动条(如果用户正使用鼠标与应用进行交互)。这些内容均为验证类型示例,您可以通过在模拟器中动态更改模拟分辨率并在视觉上检查应用的行为来轻松完成验证。

如果您的应用使用固定布局,则您需要测试是否可以正确缩放以填充大尺寸的屏幕,并且需要确保所有可视元素也可以按比例缩放。如果您的应用具有自适应布局,则在屏幕尺寸或分辨率发生变化时,模拟器将允许您快速验证是否应用的可视元素将按您的要求动态重新排列。

模拟器可以旋转和翻转,从而可以了解当用户更改屏幕方向时您应用的行为。如果您要测试这种应用以查看其是否已针对纵向模式和横向模式正确优化,则这简直是雪中送炭。模拟器并没有消除在物理设备上全面验证应用的需要,这是因为它无法模拟加速计敏感的功能(例如,倾斜),但可以在应用对显示设备的方向变化进行响应时,避免可能出现的潜在问题,从而节省了您的时间。

我的应用如何对 Windows 8 设备中触控做出响应?

模拟器允许您在开发计算机上使用鼠标或模拟触控来与应用进行交互。如果您没有支持触控功能的设备来进行测试,都后者特别有用。轻扫、收缩以缩放和旋转手势均受支持。

您通常可以在 Visual Studio 中通过调试操作直接在模拟器中启动应用。在您的应用启运之后,模拟器将一直保持运行状态,这将使您也可以在调试上下文之外实践应用。例如,您可以在用户点击应用的磁贴时看到激活行为,或者当用户从屏幕顶部向屏幕底部轻扫时看到终止行为。您可以利用模拟器所提供的触控手势来执行这些操作和与测试和验证有关的所有触控操作。测试 Windows 8 中的 Metro 风格应用中包含与触控有关的测试考虑因素的详细列表。请参阅本博文中的“触控”部分。如果您要了解有关 Visual Studio 模拟器的更多信息(例如,如何使用触控模拟),请参阅在模拟器中运行 Windows Metro 风格应用

对您的 Windows 8 应用执行单元测试

对代码执行单元测试的功能对于任何开发周期来说都是一个重要方面。有多种版本的 Visual Studio 提供了单元测试支持。在 Visual Studio 2012 中,我们使用全新的单元测试浏览器简化了用户体验,并创建了独立于底层单元测试框架的可扩展测试运行程序。现在,您可以插入您最常用的单元测试框架(例如,NUnit、XUnit 或 MbUnit),或者您可以继续使用 MSTest

Visual Studio 2012 中的新项目对话框  图 2. Visual Studio 2012 中的新项目对话框显示了使用 C# 编写的应用的
单元测试库项目的模板。

对于使用 C#、VB.net 或 C++ 编写的 Windows 8 应用,Visual Studio 目前提供了遵循与用来开发桌面应用相同的工作流程的单元测试库项目(参见图 2)。您将青睐于各种改进和许多所熟悉的相同功能。在系统内部,单元测试支持可以负责在应用容器模型中运行测试的工作,从而消除了所有的复杂性。单元测试项目具有其自有的 appxmanifest 文件。这一点很有帮助,因为在许多情况下(例如,测试处理定位服务或 Internet 访问的代码时),为了使测试运行,您需要编辑清单文件来指定符合应用的要求的功能,如图 3 中所示。或者,如果正在测试的代码路径部分不需要功能时,您可以在独立的单元测试项目中对此类测试用例进行分组,并刻意从中排除功能,以便改进代码的模块化。

包清单图 3. 在清单设计工具中打开的单元测试项目的 Package.appxmanifest 文件。 

为了信守我们对质量的承诺,我们在 Visual Studio 2012 的所有 SKU 中对单元测试进行了改进并提供了新的功能,包括面向 Windows 8 的 Visual Studio 2012 Express。要获得更多详细信息或了解如何有效地对您的 Windows 8 应用执行单元测试,请参阅在 Windows Metro 风格的应用程序上创建并运行单元测试和 //Build 大会的该单元测试讨论

对您的 Windows 8 应用执行探索测试

Windows 8 应用的设计旨在为消费者和企业提供令人激动的使用体验。如果您在企业环境中使用一个应用,并已习惯于一种更为结构化的开发和测试过程,则 Visual Studio 2012 提供了手动测试工具,即 Microsoft 测试管理器,将它与 Visual Studio 的远程工具结合使用可允许您在所有类型的 Windows 8 设备上对应用的功能进行探索测试和结构化的手动测试。Microsoft 测试管理器是 Visual Studio PremiumUltimate SKUTest Professional SKU 的一部分。除了可通过与 TFS 无缝集成来实现轻松 Bug 归档和测试用例管理之外,Visual Studio 2012 中的手动测试工具还可以简化在远程设备上测试应用的过程。在测试过程中,当您发现您的应用中的 Bug 时,工具可以从远程设备上捕获屏幕截图、操作日志和事件日志。这实现了在您的主工作站和连接设备之间的双向通信,从而可指导您完成向目标测试设备部署应用包、在设备上获取开发人员许可证和执行测试等步骤。

借助 TFS 集成,手动测试工具将允许您在团队环境下实现测试和开发应用之间的持续工作流程。例如,在探索期间捕获的信息将有助于重现 Bug,从而使您可以更好地了解其本质。当包含 Bug 修复和功能增强的新应用包可用时,用户可以轻松地进行选取并将它部署到相同的 Windows 8 测试设备中,以在手动测试工具中进行进一步验证。

有关更多信息,请参阅 Visual Studio 11 Beta:手动测试 Windows Metro 风格应用手动测试 Windows 8 Metro 风格应用提供了详细的介绍。

总结

Windows 8 是令人兴奋的开发人员和用户平台。我们希望本博文中对 Visual Studio 2012 中所提供工具的介绍将对您有所帮助,并且您可以立即开始使用它来测试您正使用的 Windows 8 应用。我们期待着早日收到您的反馈以帮助我们了解如何不断改进应用的测试和验证过程。请不要忘记对本博文发表评论以便与我们和整个社区分享技巧、创意和在测试应用方面的个人体验。

--Visual Studio 首席测试经理 Rui Sun

--Visual Studio 软件开发测试工程师 Andre Hamilton

在此特别感谢 Ashwin Needamangala、Mete Goktepe、Jake Sabulsky、Jason Olson、Art Becker、Raul Gonzalez Tovar、Peter Provost、Mathew Aniyan 和 Anutthara Bharadwaj,感谢他们为本文的撰写提供支持。