MihonUI测试自动化:使用Maestro进行端到端测试

MihonUI测试自动化:使用Maestro进行端到端测试

【免费下载链接】mihon Free and open source manga reader for Android 【免费下载链接】mihon 项目地址: https://gitcode.com/gh_mirrors/mi/mihon

你是否还在手动测试Mihon的每一个UI交互?本文将带你了解如何使用Maestro实现Mihon应用的端到端测试自动化,大幅提升测试效率和稳定性。读完本文后,你将能够搭建完整的UI测试流程,编写可靠的测试脚本,并将其集成到开发工作流中。

为什么选择Maestro进行UI测试

Maestro是由Mobile.dev开发的现代化UI测试框架,特别适合Android应用的端到端测试。与传统的Espresso测试相比,Maestro具有以下优势:

  • 简单易学:使用直观的YAML语法编写测试脚本,无需深入了解Android SDK细节
  • 稳定性高:自动处理异步操作和加载状态,减少测试flakiness
  • 跨平台支持:一套测试脚本可同时运行在Android和iOS设备上
  • 快速反馈:支持热重载,修改测试脚本后无需重新编译应用

Mihon作为一款开源漫画阅读器README.md,拥有复杂的UI交互和丰富的功能模块,如漫画库管理、阅读设置、章节更新等src/main/res/layout/,非常适合采用Maestro进行自动化测试。

环境搭建与准备工作

1. 安装Maestro CLI

首先需要在开发环境中安装Maestro命令行工具:

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

2. 项目配置

确保Mihon项目中已启用UI自动化所需的权限。在AndroidManifest.xml中添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

3. 准备测试设备

可以使用Android模拟器或物理设备进行测试:

  • 对于模拟器:在Android Studio中创建并启动一个API 28+的虚拟设备
  • 对于物理设备:启用开发者选项并开启USB调试模式

编写第一个Maestro测试用例

让我们创建一个测试Mihon应用启动流程的基本测试脚本。在项目根目录下创建maestro文件夹,并添加onboarding_flow.yaml文件:

appId: eu.kanade.tachiyomi
---
- launchApp
- assertVisible: "Welcome to Mihon"
- tapOn: "Continue"
- assertVisible: "Library"
- tapOn: "Skip"
- assertVisible: "No manga in library"

这个简单的测试脚本验证了应用启动流程,包括欢迎界面、继续按钮点击和最终的空库状态验证。

关键UI测试场景实现

1. 漫画添加流程测试

创建add_manga.yaml测试文件,验证从发现到添加漫画的完整流程:

appId: eu.kanade.tachiyomi
---
- launchApp
- tapOn: "Browse"
- tapOn: "Popular"
- waitForAnimationToEnd
- tapOn: "One Piece"
- assertVisible: "Manga info"
- tapOn: "Add to library"
- assertVisible: "Added to library"
- pressBack
- pressBack
- tapOn: "Library"
- assertVisible: "One Piece"

2. 阅读体验测试

创建reading_experience.yaml测试文件,验证漫画阅读功能:

appId: eu.kanade.tachiyomi
---
- launchApp
- tapOn: "Library"
- tapOn: "One Piece"
- tapOn: "Chapter 1"
- waitForVisible: "Swipe to read"
- swipeLeft
- swipeLeft
- assertVisible: "Page 3"
- tapCenter
- tapOn: "Settings"
- tapOn: "Reader mode"
- tapOn: "Vertical"
- pressBack
- swipeUp
- swipeUp

测试执行与结果分析

运行单个测试

使用以下命令运行特定的测试脚本:

maestro test maestro/onboarding_flow.yaml

运行测试套件

创建一个包含所有测试的suite.yaml文件:

- include: onboarding_flow.yaml
- include: add_manga.yaml
- include: reading_experience.yaml

然后运行整个测试套件:

maestro test maestro/suite.yaml

测试报告

Maestro会自动生成详细的HTML测试报告,包含每个步骤的截图和执行时间。报告默认保存在maestro/reports目录下。

集成到开发工作流

1. 添加到CI/CD流程

在项目的GitHub Actions配置中添加Maestro测试步骤.github/workflows/build.yml

jobs:
  ui-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Build app
        run: ./gradlew assembleDebug
      - name: Install Maestro
        run: curl -fsSL https://get.maestro.mobile.dev | bash
      - name: Run Maestro tests
        run: maestro test maestro/suite.yaml

2. 测试维护与更新

随着Mihon应用的迭代,UI元素可能会发生变化,需要定期维护测试脚本:

  • 当UI布局变更时,更新测试中的选择器src/main/res/layout/reader_activity.xml
  • 当功能流程调整时,同步修改测试步骤
  • 定期运行完整测试套件,确保新功能没有破坏现有UI

高级测试技巧

1. 使用变量和环境配置

env:
  MANGA_TITLE: "One Piece"
  CHAPTER_NUMBER: "1"

---
- launchApp
- tapOn: "Library"
- tapOn: ${MANGA_TITLE}
- tapOn: "Chapter ${CHAPTER_NUMBER}"

2. 处理动态内容

- launchApp
- tapOn: "Updates"
- waitForElement:
    id: "chapter_list"
    timeout: 10000
- assertNotVisible: "No new chapters"

3. 截图与视觉验证

- launchApp
- tapOn: "Library"
- screenshot: "library_screen"
- assertScreenshot: "library_screen_reference"

总结与下一步

通过本文介绍的方法,你已经掌握了使用Maestro为Mihon应用编写和执行UI自动化测试的基本技能。这将帮助你在开发新功能或修复bug时,快速验证UI的正确性和稳定性。

下一步建议:

  1. 为关键用户流程编写完整测试覆盖src/main/java/mihon/ui/main/MainActivity.kt
  2. 集成测试报告到团队的监控系统
  3. 探索Maestro的高级功能,如性能测试和 accessibility验证

如果你对测试脚本有改进建议,或者发现了测试覆盖不足的场景,欢迎提交PR参与Mihon项目的贡献CONTRIBUTING.md

提示:所有测试脚本应放在项目的maestro/目录下,便于集中管理和版本控制。定期更新测试用例,确保与应用功能保持同步。

【免费下载链接】mihon Free and open source manga reader for Android 【免费下载链接】mihon 项目地址: https://gitcode.com/gh_mirrors/mi/mihon

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值