Google+
上一篇 / 下一篇 2015-09-19 15:01:55 / 个人分类:移动测试
探秘Google+是如何进行移动应用测试的?
General- 你 需要熟悉和理解平台。在 Android 和在 iOS 上测试是存在着一些差异。这两个平台可用的测试工具和测试框架也是截然不同(比如,在开发语言上,Android 使用的是 Java 与此同时 iOS 使用的 Objective-C , 在界面风格和 UI 测试框架的工作方式上,两者也是不同的)。
- 让你的测试套件和测试环境更加的稳定。因为不稳定的测试会让构建的质量大打折扣,并且会让你的测试用例可信度降低,不稳定的测试还不如没有测试。
- 把测试模块化,因为在移动设备上有太多的复杂的情景(比如模拟器/ 设备状态,操作系统触发的操作等等)。
- 为测试提供一个封闭的测试环境。在移动设备上的UI测试本来就是不稳定的,为其增加依赖会带来更大的不稳定性。
- 单元测试是整个测试中至关重要的一个环节,尝试去把应用的UI和逻辑相分离。这个做法将使得单元测试更加的快捷和模块化。
Android Testing
1)单元测试
在 Android 上把 UI 代码和逻辑相分离是相对复杂的。例如,一个 activity 有时在同时扮演者 controller 和 view 。在写单元测试的时候一定要记住这点。另外一个实用的建议是将单元测试从 Android emulator 中解耦合,这个可以减少单独 build 一个安卓包并安装,这样你的测试将会进行的更加快速。Robolectric 就是一个非常好的工具,它为你的测试执行实现**droid 平台的存根,也即不依赖dalvik的运行环境。
2)UI封闭测试
一 个封闭的 UI 测试通常在没有网络请求或者是没有外部依赖的情况下进行的。一旦可以在一个封闭的测试环境中进行,一个叫 Espresso 的白盒测试框架就可以模拟用户在 UI 上的操作,还紧密耦合了应用的业务逻辑代码。Espresso 还可以将你的测试动作和 UI 线程上的事件响应同步起来,从而减少不稳定性。
Diagram: Non-Hermetic Flow vs. Hermetic Flow
3)Monkey Tests
Monkey Tests 的主要目的是通过在 Android 应用上进行压力测试来寻找闪退和程序没有响应(ANR = Application No Responding) 等问题. 他们通过一些随机的手势和点击事件来对 app 进行测试。Monkey Test 的结果从某种程度上来说是可重现的,超时和潜在出现的问题并不在你的控制范围之内,所以有可能会带来一些测试错误。在同样的配置下再做 monkey test 通常会再现这些错误。如果你每天都针对不同版本的 SDK 来执行这些Monkey用例,,那么它们将有助于您在新版本的开发阶段更早的发现bug。
iOS Testing
1)单元测试
像GTMSenTestcase 或者能够和 Xcode 结合起来的 OCUnit 这样的单元测试框架都是非常好的选择。
2)UI封闭测试
KIF 是公认的用 Objective-C 进行 UI 测试的强大工具,测试的时候可以更加紧密的和 app 相结合。让测试更加的牢固。KIF 可以使得 iOS 开发人员在写测试的时候使用和 app 相同的开发语言。
3)Monkey测试
相对于 Android ,iOS 其实没有等价的原生工具来写 Monkey test , 但是这种类型的测试在 iOS 测试中还是会增加筹码。 Google+团队开发了自己的 monkey 测试框架,同时也有很多可用的第三方测试框架。.
51Testing软件测试网b X/O8IC%JOY
K };no?0 51Testing软件测试网{)t1J(z4~g1\`
Backend Testing0B.B-N*l }m[2u0在移动应用的测试当中是不可缺少测试服务器后端和移动客户端的集成的这个环节的。当两者发布周期不尽相同的时候,这个环节显得尤其重要。51Testing软件测试网E fKx2Tj
51Testing软件测试网:Xu1yW8f4WK为 确保测试策略的成功你必须能够在后台生成可重复的数据集合并且使得所有的外部依赖与封闭的后台无关。把服务放到内存里,外部依赖远程调用的回放都是确保测 试环境封闭性和数据集合可重复的好方法。Google+团队使用 Guice 来实现依赖注入,这使得我们可以很方便的在测试时依靠伪功能实现移除外部依赖和使用预生成的数据集合。
D|1iy:R3X$R?{0Diagram: Normal flow vs Replay Tests flow
pb:`bXt0
)s/T-N6TX1m0Conclusion
7e[)Ny4N-~051Testing软件测试网P1qO i8q9X ]QH测试移动应用程序可以说非常有挑战性,但是去理解不同平台的本质和工具对建立一个完善的测试机制有着至关重要的作用。 与此同时,提供一个可靠并且封闭的测试环境和进行的测试一样重要。51Testing软件测试网cGnf%x.I `:l
51Testing软件测试网/D)}cbH最终,你需要根据团队的需求来对你的自动化目标来定一个优先级,这里是我们Google+ 团队的优先级列表:
?Z9Z6D_/U"r!N~051Testing软件测试网eFE ZhP~1、单元测试:不管在 Android 还是 iOS 上,单元测试都是最为重要的一部分,它们进行的很快,并且可靠性很高。
~JAP X$XW1X051Testing软件测试网!fj'Q3f_m0H)l2、后台测试:保证你的后端问题不会给移动应用带来崩溃。当客户端和后端上线周期是不一样的时候,这样的问题尤其需要注意。51Testing软件测试网 A2_.]Vqb(G
51Testing软件测试网9Bz.P H*cO"[w"S4yi3、UI 测试:这个在写脚本以及维护上需要花的时间更多,但是要保证测试必须覆盖关键路径的界面跳转。