测试自动化可以减少手工测试工作、最小化人为错误并加速发布周期,从而为持续移动软件开发提供支持。Burak Ergören 在 QA Challenge Accepted 2023 大会上分享了他在移动软件自动化测试方面的经验。
Ergören 提到,他们希望借助测试自动化项目提高代码覆盖率,并在自己方便的时候启动测试,使得测试过程更全面、有效:
通过并行运行测试,我们能够在开发过程的早期阶段检测错误。这使我们能够同时运行针对各种目的而设计的自动化测试。
Ergören 指出,选择正确的测试工具至关重要。他们选择了 Appium,这是一个兼容 Android 和 iOS 平台的测试自动化开源项目。它支持多种编程语言,如 Java 和 JavaScript。
下一步是定义项目的范围,Ergören 解释说:
项目的范围应该包括基本特性、公共函数和复杂测试用例。
在接下来的步骤中,他们设计了测试自动化架构,开发语言选择了 Java。他们强调要遵循面向对象编程(OOP)原则,并引入了页面对象模型、工厂设计模式等设计模式。Ergören 提到,为了创建一个健壮而灵活的项目架构,他们整合了诸如干净代码和 SOLID 原则等概念。
随后的步骤包括准备和维护自动化测试。他们会对这些测试进行审查和持续分析。
随着测试数量和场景复杂性的增加,其移动自动化测试套件的总运行时间变得非常长。他们发现自己总是超出最后发布期限。
Ergören 提到,在优化、加速发布周期的过程时,他们是从处理测试同步入手的:
我们在项目中使用 Fluent WebDriver 创建了一个通用的等待方法,并彻底重构了整个项目。这样一来,我们几乎消除了所有的“thread.sleep”实例。
他们还通过尽量减少 XPath 的使用以及强调 ID 的使用来优化定位器选项。Ergören 表示,他们与开发人员合作,使新开发的 UI 元素都包含 ID 成了一种标准做法。
输入用户名、密码和点击“登录”等重复操作会产生不必要的时间成本。Ergören 提到,他们认识到,在许多自动化测试中,公共方法(例如登录过程)都有很高的重复性。为了加快这个过程,他们实现了一个解决方案:当应用程序最初启动时,使用预定义的测试用户数据登录,从而节省了大量的时间。
为了优化发布周期,他们识别了一些访问路径很长的测试用例:
我们实施了深度链接开发,允许直接访问项目内的相关页面。这种优化节省了大量的时间。
InfoQ 就移动测试自动化采访了 Burak Ergören。
InfoQ:在你开始移动测试自动化项目之前,情况是怎样的?Burak Ergören:我们只有一个手动测试过程,使用由移动 QA 工程师准备的测试用例清单一步一步地进行检查。我们尝试在不同设备版本上验证这个手动测试过程,非常耗时。
我们最大的问题是,如果我们在手动测试检查表的最后阶段遇到了严重的错误,那么这个过程可能会停止,并且必须重新开始。
InfoQ:你学到了什么?Ergören:开发一个移动测试自动化项目需要投入大量的时间和精力。与 Web 自动化相比,移动自动化更具有挑战性。
诸如移动设备的稳定性、网络连接以及连接到这些设备的服务器的持续维护等因素都需要花费大量的精力和时间。
在这种情况下,诸如监视版本更新并将其无缝地集成到项目中、尽量减少不稳定的测试用例以及日常维护等任务,对于保证项目的稳定性至关重要。
我们都会经历日常生活的起起伏伏;有时候,我们可能会很难把注意力集中在工作上,从而导致了潜在的错误。而自动化没有人类情感,它会忠实地遵循我们提供的指令。
原文链接:
https://www.infoq.com/news/2024/02/continuous-mobile-development/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
今日好文推荐没有App,也没有 App Store,未来的手机会干掉全部应用开发人员吗?
微软开抢年收入上亿美元的 Redis 饭碗?开源性能遥遥领先的 Garnet:无需修改,Redis 客户端可直接接入