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

2019-04-08  阿呆 

以这篇文章为开端,带你们初步了解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群交流






640°/6403 人阅读/0 条评论 发表评论

登录 后发表评论