测试行业大变革,人工智能引领下一代测试
经历过移动互联网繁荣时代,目前来看中国的移动应用生态已是非常庞大。从市场来看,多达上百个应用市场,APP相关产业已超千亿美元规模;从构成来看,移动应用生态的组成,包括移动用户、手机、开发商,以及超级APP和应用市场;从规模来看,移动用户规模巨大,手机版本众多,能统计到的开发者和真正有签名的开发商已超百万,还有其他未统计到的成千上万的移动APP;这些一起组成了规模庞大的移动应用生态。
事物往往是两面性的,我们在享受如此庞大的移动互联网带来的种种好处的同时也必须忍受与之相伴的不好的地方。因为整个移动应用市场是非常复杂的,就质量而言,虽然国内很多应用市场都号称做了非常严格的审查,但事实上,很多APP的应用质量都不尽如人意,而且很多都存在着严重的问题,北京大学计算机科学技术系副主任郭耀教授在NCTS中国云测试峰会上分享了目前移动应用市场的复杂性和面临一些问题:
中国移动应用生态很复杂;国内的应用更新不及时,导致用户在应用市场下载的应用很多版本都不是最新版;虚假应用占市场的平均比例是Google Play的20倍;多达80%的应用过多申请了权限;应用市场对恶意应用的审核具有延迟性。那么,对于此类问题如何处理呢?一是帮助用户更好地理解应用到底怎么用,二是对软件进行测试,当然想要最高效的解决这些问题,还需要一个更高效的智能化测试平台。
一、AI引领下一代测试,iTestin改写测试未来
在刚刚过去的第二届NCTS中国云测试行业峰会上,Testin云测总裁徐琨正式发布了全新AI测试产品iTestin,作为Testin云测人工智能战略中的重要一环,iTestin融合了目前测试领域顶尖的自然语言处理、文本识别、图标识别技术,全面提升测试产品的易用性和自动化效率,在提升脚本编写效率一倍的同时,将脚本的维护成本降低了一倍。在现场的发布环节,徐琨用自然语言在iTestin上现场演示AI+测试的真正能力,引起了现场观众的惊叹和称赞。使用iTestin的测试人员只需在界面中输入点击、等待、检查、长按、输入等自然语言的文字描述,后台的AI就能准确实时的在真机上进行完整无误的操作和相关指令。
iTestin真正神奇之处在于,仅半个小时就能教会一个从来不懂程序代码的人完整写完他人生第一个程序。基于手机的操作基本都支持,这包括action,部分后台的能力,等待,系统按键等等。这背后的操作依赖的是AI的识别能力;最重要的是OCR,OCR的准确度会直接影响到整个执行,因为本质上是看到界面,大部分操作是基于文字的,文字有不同类型的字体,不同样式,还有遮挡等等。通过OCR的技术,能够把热点的文字全部筛选,在iTestin后台可以像人一样去操作各种文字按钮,可以读懂整个页面的意思是什么。这是iTestin把系统的按键内置到AI的后台里面。
Testin云测用几年的时间把整个人工智能的技术结合到测试上, iTestin的核心,第一部分是在语言的编写部分,完全是基于自然语言,就是基于日常生活的点击,登陆,向左划,向右划等等,这让前端的操作会变得更简单;另外,在后台人工智能部分做了大量的工作,认识NLP语言,认识各种图形,比如“点击登陆”“向下滑动”这八个汉字,这也是iTestin自动化工具的两条操作语句。
图标这部分比较有意思,人类认识很多图标,但是让AI认识图标是蛮困难的事。Testin云测团队收集了几百万的图标,训练出这个模型,让它能认识通用的,近100种,随着数据越来越多,还可以让机器越来越聪明,计算机视觉可以把图形做更多的识别,可以预见的是,基于图像未来可以做很多很多的事情。
二、测试行业需要AI加持
对于软件测试行业来讲,移动互联网的发展和兴起为软件测试的发展带来了机遇的同时也带来了巨大的挑战。这不得不从本质问题说起,相对互联网时代之前的传统IT时代,软件通常研发周期较长,软件功能庞大,更新频率较低,软件是作为支撑企业业务发展的配套设施而存在的,之所以叫配套设施,也就是对于企业而言即使没有它,业务发展依然可以进行,无非是管理效率可能会受到一些影响。而来到移动互联网时代,从本质上来看,软件本身就是企业的商业模式的核心竞争力,不再仅仅是一个配套设施,而是核心设施,核心能力,其直接决定了在复杂多变的商业环境中,企业是否具备核心竞争力。
但是在传统的测试平台中,诸如脚本和框选目标控件等工作仍需要大量的人工介入,这远远满足不了目前的庞大的市场需求。在行业追求效率的引导下,以AI技术为核心的测试新模式成为了行业争相讨论和想突破的焦点,新技术、新方法、新思维、新未来成为了测试行业的变量。
目前来看,AI+测试已有成为业内共识的趋向,人工智能在测试行业的落地也誓将开启整个测试行业的新时代。来自阿里、搜狗、京东、埃森哲、VIPKID、平安集团、汽车之家、饿了么等众多行业翘楚都在NCTS中国云测试峰会上为大家分享了最新研究和测试实践。
三、如何打造全流程AI测试平台
北京大学计算机系博士李元春在做《强化学习在自动测试中的应用》时介绍了关于GUI测试相关的研究并指出,“将强化学习应用到GUI测试的难点主要是状态的表示和奖励函数的设计,即如何将交互界面中的图像、文本等多模态特征进行有效的编码,以及如何将测试的目标转化成对测试输入的奖励。”这其中包括基于深度学习的GUI测试和基于强化学习进行UI功能的测试的内容。
李元春提到虽然将深度学习和强化学习应用于测试有广阔的前景,但是目前想要达到大规模使用还有很长的路要走。难点一:测试这个问题十分复杂,目前的深度学习主要是拿图片或者文字作为输入,而UI是更为复杂的一种信息,既有视觉信息又有文本信息,现在没有特别好的模型或方法去捕捉UI上的特征。二:强化学习算法成功的领域往往都是游戏,例如强化学习可以把围棋解决得很好,一个重要的原因是,在游戏领域,Reward是比较明确的,但是在测试里面,想评估一个测试用例是好是坏,没有一个准确的指标,最后评估下来,每一个测试用例,不管是正确的还是错误的,得到的Reward都是非常相近的,这就导致强化学习模型很难区分正确和错误。要解决这些问题,一方面有研究挑战,一方面也有很多工程问题要解决,还需要学术和产业界共同努力去解决。
四、企业如何进行DevOps转型
顾宇在分享企业DevOps转型的经验时提到,“我不推荐企业在 DevOps 能力不足的情况下做微服务改造,因为企业在质量标准较低的情况下,缩短发布周期,提升部署频率是没有意义的。”
目前来看很多企业在完成微服务改造之后,其测试成本都增加了。原因是从前是单体应用,后面改成分布式应用,需要测试的点多了,服务和服务之间各种功能性测试和非功能性测试都要测试,特别是在SIT这部分,这部分增加成本会带来延缓交付周期的结果。企业在 DevOps 能力不足的情况下做微服务改造是不推荐的,微服务应当是 DevOps 成熟度高之后的必然结果;否则很多质量问题会导致人力成本和时间成本的大幅增加。
DevOps需要解决两个问题,第一是软件交付效率,第二是交付质量。质量和效率都很重要。如何提升呢?这就需要以下几点举措:
准确定义Bug;建立完善的需求文档,减少对接成本;打破DevOps组织墙,树立正确的DevOps测试观等。五、360搜索业务构建全自动化测试平台
360搜索测试总监彭兴强分享了360搜索业务如何通过CI/CD全流程自动化、功能、性能、接口测试自动化,再加上业务监控、线上产品质量的自动化分析、AB实验以及一套完善的数据分析系统来保障线上服务质量。
传统软件制作全流程是自发,自测,提测,冒烟测试;如果流程通不过就打回,冒烟测试结束就进入QA测试环节。而在全自动化测试的流程中,制作的验证是其中的一个基本功能,另外的功能是回归,功能、接口、模块,离线建库,性能测试,DIFF测试,兼容性测试等,由于线上可能存在不同的版本,版本上线之后,对当前版本是支持的,对上下版本的兼容需要进行测试,因此所有环节都是在自动化的过程中实现的。
360团队做的事情是将前面的所有部分抽象出来,都放在全自动化测试流程,编译打包,提测,冒烟测试和自动化测试,所有都放到一个全自动化测试流程里。
一个自动化测试平台包含接口自动化,服务端自动化,前端自动化性能和测试自动化。在自动化测试平台,针对每块业务都是有数据定制化的,因此开发不用关心数据,只要选择做什么业务,选择什么样的数据,点击确认就可以。360研制的自动化测试平台主要有以下几大亮点功能:
数据上传:有特定的数据去验证,可以自己上传需要的数据。
实时日志:如果测试需要观察实时数据的状况,有些性能测试不需要把整个测试做完之后再看结果,比如10分钟,20分钟,发现问题了可以停止测试,去排查问题,一个自动化测试平台是支持秒级的数据查看。
历史任务管理:指标变化情况,都可以在平台里进行查看。
进程监控:在特定的任务里面需要关注某些进程的情况,需要把进程名称填进去,可以通过平台察看。
六、AI在测试行业的应用和实践
1. AI模型测试探秘
融360高级技术经理艾辉在做《AI模型测试探秘》主题演讲时,分享了AI在金融科技的应用场景并指出,AI在金融行业的商业场景变现领域做的相对成熟,这主要得益于数据的质量,以及数据的丰富度,它们对模型的效果起着极其重要的作用。
模型测试的痛点都有哪些?第一是难,门槛很高,传统工程测试的方法不能完全的复用,二是抽象,模型测试是黑盒和强数据相关的,体现在问题定位难和排查问题时数据关联性强。
在打造AI产品质量体系分为线上和线下:线下三个模块,模型质量、数据质量、工程质量。线上做各种模型效果的监控,特征的监控,一致性监控的,覆盖率的还有业务表现的监控等。
2. 如何对线下测试进行智能化建设
阿里巴巴测试开发专家潘家腾在做《阿里妈妈在线下测试域的智能化建设》主题演讲时,分享了阿里妈妈在线下测试方面的实践,包括业务的现状与挑战,进入智能化的逻辑,以及如何实现线下测试的智能化。
线下功能测试的发展历程分为三个阶段,第一是大航海时代,特点是以人工测试为主,自动化程度不高;第二个阶段是工业革命时代,自动化程度非常高了,测试的框架也有了,加上持续集成的工具,比如阿里内部的一些平台,共同组成了很高的自动化方式。但是,由于测试技术的门槛非常高,开发无法参与进来,大部分工作都由测试来进行。在阿里内部,有不少团队还是处于高自动化的时代,但是还没有进入智能化的时代;第三阶段是智能化的时代,特点是产品化、可视化,以及部分的智能化,大大的提高效率。团队尝试着让整个测试工作更简单,通过降低门槛,让开发、算法或者其他同学都能够参与进来。这个阶段主要是向测试平台或者测试中台的演进。
智能化技术非常重要,但是如何结合测试场景是更重要的事情。功能测试域主要分为三个部分,第一是case如何写,就是用例生成,第二是用例回归,也就是说写完case之后快速的迭代这些case,第三是一旦case测试失败之后,怎么去做智能排查,这三部分智能化都有所体现。除此之外智能化技术还有:用例智能推荐,数据智能推荐,智能冒烟回流技术,智能回归技术,智能排查反馈等部分。
3. DevOps +AI
网易传媒测试总监张涛分享了网易新闻在最近一年里在DevOps方面的实践,并指出,“DevOps落地的过程也是一个提升测试价值的过程,从关注服务可用性到关注系统的可测性和稳定性,在研发、测试和运维全流程中发挥中枢作用。”
张涛在分享DevOps提升迭代效率的思路和方法时,提出了传统DevOps火车模式的明显问题,那就是转向班车模式,班车模式改变了集中需求收集和集中的研发测试的方法,有新的需求随时去提交,随时去评审,随时做研发和测试;再之后就是评估时间周期是否合理,网易新闻的评估周期是固定三周一个迭代。
另一个就是联合项目管理团队一起做的OverMind平台,其最大的作用就是从需求到研发,到上线,到测试,把各个环节常规所需要用到的一些平台和工具都串联打通。比如需求的管理,研发所使用的分支管理工具,以及测试的工具,上线的平台,都进行串联打通。网易新闻团队测试时也把Testin云测全新AI测试产品iTestin提供的自动化的能力集成到了整个的流程里面。
通过机器学习测试加持,DevOps实现了对全链路的监控,另外在如何梳理服务的依赖关系和链路的追踪方向上提供了方法,这一流程可以把整个请求的链路串联起来。另外具备链路调用性能评估,可监测每一个请求的性能是怎样的,这能够快速的发现性能上的一些瓶颈;这些就是全链路监控整体的思路。
4. 利用AI快速定位Bug
饿了么测试开发专家邱化峰在做《人工智能在Bug定位中的应用》主题演讲时指出,“企业想获得人工智能带来的便利,首先要制订相对应的标准,如果没有这个标准,按照固定的算法,则很难实现。”
首先,有些人专门维护了所有关于java的Bug,这些Bug在修复里时会生成一些数据,告诉你哪个方法在第几层,哪个方法哪一行出现了什么错误。如果想使用人工智能带来的便利,首先要制订一些相对应的标准,如果没有这个标准,很难按照固定的算法来得到想要得到的东西。首先邱化峰对工具做了介绍,二是讲解了Bug定位的原理和方法,第三,是使用这些工具之后应用从哪些方面做具体的落地。
众所周知的八二法则在测试行业里可以理解为,80%的Bug来自于20%的代码,针对这个理论,需要对20%的代码做case等级的分类。软件迭代的版本越多,开发和测试不断在维护自己自动化的脚本,包括单元测试的脚本,Bug就会慢慢的越积越多,需要用空间换时间看case执行的情况。除此之外,还可以用等级分类的方法把这些case标志出来,可以减少一些空间或时间。
七、AI赋能测试行业
那么AI时代,测试开发怎么做技术的储备和转型呢?AI的学习,需要经历从高数基础到机器学习的过程。还有就是掌握数据分析和挖掘能力,做数据质量分析本质上就是做数据分析,大量相关的理论和工具都需要熟练的用到。这也需要测试行业的人员不断去积累,而且对于深度学习,强化学习,复杂度就更高。
中国测试技术的转型和革新也是中国互联网飞速发展的缩影,从最初的人工手动测试,到后来的工具测试,到目前市面上主流的自动化测试,整个行业已经进入到了一个成熟和稳定的阶段,尤其是云测试模式的出现,将整个行业又推到了新的高度。再加上当前人工智能技术的发展速度,远超出了我们想象。可以想象地到,在未来,测试产品会更智能,更简单,更易用。
这一切的一切让我相信,随着AI技术的逐渐成熟,下一代测试正在到来。
【NCTS峰会回顾】北大郭耀:移动应用生态系统的现状与挑战https://developer.51cto.com/art/201911/606776.htm
【NCTS峰会回顾】Testin徐琨:AI引领下一代测试,iTestin改写测试未来https://developer.51cto.com/art/201911/606770.htm
【NCTS峰会回顾】阿里巴巴潘家腾:阿里妈妈在线下测试域的智能化建设https://developer.51cto.com/art/201911/606771.htm
【NCTS峰会回顾】360搜索彭兴强:360搜索质量保障体系介绍https://developer.51cto.com/art/201911/606778.htm
【NCTS峰会回顾】融360艾辉:AI模型测试探秘https://developer.51cto.com/art/201911/606775.htm
【NCTS峰会回顾】网易张涛:网易新闻DevOps实践及在AI测试中的应用https://os.51cto.com/art/201911/606783.htm
【NCTS峰会回顾】顾宇:DevOps的交付质量从需求质量开始https://os.51cto.com/art/201911/606781.htm
【NCTS峰会回顾】北大李元春:强化学习在自动测试中的应用https://developer.51cto.com/art/201911/606772.htm
【NCTS峰会回顾】饿了么邱化峰:人工智能在Bug定位中的应用https://developer.51cto.com/art/201911/606773.htm