腾讯自动化测试的AI智能
引子:
本文是林奕在腾讯 DevDays 2018 分享内容的脱敏整理,介绍了 CSIG 测试开发中心(前 SNG 测试开发中心)在自动化测试领域所做的智能化尝试。

大致分成下面几部分:
- 使用AI面对和解决的问题是什么
 - AI带来的曙光
 - 使用了哪些技术,效果是怎么样的
 - 未来展望
 
UI自动化测试的问题
从业务角度看自动化测试,看到的东西仅仅是冰山浮在水面上的一小部分,而在自动化测试深入的过程中,会发现有很多看不见的坑在冰山下面。
1 自动化测试的复杂度障碍
举一个例子来说明, UI自动化测试工具首要要解决的是识别UI中的各个元素,因为安卓、iOS、Windows这样的操作系统有非常不同的表现逻辑,导致测试工具要针对不同的平台区分不同版本的工具,QTA测试工具也是按照这种结构去划分的。这是在冰山之上很显而易见的部分。

(冰山之上)
但是随着新技术的发展,越来越多的研发框架引入,如网页渲染、UI引擎甚至3D渲染引擎接连出现。这些数量繁多的开发框架,因为实现原理不同,在自动化测试过程中都会出现很多问题。

(冰山之下)
因为技术繁多,会让负责自动化测试工具的同学很受挫折,每一项技术都需要针对性的方案去解决,又面对非常多的场景要考虑兼容通用。
如下面的例子,一个软件界面,在人眼中看到的是完整的样子,但在UI自动化工具眼中,就要拆分成多个不同的模块使用不同技术来识别。

这是一个混合客户端的例子,但在现实中往往会发现,在一个界面中,经常会混合很多种渲染技术。每当一个新的UI渲染技术出现,自动化工具都要进行适配,这样下来不仅成本会非常高,也是一件很难做兼容的事情。这样就给自动化测试工具带来了无尽的挑战,是自动化工具开发遇到的困难点。
2 自动化测试同质元素识别障碍
第二个例子是一个闹钟应用的界面,但是在控件树上看起来,却因为区分不出内容,而只能把每一个时间元素同等对待。工具没有好办法来识别哪一个条目是北京的闹钟。

虽然通过无障碍化产品设计的方式,可以部分解决这一问题,但取决于产品的定位,并不是每一个产品都会支持到无障碍化。除了无障碍之外,出现了很多例如React之类的响应式布局,开发在写代码时,很难预料实际运行时的UI结构,更难在开发时提供给测试使用的UI数据结构。这样一来,又给自动化测试增加了难度。
3 自动化测试成效问题
在谈到自动化测试时,很多同学提到投入产出比。成效是推行自动化测试很重要的问题。

如上图,纵坐标是自动化测试的投入度,横坐标是随着产品演进过程的投入时间。自动化测试有两种投入方式,分别是脚本式和录制回放式。脚本式在项目初期投入较高,而后会随着产品的功能逐渐完善而逐渐降低维护成本。但业务往往由于脚本式自动化测试初期投入过高,而选择初期比较简单上手的录制回放式方案。而录制回放式方法由于界面变动就需要重新录制脚本,导致后续版本要投入与之前相同的工作量,而无法最终收敛。
另外一种场景,业务选择了脚本式自动化测试方案。但是投入并不彻底,导致随着功能开发迭代,自动化测试脚本的维护工作量并不收敛。这代表这次自动化测试的实施是失败的。如下图:

这其中的原因,最可能是没有做好自动化测试的变更管理——变化是影响UI自动化测试成效的关键因素。
控件识别和定位技术是自动化测试技术的关键难题
把以上三个问题做一下归纳,会发现自动化测试一个核心需要攻破的难点,那就是控件识别和定位。它是影响自动化测试成效的关键因素之一。
AI带来的曙光
QTA所做的AI尝试
QTA是在SNG跑了很多年的自动化测试平台,已经接入了170个活跃的公司产品和项目。仅2018年Q1,就自动化执行了一百四十万个测试任务、五千万个用例,按成时间平均每秒就有3个用例被执行。这些数据基础,为QTA引入AI技术提供了可靠的数据来源。
QTAMetis就是为了解决控件识别和定位技术这一关键难题,而引入AI优化能力。

(传统自动化测试识别和定位)

(Metis AI自动化测试识别和定位)
应用成熟的目标检测技术,可以看到Metis已经成功的把对象定位出来。而后通过分类器,把每一个元素分类和识别出来,例如哪些是可以点击的按钮,哪些是一个图片区域。然后通过OCR技术,把原件中对应的文本提取出来;如果是Logo,则通过图片的分类器把对应的Logo类型分类出来,而映射为特定的文本。
可以看到,这一实现结果和人看到的是一样的,与人类的认知相仿。已经基本脱离了APP本身的代码实现,也不需要再关注应用后面的UI实现技术,可以解决文章前面所述的几个问题。
同时还有另一个好处,比如某一个控件在新版本换了位置,对自动化测试没有任何影响。在成效方面,也减少了变更时增加的维护量。
在这种技术下,自动化测试脚本变得简单化:

(更接近自然语言的自动化测试脚本)
(脚本所实现的自动化测试效果,视频速度减慢15倍)
实际测试的速度会比视频快很多,虽然过程中出现一些误报,但80%的情况下已经能够满足自动化的要求。

(传统UI自动化测试与Metis的区别)
可以看到,AI已经可以使自动化测试实现一个质的飞跃。

但就像电动汽车尚未在马路上普及一样,在使用的时候还有若干个问题。
比如下图的界面,联系人有两个,容易导致AI混淆而进行误操作。

我们人之所以知道用哪个联系人,是因为人类有先前的知识积累,但是AI并没有类似的经验,导致没法分辨。
第二个问题,并不是全部的Logo都能识别出来,特别对于业务自定义的Logo和图案,识别的成本非常高。例如下图中用户自定义的厘米秀按钮:

为了解决这些问题,就像电动汽车很多车型采用混动技术一样,QTA采用了传统方式和Metis混用的方法,一定程度上补足了AI暂时性的不足。用户可以任意搭配传统和AI的方式。

第二种方式是把AI和算法混合,例如厘米秀,通过维护一系列相近的图片,使用模式匹配技术进行图片识别和认定,还是有一定的工作量会影响到自动化测试脚本编写者的使用体验。

小结一下QTA Metis所应用的主要技术:
第一是由海量脚本UI逻辑数据进行的大数据;第二是AI对象识别技术,包含OCR以及图像的分类;第三是AI目标检测技术,实时的检测每一个对象,并对每个对象进行分类。经过如上技术,让UI自动化测试“看得见”。
CSIG研发工具体系
QTA是 CSIG 的研发工具体系中的一部分,负责自动化测试,CSIG 体系中还有很多有用的工具,比如做代码扫描的CodeDog,以及致力于DevOps打通的持续集成流水线QCI等,也欢迎大家深入了解。

(CSIG 研发工具体系)
作者:林奕
腾讯 CSIG QTA 测试开发平台负责人
负责 BG 业务自动化测试落地
腾讯自动化测试的AI智能的更多相关文章
- 腾讯毛华:智能交互,AI助力下的新生态
		
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲人:毛华 腾讯云语音云总经理 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广 ...
 - AI智能外呼机器人网络拓扑结构笔记
		
最近开发了一套AI智能外呼机器人系统,系统主要有3部分组成:web管理平台:呼叫机器人:SIP软交换.具体网络拓扑结构如下图: 三部分主要功能如下: 1.web管理平台:话术管理.任务管理.线路管理. ...
 - 用电销机器人让电销企业迈入AI智能时代
		
2019年是AI智能快速发展的一年,有非常多的企业已经用AI智能代替原有的传统员工做重复性高的工作,就拿销售行业来说,为了让电销员工提升工作效率,拥有更多的成单,大部分有电销岗位的公司都会把重复率较高 ...
 - AI智能皮肤测试仪助力美业数字化营销 实现门店与用户双赢局面
		
当皮肤遇到AI智能,会有怎么样的火花呢?随着生活水平的提升,人们对肌肤保养护理的需求也越来越高,人要美,皮肤养护也要更精准,数字化必将成为美业发展的新契机.新机遇下肌肤管家SkinRun为美业客户提供 ...
 - 人工智能AI智能加速卡技术
		
人工智能AI智能加速卡技术 一. 可编程AI加速卡 1. 概述: 这款可编程AI加速器卡具备 FPGA 加速的强大性能和多功能性,可部署AI加速器IP(WNN/GNN,直接加速卷积神经网络,直接运行常 ...
 - AI 智能写情诗、藏头诗
		
一.AI 智能情诗.藏头诗展示 最近使用PyTorch的LSTM训练一个写情诗(七言)的模型,可以随机生成情诗.也可以生成藏头情诗. 在特殊的日子用AI生成一首这样的诗,是不是很酷!下面分享下AI 智 ...
 - 为 “超级大脑”构建支撑能力,腾讯云聚焦AI技术落地
		
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月24日,以"无界数据.无限智能"为主题的2018腾讯"云+未来"峰会AI大数据分论坛在广州拉开帷 ...
 - 36氪首发 | 「myShape」完成千万级人民币 Pre-A轮融资,推出 AI 智能健身私教
		
无需任何可穿戴设备. 36氪获悉,myShape(原Shapejoy)已于近期完成千万级人民币的Pre-A轮融资,由天奇阿米巴领投,远洋集团.七熹资本以及老股东跟投.过去 myShape 曾获得元迅资 ...
 - 新零售下的 AI智能货柜
		
公司有个智能货柜,通过微信扫码开门,拿货,自动扣款,挺智能的.还不错.研究一下原理,网上查了一下. 文章简介: 目前新零售风刮的蛮大,笔者进入该领域近一年,负责过无人便利店.智能货柜.智慧商超等产品, ...
 
随机推荐
- JS 特效三大系列总结
			
一. offset系列 1. offset系列的5个属性 1. offsetLeft : 用于获取元素到最近的定位父盒子的左侧距离 * 计算方式: 当前元素的左边框的左侧到定位父盒子的左边框右侧 * ...
 - oracle_(第一课) 安装oracle数据库
			
首先去官网下载两个架包链接如下:官网链接 第一步:将两个架包解压到同一个database目录下.如截图所示: 第二步:打开setup应用程序 打开后就到了下面这个页面 第三步:配置安全更新 环境变量配 ...
 - CHINA SHOP 2019 | 奇点云“云+端”产品及解决方案赋能线下零售
			
第二十一届中国零售业博览会(CHINA SHOP) 在山东青岛世界博览城盛大开幕 作为CHINA SHOP的老朋友 奇点云自然不会缺席 China Shop逛展直击灵魂“双拷问”: No.1 今年CH ...
 - i春秋web作业2.24
			
Web安全工程师(入门班) [全国线上入门班53期]课后作业 2020-2-24 DorinXL 分别尝试安装一个Windows和Linux操作系统 想要在虚拟机上装系统,首先需要下载对应的镜 ...
 - ionic3 设置状态栏背景颜色
			
this.statusBar.styleDefault(); this.statusBar.overlaysWebView(true); this.statusBar.backgroundColorB ...
 - EXAM-2018-8-10
			
EXAM-2018-8-10 F 突然卡了一会的水题 M 这题有点坑 考虑到一个数列的第一个数肯定会有 我们可以贪心的认为最优的方案是一个数列的第一个与另一个数列所有数的和.但是很容易找到反例 1 2 ...
 - Date类与SimpleDateFormat类中parse()方法和format()方法
			
package ppt11util类; import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...
 - Oracle-PL/SQL语句
			
1.PL/SQL 2.存储过程,函数 3.java中调用存储过程和函数 4.触发器 1 PL/SQL 1.1什么是PL/SQL? n PL:Process Language n PL/SQL是or ...
 - [LC] 293. Flip Game
			
You are playing the following Flip Game with your friend: Given a string that contains only these tw ...
 - spring mvc +@Valid +@RequestBody 来做参数校验返回400,并且不显示具体message 如何解决
			
参考文档: https://www.oschina.net/question/115867_2282711 谢谢原作者