Appium 实践 | 让测试更快更稳更可靠:片状测试
本文为霍格沃兹测试学院对 Appium Pro 的系列原创翻译文章之一,旨在普及最先进的测试开发技术。进阶学习,文末加群。
使用 Appium 时,会遇到又慢又不稳定的情况。Appium 使用的底层工具可能会限速,在功能测试中,许多环境问题也会导致自动化测试不稳定。其实有一些方法可以避开这些问题。本篇文章是系列中的一篇,后面也会有相应文章讨论稳定性和速度。
创建 Session 片状
片状其实就是不可能靠的意思--如果在本地测试成功,在未来它可能运行失败,这是不是不可靠?这个问题很复杂,Appium 确实会出现不稳定问题,但你需要找出问题所在!
- 你是否了解 App 或者设备的速度,App 稳定性,屏幕大小,或者动态内容?是否毫无根据的假设这些值;
- App 本身就不稳定(也许是 App 自身存在的问题或者人为,人工操作是否也会出现这个问题);
设备内存和处理器计算不足; - 网络问题(用 HTTP 发送到后端可能失败);
- 设备问题(设备会出现各种奇怪的问题);
如果你说,上面这些情况都没问题,问题肯定就出在 Appium 上!其实,Appium 只是众多技术的一环,下面这个图说明了 iOS 测试的底层技术栈:
看到没,Appium 并不是一个庞大的怪兽,相反,它使用了许多底层工具,问题可能出在这些底层工具上(比如 XCUITest 和 UiAutomator2 )。希望你能调查清楚问题所在。某种问题并不孤立,而是在整个构建中随机出现。当你检查日志时,你会发现这种片状现象总是在一天的某个时间发生。这是非常重要信息,这可能有一个计时代码正在执行!询问其他团队,他们可能知道问题所在。
后面的文章会详细讨论这些问题,现在我给出一些在 CI 上的建议:
- 将测试添加到构建前,检测是否有片状问题。多次运行它 (可能 100 次 ?) 以确保可靠,如果 100% 通过,很好,merger 这个commit 到 master 分支吧。
- 如果测试有一些没有通过,说明存在不可靠或者片状问题。花点时间调查原因,也许仅仅因为定位或者等待问题。Appium日志和一步一步的截图很重要。
- 当发现问题时,如果能解决,就解决它。如果解决不了,可以向 Appium 或者 Apple提供错误报告,你还可以丢弃这个测试或者注释掉(如果有时间,也可以手动测试)。
- 如果您在构建中了保留测试并允许构建在失败时重试测试,您必须跟踪重试次数的统计数据,并设置一些可靠性阈值,超过该阈值再进行调查研究。如果测试随着时间的推移,片状问题越来越多,你的应用程序可能有问题。
Appium 测试是功能测试,不是单元测试。单元测试与其他任何东西都是隔离的,而功能测试则生活在真实的世界中,要混乱得多。功能测试不可能覆盖所有代码问题,应该只考虑关键的用户操作,并通过少量测试捕获 bug,从 bug 中提取有价值的信息。
与此同时,要确保那些少量的测可能可靠。通过强化一些测试,你将了解关于应用程序和整个环境的很多信息。这样就能从一开始就把学到的东西投入到新的测试中去,而不是在以后的道路上一遍又一遍的解决同样的问题。