iOS的测试
  单元测试
  像Xcode中附带的OCUnit或GTMSenTestcase这样的单元测试框架都是不错的选择。
  全封闭的UI测试
  KIF已被证明是用Objective-C写UI测试的强大解决方案。它运行在相同进程中使得测试与所测试的应用程序更紧密的结合,也使得测试本质上更稳定。 KIF允许的iOS开发者使用与他们的应用程序相同的语言来编写测试。
  按照与Android的UI测试同样的模式,你也希望Objective-C的测试是密封的。一个好的方法通过预定义的反应来模仿服务器。由于KIF测试在同进程中运行,反应可以通过编程建立,使测试更容易维护,更稳定。
  猴子测试
  iOS并没有类似于安卓的用来写猴子测试的自带的工具,但是这种类型的测试仍为iOS增加了价值(例如,在我们近的Google+版本之一,我们发现了16处崩溃)。Google+团队开发了自己的定制猴子测试框架,但也有许多可用的第三方选件。
  后台测试
  如果不对服务器后台和手机客户端之间的移动的集成进行测试,测试策略不算完整。这在移动客户端和后台的开发周期有很大区别的情况下尤为正确。重播测试策略可以非常有效地防止从后台破移动客户端。这种策略背后支撑的理论是由通过一组知道是正确的金色请求和响应文件,来模拟移动客户端。重播测试套件将发送金色请求到后台服务器,并断言由服务器返回的响应将匹配预计的反应。由于服务器的响应往往不能完全确定,你可能需要利用进行比较的工具,来忽略与预期的差异。
  为了使这一战略获得成功,你需要一种方法来将可重复的数据集置于后台,封闭所有那些不相关的依赖。使用内存的服务器和假数据或对外部的依赖关系使用RPC重播,是实现可重复的数据集和密封环境的良好的途径。 Google+的移动后台使用Guice的依赖注入,这使得我们可以很容易地在测试和种子数据设备中置换出伪实现依赖。


  
图:普通流程 vs 重播测试流程

  结论
  移动应用程序的测试是非常具有挑战性的,但建立一个全面的测试策略,了解不同的平台和工具的本质是成功的关键。提供了一个可靠,密封的测试环境和你所写的测试一样重要。
  后,确保你按照你的团队需要考虑你的自动化工作的优先级。这是我们Google+小组的优先级:
  单元测试:不论在Android或是iOS,这都应该是你的首要任务。他们运行得快,而且比任何其他类型的测试都要更健壮。
  后台测试:确保你的后台不会破坏你的移动客户端。当移动客户端和后台的开发周期不同的情况下,很容易会产生崩溃。
  UI测试:这是生来慢而且脆弱。他们还需要更多的时间来编写和维护。请确保你的应用程序至少覆盖了关键路径。
  猴子测试:这是后一步,完成您的移动自动化策略。