UI自动化测试革命:拥抱Maestro框架的未来之旅

7,850 阅读8分钟

UI自动化测试是一种软件测试方法,旨在验证应用程序的用户界面是否按照预期进行操作和交互。它通过模拟用户在应用程序界面上的行为,如点击按钮、输入文本、选择选项等,来测试应用程序的功能和用户体验。

对于常规的测试手段,也不过如此,在产品开发周期中,测试占据着很大的需求时间,在敏捷开发中之21(开发一周、测试一周、上线1小时)开发模式中,测试的测试周期长达1周,那为什么会长达一周呢?

在每次的开发过程中,测试需要做的操作不仅仅是先有的版本需求测试,他们还需要做全量测试走查,就是说所有的重要部分都需要进行测试,而Ui自动化测试就是替代这部分大量的每个版本都需要执行的重复操作。

UI自动化测试的优点

  1. 提高测试效率:自动化测试可以快速执行测试任务,比手动测试更高效。它可以在短时间内执行大量的测试用例,并且可以在不同的操作系统和浏览器上运行测试。
  2. 提高测试覆盖率:UI自动化测试可以覆盖应用程序的各个功能和用户交互场景,确保应用程序在不同情况下的正确运行。
  3. 持续集成和持续交付支持:自动化测试框架可以与持续集成和持续交付流程集成,帮助团队在每次代码变更后自动运行测试,及早发现问题。
  4. 提高软件质量:通过自动化测试,可以更早地发现和解决潜在的问题和缺陷,提高软件质量和稳定性。

它的价值是什么

  1. 提高软件开发效率:自动化测试可以减少手动测试的工作量,加快软件开发的速度,同时提高开发团队的生产力
  2. 提供快速反馈:自动化测试可以快速执行,提供即时的反馈结果,帮助开发人员快速定位和修复问题。
  3. 降低测试成本:虽然UI自动化测试需要一定的初始投入,但随着时间的推移,它可以大大减少测试成本,尤其是在长期项目中。
  4. 提高用户满意度:通过自动化测试,可以更好地保证应用程序的质量和稳定性,从而提供更好的用户体验,增强用户满意度。

那常见的自动化测试有哪些呢?

一般情况下,使用python 语言开发者居多,测试工程师必备的开发语言当然是首选,常见的自动化测试框架有哪些呢?

常见的UI自动化测试框架

  1. Selenium:Selenium是最受欢迎的UI自动化测试框架之一,支持多种编程语言,如Java、Python和C#。它可以模拟用户在网页上的操作,执行各种测试任务。
  2. Appium:Appium是一个开源的UI自动化测试框架,专门用于移动应用程序的测试。它支持多种移动平台,如iOS和Android,并提供跨平台的测试能力。
  3. Cypress:Cypress是一个现代化的JavaScript前端测试框架,旨在对Web应用程序进行端到端的自动化测试。它具有简单易用的API和强大的调试功能。
  4. TestComplete:TestComplete是一款功能强大的UI自动化测试工具,支持多种应用程序类型,包括Web、桌面和移动应用程序。它提供了丰富的测试功能和易于使用的脚本记录功能。

UI自动化框架的必要性不言而喻,但是对于小公司来说,他的高昂代价也是不可尝试的。而我今天要介绍的是一个新宠,他的成本很低,首先来一张图:

187275009-ddbdf963-ce1d-4e07-ac08-b10f145e8894 (1).gif

这是它的官方案例,看着是不是很激动,别着急,更激动的还在后面:

image.png

看见这张图后是不是更加激动了,它的语言组成是kotlin、script、swift 这不就是常规开发语言吗,这不就是小公司的福音吗,为什么这么说呢?

  1. 开发语言决定了客户端开发工程师就可以搞定
  2. 招一个初级测试工程师也可以使用,有问题开发搞
  3. 可以让整个客户端一起搞,Android、IOS工程师都可以

Maestro

Maestro is the easiest way to automate UI testing for your mobile app.

为什么要选择Maestro

  1. Maestro 建立在其前辈(Appium、Espresso、UIAutomator、XCTest)的学习基础之上的,就是说专业的测试工程师玩过的东西,这个都有,出生就在罗马了
  2. 高适应性。UI 元素不会总是在你期望的地方,屏幕点击不会总是通过等等。Maestro 拥抱移动应用程序和设备的不稳定性并试图应对它。
  3. 对延迟的内置容忍度。无需在您的测试中添加无需在您的测试中添加sleep()调用。Maestro 知道加载内容可能需要一些时间(即通过网络)并自动等待(但不会超过所需时间)。
  4. 极快的迭代速度。测试被解释,不需要编译任何东西。Maestro 能够持续监控您的测试文件并在它们发生变化时重新运行它们。
  5. 功能强大的语法。在文件中定义你的测试脚本。
  6. 设置简单。Maestro 是一个可以在任何地方工作的单一二进制文件。

它的魅力或许只能通过官方网站去了解了 maestro.mobile.dev/

安装环境

以下是Mac 环境:

在mac 环境中,安装它时有两个依赖项必须安装

  1. Xcode 推荐14.x或者更高的版本,这个直接去App Store下载就可以
  2. idb_companion

官方地址 github.com/facebook/id…

  • 使用brew 安装:
brew tap facebook/fb
brew install idb-companion
  1. 安装上述两个环境后,使用如下代码,进行安装

更新也可以使用该代码

curl -Ls "https://get.maestro.mobile.dev" | bash

image.png

这就表示安装完成了,然后根据提示,进行配置

    export PATH="$PATH":"$HOME/.maestro/bin"

添加到环境中,

  1. 测试

image.png

  1. 完成之后Android不需要进行其他操作,直接自动连接

使用

配置好环境之后,在任意位置,当然一般都是指定测试文件夹,并创建以 .yaml 结尾的文件,

  1. 最简单的案例
appId: com.xxx.android

---

- launchApp

启动指定包名的APP

  1. 运行
maestro test xxx.yaml

结果就是打开指定包名的APP

语法解析

官方Demo

按照官方的介绍,我们可以使用命令下载它的全量案例

maestro download-samples

当然也可以直接下载 storage.googleapis.com/mobile.dev/…

  1. IOS
cd ./samples
unzip sample.zip
xcrun simctl install Booted Wikipedia.app
maestro test ios-flow.yaml
  1. Android
cd ./samples
adb install sample.apk
maestro test android-flow.yaml

Maestro Studio

Maestro 提供了一个工具,可以自动帮助我们写命令,简直不要太爽。

  1. 保证设备已经连接
  2. 运行命令
maestro studio

image.png

在本地指定端口直接产生一个web 工作空间。

image.png

然后我们可以点击直观地选择 UI 元素以接收有关如何与 Flow 中的元素交互的建议,或者在 REPL 中输入 Maestro 命令并通过单击运行它们ENTER

单击设备屏幕截图以选择一个 UI 元素。

image.png

Maestro Studio 会自动生成示例,说明您如何与 Flows 中的选定元素进行交互。您可以双击示例以直接执行它,也可以复制它,通过可用的热键阅读文档和其他内容。

可以直接在REPL 中执行命令

image.png

点击导出,可以保存自动化脚本,就问你怕不怕

总结

本文深入探讨了UI自动化测试及其在软件开发中的重要性,并介绍了几个常见的UI自动化测试框架,如Selenium、Appium、Cypress和TestComplete。其中,特别重点介绍了基于这些框架的强大工具——Maestro框架。Maestro框架为开发人员提供了一套全新的语法和工具,使他们能够更轻松地创建、管理和执行UI自动化测试脚本。

安装和配置Maestro框架是使用该框架的关键步骤之一。在本文中,我们提供了详细的指南,指导读者如何轻松地安装和配置Maestro框架,为其工作环境搭建坚实的基础。

简单脚本示例与Maestro框架语法介绍 为了更好地演示Maestro框架的功能和特点,我们在本文中提供了一个简单的脚本示例。通过这个示例,读者可以了解Maestro框架的语法和基本用法。我们强调了Maestro框架的灵活性和易用性,以及其与其他框架相比的优势。

Maestro开源地址

关注我,后续分享开源项目的学习过程,看看他们是怎么玩儿的,也可以一起讨论UI自动化测试相关的问题