移动应用测试自动化实践:零基础入门教程

技术清醒派
2025-06-15 17:39
阅读 305

开篇:什么是移动应用测试自动化?

开篇:什么是移动应用测试自动化?

你有没有发现,每次打开一个APP,它都像被训练过一样能精准地完成任务?比如登录、浏览商品、下单购买,这些看起来很简单的操作背后,其实有很多复杂的代码在运行。

为了让这些功能一直稳定可靠,开发者们会写很多“自动测试脚本”,让程序自己去模拟用户的操作。这个过程就叫 移动应用测试自动化

它能做什么?

  • 自动执行点击按钮、输入文字等用户行为
  • 检查页面是否正确显示
  • 发现功能错误或崩溃(Bug)
  • 提高开发效率,减少人工测试时间

环境准备:搭建你的第一个测试环境

环境准备:搭建你的第一个测试环境

我们先从最基础的工具开始,一步步搭建出可以运行自动化测试的环境。

🧰 本次使用的是 Android + Appium + Python 的组合,适合新手入门。

第一步:安装 Python

  1. 下载最新版 Python
  2. 安装时勾选 Add to PATH
  3. 打开终端(Windows:cmd;Mac/Linux:Terminal),输入:
python --version

如果能看到类似 Python 3.11.x 的输出说明安装成功。


第二步:安装 Appium

Appium 是专门用于移动应用自动化测试的开源工具。

方法一(推荐):通过命令行安装

npm install -g appium

✅ 如果没有 npm,请先安装 Node.js

验证安装:

appium --version

你会看到类似 Appium v2.x.x 的版本信息。


第三步:安装 Appium 的 Python 库

pip install Appium-Python-Client

第四步:准备 Android 设备(真实机 or 模拟器)

你可以选择以下任意一种设备进行测试:

  • 连接上电脑的真实安卓手机
  • 使用 Android Studio 创建虚拟设备(AVD)

确保你的设备已经开启 USB 调试模式。


核心概念:理解测试中的“关键词”

用户体验设计-1

核心概念:理解测试中的“关键词”

为了让你更好地理解接下来要做的事,这里介绍几个常用术语:

1. 测试脚本(Test Script)

就是用编程语言(如 Python)写的“自动帮你点按钮”的程序。

2. 元素定位(Element Locator)

你想让程序点击“登录”按钮,但它怎么知道哪一个是“登录”按钮呢?这就需要用到元素定位。

常用方法有:

  • find_element_by_accessibility_id()
  • find_element_by_id()
  • find_element_by_xpath()

我们会结合具体代码来解释这些是什么意思。

3. Appium Server

你可以把它看作是电脑和手机之间的翻译官。你写的测试脚本发给 Appium Server,然后它再告诉手机该怎么做。


实战项目:编写你的第一个自动化测试脚本

实战项目:编写你的第一个自动化测试脚本

我们将测试一个简单的 App —— 假设它有一个按钮,点击后弹出一段文字。

目标:

  • 启动 App
  • 点击按钮
  • 验证是否出现指定文字

步骤一:启动 App 并连接 Appium

首先,我们要用 Python 编写一个脚本:

from appium import webdriver

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'emulator-5554',   # 可以用adb devices查看设备编号
    'appPackage': 'com.example.myapp',  # 替换为你App的实际包名
    'appActivity': '.MainActivity'       # 替换为你的主活动名称
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

📌 注意:

  • 运行这段代码前,必须先手动启动 Appium Server。
  • 替换好你的 appPackageappActivity,可以通过 ADB 查看。

步骤二:找到按钮并点击它

我们假设按钮的 ID 是 click_me_button,你可以通过工具(如 uiautomatorviewer)找到元素 ID。

button = driver.find_element_by_id("com.example.myapp:id/click_me_button")
button.click()

步骤三:验证结果(判断是否有特定文本)

我们希望点击按钮后弹出一个提示:“Hello, Automation!”

text_element = driver.find_element_by_id("com.example.myapp:id/result_text")
assert text_element.text == "Hello, Automation!"
print("测试成功!")

最终整合脚本如下:

from appium import webdriver

def test_first_automation():
    desired_caps = {
        'platformName': 'Android',
        'deviceName': 'emulator-5554',
        'appPackage': 'com.example.myapp',
        'appActivity': '.MainActivity'
    }

    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    # 点击按钮
    button = driver.find_element_by_id("com.example.myapp:id/click_me_button")
    button.click()

    # 验证结果
    result_text = driver.find_element_by_id("com.example.myapp:id/result_text")
    assert result_text.text == "Hello, Automation!"
    print("✅ 测试通过!")

    driver.quit()

if __name__ == '__main__':
    test_first_automation()

常见问题解答(FAQ)

Q1:找不到按钮怎么办?

可能的原因:

  • 元素 ID 写错了
  • APP还没加载出来,就去点击了
  • 按钮不是可见状态

💡 解决建议:

  • 使用 sleep()wait() 等待元素出现
  • uiautomatorviewer 工具查看元素属性

示例等待写法:

import time
time.sleep(3)  # 等待3秒

更专业的做法是使用 WebDriverWait:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, 'your_element_id')))

Q2:报错“Connection refused”

可能是 Appium Server 没有启动。

🔧 解决步骤:

  1. 打开终端,运行 appium
  2. 确认输出中有一行类似:
Appium REST http interface listener started on 0.0.0.0:4723

Q3:找不到 App Package 和 Activity 怎么办?

可以用 adb 命令查看当前前台应用信息:

adb shell dumpsys window | grep mCurrentFocus

输出类似:

mCurrentFocus=Window{abcde u0 com.example.myapp/.MainActivity}

其中 com.example.myapp/.MainActivity 就是 package 和 activity。


Q4:为什么我的脚本跑完后 App 没退出?

因为我们在最后调用了 driver.quit(),如果你没看到这句,记得加上它:

driver.quit()

学习建议:下一步该学什么?

恭喜你完成了第一个移动自动化测试脚本!

接下来你可以尝试学习:

✨ 更高级的定位方式:

  • XPath 表达式定位
  • Accessibility ID 定位
  • 通过文本查找元素

🔁 添加更多交互场景:

  • 输入用户名密码
  • 拖动滑块
  • 处理 Toast 提示、Alert 弹窗

⏱️ 使用单元测试框架组织测试:

  • 使用 unittestpytest 来管理多个测试用例
  • 自动生成 HTML 报告

🤖 扩展 iOS 测试技能:

  • 搭建 iOS 自动化测试环境(需要 Mac 机器)
  • 学习 XCUITest 工具链

📊 接入 CI/CD(持续集成)系统:

  • 与 GitHub Action / Jenkins 集成,实现每天自动跑测试

结语:坚持多写多练,成为自动化达人!

移动测试自动化是一项实用又有趣的技能。一开始可能会遇到各种坑,但只要跟着步骤一步步来,动手实践,你就一定能掌握它!

别忘了,每个高手都是从“Hello World”开始的 😊


📅 练习建议:

  • 每天花 30 分钟复现实验
  • 把自己常用的 App 拿来做测试对象
  • 尝试为别人的应用写自动化脚本

欢迎你在评论区分享你的第一个自动化测试截图或心得!

🔚

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝