专栏文章 一款腾讯都在使用的自动化测试-QTA

匿名 · 2019年01月25日 · 最后由 TOM 回复于 2023年02月16日 · 7951 次阅读

以这篇文章为开端,带你们初步了解 QTA 的发展史,QTA 是什么,以及 QTA 的未来规划。

QTA 是什么?

QTA 是一个跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。在腾讯里,QTA 是腾讯元老级的自动化测试项目,从研发至今已走过 8 个年头,工具的能力也从一开始仅支持 Windows 端的 UI 自动化测试,现在扩展到 Android、iOS、Web、后台、云服务的测试自动化。QTA 也是腾讯内部使用十分广泛的自动化测试框架,包括 PCQQ、手机 QQ、空间、音乐、腾讯云等产品测试的自动化,目前都是使用 QTA 的方案。
在腾讯开源的历史中,QTA 的 “辈分” 也很高,于 2016 年开源的 QTA,是腾讯最早期的开源项目之一,目前存放于三个 Github 仓库下:
QTAF(自动化基础库):https://github.com/Tencent/QTAF
QT4A( Android UI 自动化):https://github.com/Tencent/QT4a
QT4i( iOS UI 自动化):https://github.com/Tencent/QT4i

业界自动化方案对比

提起自动化,你可能会头疼于五花八门的各个框架,这时对比业界已有自动化框架的优缺点就很有必要了。QTA 支持 Android/iOS/Web/PC/JS 等各端的自动化,以 Android 端为例,Android 端的 UI 自动化业界也有不少优秀的自动化框架,如 Appium、UIAutomator 等,它们在不断的优化下也支持越来越多的特性,如跨进程跨应用等,但 QT4A 在此基础上,还实现了更多的功能,详细对比如下:

再以 iOS 端为例,业界也有如 Appium、Macaca 等比较好的自动化工具,不过 QT4I 在此基础上仍然实现了更多的特性,如下:

如上,QTA 的 Android 端/iOS 端自动化框架均力求做得更通用,满足更多场景的需求。

举例说明

QTA 团队在腾讯内部积累了丰富的实践经验,在众多业务团队的建设和运营下,形成了可持续执行的自动化测试流程,包括 QQ、QQ 空间、音视频 SDK、Now 直播、企鹅电竞、腾讯视频、腾讯云等产品项目。
对于目前已经开源的 QT4A(Android 自动化测试),在腾讯内部已经落地建设 1.7w+ 的自动化脚本。平均每天执行自动化用例 2.9w+ 个,测试任务数 700+ 个。为服务测试执行的需要,QTA 团队已经维护了 500+ 的执行节点,并构建了 750+ 个 Android 虚拟机的集群。对于 QT4i(iOS 自动化测试这块),目前已经累计用例数 6k+,每周执行任务总数 600+,平均每天执行 3k+ 个测试用例。

以应用深入的手机 QQ 产品为例:

QQ 是公司元老级的项目,也是在 QTA 自动化中应用比较成功的案例,到目前为止,AndroidQQ 系统测试用例数有 1000+,每天通过率基本稳定在 90% 以上,同时每天 CI 自动触发 BVT 测试,产品无功能 bug 情况下,通过率基本为 100%,为自测、灰度、发布等各个环节把关。而其中的 Android QQ 会员项目每天执行任务约为 270 个,大部分任务都在 10min 内执行完成。

后续计划

在 QTA 的 UI 自动化测试的体系中,目前还有 QT4W、QT4C 和 QT4Mac 正在筹备开源,三者分别输送了 Web、Windows 和 Mac 端的 UI 自动化测试能力。特别是 QT4W——Web 自动化测试的能力,同时提供 QT4i 和 QT4A 的自动化测试中支持 Web 能力的基础,将很快与开发者面见面。针对社区反馈的最多的声音——Python 3 的兼容性改进,python3 QT4i、QTAF 已经完成,QT4A 即将完成。
长期来看,QTA 团队正在研究 AI 和算法的方式来增强自动化的能力和降低自动化维护的成本,提升工具自我迭代的能力,希望逐步优化后开源。
此外,针对开源研发流程,QTA 团队也于近期做了一次梳理。新的研发模式,让社区版的 QTA 和腾讯内部的 QTA 版本在代码管理上清晰、流畅,这有助于让内部的新特性能够更快地同步到开源社区的代码库中,来自开源社区贡献者的代码也能够顺利合入。在开源社区的维护上,伴随着腾讯业务团队上云节奏的加快,QTA 开发和维护团队在不断壮大,他们将一同为开源用户提供支持。欢迎大家通过 Github Issue 和 QQ 群向 QTA 团队提出改进建议,一同建设更加好用的自动化测试工具!

感兴趣的同学可以加入 QQ 群和公众号交流


如果你想要了解更多资讯,欢迎关注我们的微信公众号😀 我们会定时向大家推送团队同学分享的经验文章哦。

共收到 21 条回复 时间 点赞

加油。我好像记得发过一次的

真的是一层一层封装下来 ,文档写得很详细啊

匿名 #4 · 2019年01月28日
codeskyblue 回复

是的,以后都会用团队账号发相关文章,欢迎持续关注。😀

匿名 #5 · 2019年01月28日
linpengcheng 回复

对的,为了让大家能够尽快上手,我们的文档尽可能写的更详细些。有任何疑问欢迎通过 Issue 或 QQ 群与我们沟通。

请问,可以用做于微信小程序的 UI 自动化测试吗

期待,你们和 airtest 来一场技术 pk 吧,谁更好用呢

匿名 #8 · 2019年02月01日
liupeng 回复

android 可以支持。

匿名 #9 · 2019年02月14日
我去催饭 回复

airtest 在录制回放和体验等方面还是值得 QTA 借鉴和学习的,但是我们在兼容性和控件识别能力,如图像和 ai 识别等,也有自身的优势,欢迎体验了解😀

必须顶一下

凡是在 H5 页面的操作都可以吗?

匿名 #12 · 2019年02月26日
susun 回复

目前支持系统 Webview。

大厂开源看来是趋势,希望测试行业越做越好。

很不错,看下

想问下做每款浏览器最新版本的测试,QT4W 合适吗?它对 webdriver 有依赖吗?跟 selium 有什么区别?

平均每天执行 3k+ 个测试用例,这么多脚本你们是怎么维护的呢? 界面变了,不是得经常改吗?

@qtateam QT4W 和 QT4Mac 计划什么时候能开源?

qt4s 什么时候开源啊 在线求开源

这个可以对目前 PC 端 QQ 进行自动化吗,因为是代码自绘 UI 的

可以无线连接么

ios 真机可以无线连接使用么

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册