以这篇文章为开端,带你们初步了解 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 团队提出改进建议,一同建设更加好用的自动化测试工具!