安卓自动化测试QA

安卓自动化测试入门:用手机跑通你的第一个 UI 测试用例

安卓自动化测试完全指南——用真实的安卓手机代替人工执行回归测试、对比传统 Appium 方案的优势、手把手教你写第一个自动化测试脚本。

约 7 分钟

4 小时 vs 3 分钟

假设你们团队每周发一个版本。每次发版前,测试人员要花四小时手动跑完五十个核心功能用例——登录、搜索、下单、支付、个人中心……

四小时。同样的事情每次都要重新做一遍。如果中间有人手滑点错了按钮,整套流程重头再来。

这就是自动化测试要解决的问题。

把五十个用例写成脚本,机器帮你跑——三分钟搞定,零误差,不用担心人疲劳出错。更重要的是:同样的脚本可以用于回归测试、性能对比、兼容性验证等所有需要反复验证的场景。


三种测试方式怎么选

模拟器 真机单机 真机集群
硬件成本 ¥1000~3000/台 ¥N×1000
行为真实性 中(与真实设备有差异)
多机型覆盖 低(需装多个模拟器) 有限 大量并行
适合场景 开发快验 日常回归 兼容性和压力测试

我的建议是混合策略:开发阶段用模拟器快速发现问题就修,测试阶段用真机跑自动化回归保证质量,发布前用真机集群并行压测确认新版本没问题。

核心思想就一句:越早发现 Bug 越省钱,越晚验证越真实。


动手:从手动到自动化

拿最常见的电商购买流程举例。先搞清楚这个流程包含哪些步骤:

打开 App → 搜索“手机壳” → 点第一个结果 → 选黑色 → 加入购物车 → 去购物车 → 结算 → 填地址 → 提交订单 → 看到“下单成功”

总共十一步。每一步都出问题怎么办?那就是一次完整的发版事故。

录下来

以 EasyClick 为例,连上手机后切到“录制模式”,在手机上正常走一遍操作流程。每点一个按钮、输入一段文字,编辑器里就会同步出现对应的代码。

录完后脚本长这样:

launchApp("com.example.shop");       // 打开 App
sleep(2000);
swipe(500, 1500, 500, 800, 500);    // 向上滑
findAndTap("搜索", 3000);           // 找搜索框
typeText("手机壳");                    // 输入关键词
clickByText("搜索");                  // 点搜索
scrollToByText("iPhone 13 透明壳");   // 滚动找商品
tapByIndex(0);                       // 点第一个
selectColor("黑色");                 // 选颜色
addToCart();                         // 加购物车
checkout();                          // 结算
fillAddress("北京市朝阳区...");        // 填地址
submitOrder();                       // 提交
waitForResult("下单成功");            // 等成功页

加上断言让它成为真正的测试

光跑完流程还不够,你得知道每一步的结果对不对。加上断言:

test("电商购买流程", () => {
    
    launchApp("com.example.shop");
    assert(title().contains("首页"));  // ✅ 确认进入正确页面
    
    search("手机壳");
    sleep(2000);
    var results = getSearchResults();
    assert(results.length > 0, "搜索结果不应为空");  // ✅ 有结果
    
    clickOnProduct(0);
    selectColor("黑色");
    addToCart();
    
    navigateToCart();
    var cartItems = getCartItems();
    assert(cartItems.length === 1);      // ✅ 只有一件商品
    assert(cartItems[0].color === "黑色"); // ✅ 颜色对
    
    checkout();
    fillAddress(address);
    submitOrder();
    
    waitForPage("success-page", 10000);
    assert(currentUrl().includes("order-success"));
    
    print("✅ 购买流程测试通过!");
});

现在这份脚本不仅能自动跑流程,还能自动判断对错——这才叫自动化测试。


常见测试场景模板

登录测试

test("用户登录", () => {
    enterCredentials("user@example.com", "password123");
    clickButton("登录");
    waitForPage("home");
    assert(findText("欢迎回来"));
    
    backToLogin();
    enterCredentials("user@example.com", "wrong_password");
    clickButton("登录");
    assert(findText("密码错误"));
});

注册流程

test("新用户注册", () => {
    clearCache();
    visitRegistrationPage();
    fillForm({
        phone: getRandomPhone(),
        password: generateStrongPassword(),
    });
    clickButton("注册");
    assert(findText("注册成功") || findText("验证邮箱"));
});

多机型兼容性

var devices = ["Samsung-Galaxy-S21", "Xiaomi-13", "Huawei-P60"];

devices.forEach(device => {
    connectDevice(device);
    test(`兼容测试: ${device}`, () => {
        runCoreFlows();
        assertScreenshot("baseline.png");
    });
});

EasyClick vs Appium

如果你是小团队(一二十个人)或者自由职业者,用 EasyClick 这种轻量方案会比 Appium 省心得多。不用配 JDK、SDK、Appium Server,装个 APK 就能跑。

如果你的公司已经有一套 Java/Kotlin 测试基础设施,继续用 Appium 也没问题。别因为“新技术”换掉还在正常运转的东西。


写在最后

自动化测试不是“学会了再上”,而是“用上就会了”。

挑一个你最头疼的手工测试——每次发版最耗时的——把它转成脚本。第一次跑的时候你可能会觉得就这么简单。那正是自动化测试的魅力。

更多参考: 安卓自动化脚本入门 — 理解底层机制 第一个工程教程 — 从零开始 无障碍服务原理详解 — 技术底层的运作方式

============================

iEasyClick 官网 ieasyclick.net · 专注于安卓/苹果/鸿蒙全平台手机自动化

============================

想要真实跑起来?

本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。

访问 iEasyClick 官网 →