QTA是什么
QTA是一个跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。在腾讯内部,QTA是腾讯元老级的自动化测试项目,从研发至今已走过8个年头, 工具的能力也从一开始仅支持Windows端的UI自动化测试,现在扩展到Android、iOS、Web、后台、云服务的测试自动化。QTA也是腾讯内部使用最为广泛的自动化测试框架,包括PCQQ、手机QQ、空间、音乐、腾讯云等产品测试的自动化,目前都是使用QTA的方案。
在腾讯开源的历史中,QTA的“辈分”也很高,于2016年开源的QTA,是腾讯最早期的开源项目之一,目前存放于三个Github仓库下:
- QTAF(QTA Framework):
https://github.com/Tencent/QTAF
(点击文末阅读原文直接访问) - QT4A(Quick Test for Android):
https://github.com/Tencent/QT4a - QT4i(Quick Test for iOS):
https://github.com/Tencent/QT4i
QTAF (QTA Framework)是QTA的基础框架,包括testbase和tuia模块,QT4A和QT4i分别是面向Android和iOS的UI测试自动化测试解决方案。
QTA的优势
UI自动化的ROI问题这一业界共识的难题——除了可测性,UI测试自动化工具本身设计和使用本身也十分有挑战,许多同行因为这些问题,放弃了或抵触使用UI自动化测试。
QTA团队在腾讯内部积累了丰富的实践经验,在众多明星业务团队的建设和运营下,形成了可持续执行的自动化测试流程,包括QQ、QQ空间、音视频SDK、Now直播、企鹅电竞、腾讯视频、腾讯云等产品项目。
对于目前已经开源的QT4A(Android自动化测试),目前在腾讯内部已经落地建设1.7w+的自动化脚本。平均每天执行自动化用例2.9w+个,测试任务数700+个。为服务测试执行的需要,QTA团队已经维护了500+的执行节点,并构建了750+个Android虚拟机的集群。对于QT4i(是iOS自动化测试这块),目前已经累计用例数6k+,每周执行任务总数600+,平均每天执行3k+个测试用例。
其中,以应用深入的手机QQ产品为例:
AndroidQQ系统测试用例数有1000+,每天通过率基本稳定在90%以上,同时每天CI自动触发BVT测试,产品无功能bug情况下,通过率基本为100%。除此之外,还有其他上线前验证测试,Android QQ会员项目每天执行任务约为270个,大部分任务都在10min内执行完成。
(QT4A的演示Demo)
iOS QQ功能测试用例数有200+,每天日常执行用例数600+,其中,每天CI自动触发BVT测试,在产品无bug的情况下,通过率保证在95%以上。iOS QQ会员项目全部用例数300+,每天日常执行用例数500+,大部分任务都在30min内执行完成,平均每个任务需要约10个执行机节点的支持。
(QT4i修改设备名称demo)
QTA在腾讯内部广泛应用,也积累了不少经验和成果,QTA团队也希望这次开源的更新,能向业界分享自动化测试的方法论和实践经验;以这次开源为基础,和业界同行一起分享和共同建设一个能在工程上真正落地使用的UI自动化测试工具。
重大版本更新
作为第一批开源的项目,在很长的一段时间内,QTA团队由于职能定位的原因,对开源项目的参与力度不够。这次,腾讯公司组织架构调整,QTA团队成为新成立云与智慧产业事业群(CSIG)的一份子,后续QTA会以腾讯云为基础,助力产业互联网的客户,为QTA开源带来新的活力。
为此,QTA于进行了一次重大的开源版本更新,将内部已经在持续使用的新特性同步开源,包括:
- QTAF新增资源管理模块、测试计划功能,让QTA框架能更方便的和其他测试执行系统集成;
- QT4A支持了非root的版本,支持Android6以上的系统,支持64位App;
- QT4A优化了截屏效率,同时新增屏幕录制的功能;
- QT4i优化模拟器Agent启动方式,以及支持最新的iOS12和XCode10;
- QT4A和QT4i支持pip安装,简化安装部署;
- QT4A和QT4i完善了使用和设计文档。
后续的计划
在QTA的UI自动化测试的体系中,目前还有QT4W、QT4C和QT4Mac正在筹备开源,三者分别输送了Web、Windows和Mac端的UI自动化测试能力。特别是QT4W——Web自动化测试的能力,同时提供QT4i和QT4A的自动化测试中支持Web能力的基础,将很快与开发者面见面。针对社区反馈的最多的声音——Python 3的兼容性改进,QTA团队也正在积极开发中。
长期来看,QTA团队正在研究AI和算法的方式来增强自动化的能力和降低自动化维护的成本,提升工具自我迭代的能力,希望逐步优化后开源。
另外还有一个可以关注的是,QTA正在和腾讯云Tencent Hub(开发文件储存和DevOps工作流编排服务)团队的合作中,将QTA的能力整合在Tencent Hub中,目前已经在联调验证阶段,QTA的社区用户,很快可以在腾讯云上体验QTA测试自动化的服务了。
此外,针对开源研发流程,QTA团队也于近期做了一次梳理。新的研发模式,让社区版的QTA和腾讯内部的QTA版本在代码管理上清晰、流畅,这有助于让内部的新特性能够更快地同步到开源社区的代码库中,来自开源社区贡献者的代码也能够顺利合入。在开源社区的维护上,伴随着腾讯业务团队上云节奏的加快,QTA开发和维护团队在不断壮大,他们将一同为外部开源用户提供支持。欢迎大家通过Github Issue和QQ群向QTA团队提出改进建议,一同建设更加好用的自动化测试工具!