独家揭秘:字节跳动广告测试团队如何用AI把兼容性测试从2天干到15分钟

举报
霍格沃兹测试开发学社 发表于 2026/07/24 22:43:11 2026/07/24
【摘要】 从“人肉跑脚本”到“AI自动巡航”,我们到底做对了什么?大家好,我是字节跳动广告测试团队的一名技术负责人。今天想和大家聊聊我们团队最近半年做的一件“小事”——把广告SDK的兼容性测试,从平均2天压缩到了15分钟。先别急着说标题党,这确实是我们线上真实跑出来的数据。下面我会把整个技术方案掰开揉碎了讲,希望能给正在做类似探索的同行一些参考。一、先说痛点:兼容性测试为什么这么慢?广告业务有个特点—...
从“人肉跑脚本”到“AI自动巡航”,我们到底做对了什么?

大家好,我是字节跳动广告测试团队的一名技术负责人。今天想和大家聊聊我们团队最近半年做的一件“小事”——把广告SDK的兼容性测试,从平均2天压缩到了15分钟。

先别急着说标题党,这确实是我们线上真实跑出来的数据。下面我会把整个技术方案掰开揉碎了讲,希望能给正在做类似探索的同行一些参考。

一、先说痛点:兼容性测试为什么这么慢?

广告业务有个特点——SDK集成在成千上万款第三方App里。每次发版,我们必须在几百台真实设备上验证:

  • 不同Android版本(6.0到15)
  • 不同iOS版本(12到17)
  • 不同厂商定制系统(华为、小米、OPPO、vivo)
  • 不同屏幕分辨率和芯片架构

以前的做法很简单粗暴:测试同学写好测试用例,手动在真机上一台台跑。一个版本测下来,2天是常态,碰到问题多的版本3天都打不住

而且更让人头疼的是——每次发版都要重新跑一遍。广告SDK迭代频率高,一周发两三个版本是家常便饭。测试团队天天在跑兼容性,别的活基本不用干了。

二、转折点:为什么是AI?

去年下半年,我们开始认真思考一个问题:兼容性测试能不能自动化?

传统的自动化方案我们都试过:

  • Appium + 真机农场:脚本维护成本太高,UI一改就挂
  • Monkey测试:覆盖率完全看运气
  • 录制回放:稍微复杂点的场景就回放失败

说白了,传统自动化依赖的是精确的UI定位(ID、XPath),而广告SDK的展示场景千变万化——弹窗、浮层、插屏、激励视频,每个App的UI结构都不一样。写一套通用脚本?不现实。

直到我们开始尝试用多模态大模型来做UI理解和操作。

三、技术方案:三层架构

我们的方案可以概括为三层,我画个简化的架构图给大家感受一下(别介意,文字版):

第一层:设备调度层 —— 管理几百台真机和模拟器,支持并行任务分发

第二层:AI执行层 —— 核心的大脑,负责理解页面、决策操作、验证结果

第三层:报告分析层 —— 汇总结果、分类缺陷、自动告警

下面重点讲第二层,这是我们最核心的突破。

四、AI执行层的三个核心能力

能力一:自然语言驱动,告别XPath

这是我们踩过最大的坑。传统自动化测试最耗时的就是写定位器——找ID、写XPath、处理动态加载、应付各种奇葩的UI结构。

现在我们用了一套基于多模态大模型的方案,测试用例直接用自然语言描述就行了。举个例子:

"打开测试App,点击首页的横幅广告位,等待广告加载完成,
验证广告素材是否正确展示,点击广告跳转后检查落地页是否正常打开"

就这么几句话,AI会自动:

  1. 截取当前屏幕
  2. 用多模态模型理解页面布局
  3. 找到“横幅广告位”这个元素
  4. 执行点击操作
  5. 等待加载完成
  6. 验证广告是否正确展示

完全不需要写任何XPath或CSS选择器

这块我们借鉴了内部一些AI自动化测试的探索成果,比如基于菜单树让LLM理解App操作,再通过Prompt工程把自然语言用例转成可执行脚本。实测下来,用例编写时间从平均2小时压缩到了10分钟

能力二:智能遍历,自动覆盖边界场景

兼容性测试最怕的是漏测。几百台设备、几十个系统版本,人工根本不可能全覆盖。

我们训练了一个基于强化学习的探索模型(类似Fastbot的思路),它会自动:

  • 遍历App的所有页面
  • 触发各种广告场景(开屏、插屏、激励视频、信息流)
  • 记录每个场景下的表现

但和传统的随机Monkey不同,AI会有策略地探索——优先覆盖高风险路径、重点关注容易出问题的页面。

更关键的是,AI会自动判断结果是否正确。以前跑完兼容性测试,测试同学还得花大量时间看截图、翻日志、判断是不是bug。现在AI直接给出结论:通过/失败/疑似问题。

能力三:多设备并行,15分钟是怎么来的?

单台设备跑完一套完整的兼容性测试用例,大概需要20-30分钟。但我们有数百台设备同时跑

并行执行 + AI自动判断,总耗时 = 单台设备耗时 ÷ 设备数量 + 汇总时间

以我们现在的规模(200台真机+100台模拟器),15分钟出结果是完全可行的。

实际数据:我们最近一个版本跑了450台设备,覆盖Android 8-15、iOS 13-17,总耗时17分钟。其中AI自动判断通过率92%,剩下8%需要人工复核——相比之前2天全人工,效率提升看得见。

五、踩过的坑和解决方案

说几个我们真实踩过的坑,希望对大家有帮助。

坑一:AI有时候会“瞎点”

多模态模型虽然强,但在复杂页面上偶尔会误判。比如把关闭按钮识别成广告位,导致操作出错。

解法:加了操作置信度阈值——低于0.85的操作不执行,改为记录日志并跳过。宁可漏测也不要误报,误报会污染测试结果。

坑二:不同设备的响应速度差异巨大

低端机加载慢、高端机秒开,同样的等待时间在不同设备上效果完全不同。

解法:引入动态等待机制——AI实时监控页面状态,加载完成立刻进入下一步,不浪费一秒。同时设置超时上限,防止死等。

坑三:AI判定的“疑似问题”太多了

刚开始的时候,AI太敏感了——稍微有点像素偏差就报“疑似渲染异常”,导致大量误报,人工复核压力山大。

解法:建立了分层判定体系

  • 明显崩溃/闪退 → 直接判失败
  • UI异常(错位、遮挡)→ 标记为“需人工复核”
  • 轻微样式差异 → 自动忽略

同时用历史数据持续微调判定阈值,现在误报率已经从最初的35%降到了8%左右。

六、效果数据总结

说几个硬数据吧:

指标
优化前
优化后
单版本兼容性测试耗时
2天
15-20分钟
用例编写耗时
2小时/条
10分钟/条
设备覆盖率
50-80台
450台
漏测率
~15%
<3%
人力投入
3人/版本
0.5人/版本

最关键的变化:测试团队从“重复劳动的执行者”变成了“AI流程的设计者和监督者”。大家终于有时间去做更有价值的事——比如分析线上质量数据、优化测试策略。

七、给同行的一些建议

如果你也在做类似的探索,我有几点建议:

1. 不要一上来就追求全自动化

先找一个场景单一、边界清晰的模块试点。我们最开始只跑了开屏广告这一个场景,跑通了再逐步扩展。

2. 数据比模型重要

很多人一上来就研究用什么大模型,但其实高质量的标注数据才是瓶颈。我们在前期花了大量时间标注UI元素、整理操作路径,这些数据后来成了模型效果的基石。

3. 接受不完美

AI不是100%准确的,初期误报率可能很高。关键是建立人工复核的兜底机制,同时持续优化模型和规则。我们现在的8%误报率也是迭代了十几个版本才达到的。

4. 工具链要打通

单点AI能力解决不了问题,必须和CI/CD、设备管理、缺陷追踪系统打通。我们现在的流程是:代码提交 → 自动触发兼容性测试 → AI跑完自动出报告 → 严重问题自动建TAPD单。全链路自动化才是终极目标

最后说句掏心窝的话:AI不会取代测试工程师,但会用AI的测试工程师一定会取代不会用的。

我们这个方案不是什么黑科技,核心就是把大模型的理解能力 + 强化学习的探索能力 + 云真机的调度能力组合在一起。技术门槛没有想象中那么高,关键是想清楚自己要解决什么问题

本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。