尽早进行软件测试可以验证设计方案
“尽早且频繁地进行测试”是敏捷软件工程中的一种策略,它已经发展成为所有软件开发领域的强制要求。对于那些开发跨平台应用程序的开发者来说,尽早进行软件测试尤其重要,因为他们需要支持具有不同物理特性和操作系统功能的移动设备。
MobileTogether 包含的功能,可以在开发过程中尽早地进行软件测试,而无需针对每个移动平台进行耗时的编译、部署和调试过程。Altova 网站介绍了 MobileTogether 的 [automated-testing-for-mobile-apps|模拟器 功能,该功能用于尽早进行软件测试。我们还撰写了博客文章,介绍了能够记录和重复执行特定操作集合的 [测试用例]] 功能。
这篇文章介绍了“客户端试运行”功能。该功能内置于 MobileTogether Designer 中,旨在让开发者能够立即检查应用程序的设计,并在任何支持的移动设备或平台上验证其逻辑和功能,包括 Android、iOS、Windows 桌面和 Windows Phone。

在客户环境中进行试用,对于早期软件测试,特别是对于以下类型的应用程序,尤其有用:
- 利用Windows平台上的设计工具中无法使用的移动设备功能,例如短信发送
- 使用在不同操作系统上表现略有差异的操作,例如,当客户端的默认地图应用程序被打开时,执行“显示地理位置”操作
- 需要在全新的手机型号上进行测试,而该手机的屏幕尺寸可能与设计预览设备不一致
试运行对客户端的要求非常简单:用于测试的移动设备需要安装 MobileTogether 客户端应用程序,移动设备和 MobileTogether 设计工作站需要连接到同一个网络,并且需要在移动设备上将设计工作站的网络地址配置为 MobileTogether 服务器。
一旦客户端设备准备就绪,开发者可以通过“设计器项目”菜单或便捷的工具栏,启动客户端的试运行

让我们来看一个正在开发的应用,该应用使用了GPS功能,而开发者选择了iPhone 6 Plus作为预览设备。
在开发过程中,最早测试应用程序的机会是将其运行在MobileTogether 模拟器中,该模拟器是 MobileTogether Designer 的一项功能,并且可以在任何时候使用。
模拟器主窗口会显示应用程序在所选预览设备上的外观。开发者可以更改设备选择,以查看应用程序在各种iOS、Android、Windows和其他设备上的用户界面效果,或者在模拟过程中随时切换纵向和横向显示模式。
模拟器还会根据应用程序的运行状态,实时更新“页面资源”数据树中的变化。设计器中的“消息”窗口会显示应用程序执行过程中的详细、逐步骤报告,包括客户端应用程序与服务器之间的消息。在模拟过程中,所有需要用户交互的控件都将被启用。
以下是该应用程序在模拟器中运行时的界面截图:

出现两个问题:首先,模拟器无法报告真实的GPS坐标。它使用一个数据文件来模拟移动设备的运动以及更新的GPS坐标。其次,应用程序中的“地图视图”按钮会在运行设计器的Windows工作站上打开Bing地图,而它应该默认打开Apple地图,因为Apple地图是iPhone上的默认地图应用程序。
我们可以使用“客户端试运行”功能,将应用程序在真实的移动设备上运行,以提供真正的GPS功能,并验证“地图视图”按钮。对于第一次测试,我们将使用一部安卓手机。点击“客户端试运行”按钮会在设计器中打开一个新的窗口:

此时,Designer应用程序同时也在作为MobileTogether服务器运行。当客户端设备启动该应用程序时,内部消息窗口会打开。
开发者在设计器对话框中点击“是”以继续,应用程序在客户端设备上运行。 随即,我们发现了一个意想不到的问题:默认的文本大小非常小:

我们可以简单地点击“Abc+”按钮来增大文本大小,并要求最终用户也这样做,但这将是一种笨拙且不够友好的解决方案。 进一步研究后,我们可以使用设计器中的“客户端试运行”窗口,来查看应用程序运行时的数据结构:

“textSize”元素位于持久数据树中,它存储一个值,用于设置文本标签和按钮的字体大小,单位为绝对像素。在设计时,我们选择了20作为默认值,这在iPhone 6 Plus上看起来还可以,但对于当前的设备,这个值并不适用。
我们可以轻松地将默认文本大小从一个固定值更改为基于每个客户端设备独特像素尺寸的函数。然后,我们可以立即进行新的测试。
MobileTogether 提供了全局变量,以便开发者在应用程序运行时,访问任何终端用户设备的各种特性。设计器中的“全局变量”窗口会显示所选预览设备的相应值。以下是 iPhone 6 Plus 设备的示例值截图:

与其为 textSize 元素设置一个默认值,比如 20 像素,我们可以创建一个基于全局变量 MT_DeviceHeight 的函数。20 除以 736 大约是 2.7%,因此我们将使用这个值来创建一个 XPath 函数,以便根据任何客户端设备来设置 textSize 的初始值

现在,我们可以使用安卓手机对客户端进行另一次测试,以检查结果。

上面的“试运行”窗口显示了新计算出的默认文本大小值,以下是手机屏幕的截图:

默认情况下,根据设备屏幕高度自动计算的文本大小更加合理,也更方便用户使用。此外,用户仍然可以使用“Abc-”和“Abc+”按钮对文本大小进行微调,因为这两个按钮只是分别减少或增加文本大小的值。
现在我们可以回到最初的挑战,即验证应用程序中“地图视图”按钮的功能是否正常。以下是应用程序页面和对应安卓手机上“地图视图”功能的截图:


以下是在iPhone上拍摄的相同场景:


以上四张截图均是在客户端进行试运行时截取的。每个平台上地图的显示方式取决于该地图应用程序的功能和用户设置。例如,Android手机上的Google地图包含街景功能,而苹果的地图应用程序则不包含。
您可以通过“客户端试运行”功能,尽早进行软件测试,并体验 MobileTogether 的所有其他功能,从而开发出精美的应用程序。为此,您可以下载免费的 MobileTogether Designer,该软件集成了帮助文档、教程以及大量示例。