Air test框架与appium的优势

一、车载版 APK 的特殊性对测试框架的要求

喜马拉雅车载版与普通手机 APP 的差异,直接影响了框架的选择:

  1. 交互场景更简单,但控件定位难度更高
    车载 APP 的核心功能集中在 "音频播放(如播放 / 暂停 / 切换节目)、搜索(找节目)、音量调节" 等少数高频操作,界面元素少、逻辑简单(符合驾驶场景安全设计)。但由于车载系统(如 Android Auto、Linux 车载系统)的定制化程度高,APP 的控件属性(如 ID、class)可能不规范(甚至无固定属性),传统依赖控件定位的框架(如 Appium)容易出现定位失败。
  2. 屏幕适配特殊,对图像识别更友好
    车载屏幕尺寸、分辨率差异大(如 7 寸中控屏、12 寸悬浮屏),但核心功能按钮(如 "播放键""搜索图标")的视觉特征(形状、位置相对固定)比控件属性更稳定。例如,无论屏幕大小,"播放按钮" 通常是一个三角形图标,位置在界面底部中央,这种视觉特征比控件 ID 更可靠。
  3. 冒烟测试的核心诉求:快速验证、低维护成本
    冒烟测试的目标是 "用最少的脚本,快速验证核心功能是否可用"(如 "打开 APP→搜索'新闻'→播放第一条结果"),不追求复杂逻辑。因此,脚本需要编写快、运行稳、改起来简单,而不是追求极致的灵活性或深度功能覆盖。

二、AirTest 相比 Appium 的核心优势(适配车载场景)

1. 图像识别 + 控件识别双模式,适配车载控件不规范问题

  • AirTest 的核心特性是基于图像识别的 UI 自动化(通过截图匹配目标元素),同时支持 poco 框架(控件识别)。对于车载 APP 中 "控件属性缺失 / 不稳定" 的场景,直接通过截图(如 "播放按钮的图标")定位元素,比 Appium 依赖控件 ID 更可靠。
  • 例如:测试 "播放" 功能时,AirTest 可以直接截取 "播放按钮" 的图片,脚本中用touch(Template("play_button.png"))即可点击,无需关心控件 ID 是否变化;而 Appium 若用find_element_by_id("play_btn"),一旦车载系统升级导致控件 ID 变更,脚本就会失效。

2. 脚本编写门槛低,适合快速搭建冒烟用例

  • AirTest 提供可视化 IDE(AirtestIDE),支持 "录制操作生成脚本":打开 IDE→连接车载设备→手动操作一遍核心流程(如播放 / 搜索)→自动生成 Python 脚本,无需手动写定位逻辑。对于冒烟测试的简单场景,非专业自动化工程师也能快速上手。
  • 而 Appium 需要手动编写代码(如driver.find_element().click()),且需熟悉控件定位语法(如 XPath),编写效率低,不符合冒烟测试 "快速落地" 的需求。

3. 对车载系统兼容性更好

  • 车载系统可能基于定制化 Android(甚至非 Android 系统),Appium 依赖 Android SDK 的 UIAutomator 框架,若车载系统未集成 UIAutomator,可能无法正常连接设备;而 AirTest 的图像识别基于屏幕截图,只要能通过 USB/ADB 连接设备并获取屏幕画面,就能运行脚本,兼容性更广。

4. 低维护成本,适应频繁版本迭代

喜马拉雅车载版可能随车载系统升级频繁迭代,但核心功能按钮的视觉特征(如 "搜索图标")很少变化。AirTest 脚本若基于图像识别,即使 APP 界面微调(如按钮位置偏移 10 像素),通过调整图像匹配阈值(如threshold=0.8)即可兼容,无需大幅修改脚本;而 Appium 若依赖控件位置(如 XPath 的坐标偏移),界面微调就可能导致定位失败,需要重新编写定位逻辑。

相关推荐
CrissChan1 天前
AI赋能软件工程让测试左移更加可实施
人工智能·python·llm·软件工程·测试
瑞士龙珠3 天前
JMeter 多台压力机分布式测试(Windows)
测试
Apifox3 天前
如何在 Apifox 中正确使用前置 URL?
前端·后端·测试
陈哥聊测试4 天前
软件工程3.0时代,为什么人工测试仍必不可少?
人工智能·测试
檀檀19935 天前
测试抓包工具2-whistle抓包
测试
用户3521802454756 天前
靶场:Breach3.0攻略
安全·测试
ZoeLandia7 天前
前端自动化测试:Jest、Puppeteer
前端·自动化测试·测试
霍格沃兹测试开发7 天前
Playwright系列课(2) | 元素定位四大法宝:CSS/文本/XPath/语义化定位实战指南
开源·测试
程序员二黑8 天前
元素定位翻车现场!避开这3个坑效率翻倍(附定位神器)
python·测试