阿里妹导读:近几年人工智能、机器学习等词漫天遍地,彷佛有一种无AI,无研发,无AI,无测试的感受。有人说:不带上“智能”二字,都很差意思说本身是创新。咱们先暂且不评论对错,只探讨这背后值得咱们思考的问题。
在测试领域,人工智能和测试是什么关系?为何测试领域会谈及人工智能?若是测试工程师不懂AI,是否有将来,测试人员该如何看待“AI测试”?在软件质量保障中到底应该如何按部就班的切入这一话题?业界在此领域目前现状是怎样?带着这些问题,阿里高级测试开发专家汪维但愿借此和你们作一些交流和探讨。git
借用一幅图先让咱们快速来回溯一下测试变革所经历的几个不一样的时期,从最先期的纯手工测试,随着整个IT技术的发展,测试也历经了很多的变革,每一次变革咱们不难发现侧重点都有所不一样。web
从最初的验证软件的可工做状态,到强调释放生产力的自动化诉求,从封闭式的自动化能力到基于社区模式的开放式能力建设,再到从更加全面的研发流程体系来构建的持续集成的自动化能力,咱们不难发现每次变革背后彷佛都有一个核心词在推进,那就是“效率”。但这个效率又有所不一样,就是不一样阶段对于效率在逐渐从单点效率往系统性效率迈进。服务器
若是咱们认为前边四个阶段都是基于规则为核心的测试,而将来则会打破这种模式,推进这个核心改变的模式可能主要来源两个方面,第一是研发技术的升级,第二是研发模式的更加敏捷和分布式开发,这二者都打破了以规则为核心的测试理念。架构
由于咱们可能面对更多的研发人员,更复杂的研发场景,更复杂多变的应用系统,在此基础上便催生了对于软件测试新的思考,那即是如何让软件测试变得更加的“Smart”,这即是咱们正在经历的时代,不过很不幸的是,咱们可能大多数状况下测试还不够“Smart”,颇有可能咱们在某些状况下咱们还处于“1980-1990”的时代,我想这也是测试人员之痛。机器学习
对于软件测试而言,其实互联网的发展和兴起对软件测试的发展带来了巨大的挑战,这不得不从本质问题提及,相对互联网时代以前的传统IT时代,软件一般研发周期较长,软件功能庞大,软件更新频率较低,软件是做为支撑企业业务发展的配套设施,之因此叫配套设施,也就是对于企业而言及时没有这个配套设施,业务发展依然能够进行,无非是管理效率可能会受到一些影响,而互联网时代,其本质上软件自己就是企业的商业模式的核心能力,再也不仅仅是一个配套设施,而是核心设施,核心能力,其直接决定了在复杂多变的商业环境中是否具有核心竞争力。分布式
所以对于软件不管是在研发模式、交付模式上都提出了更高、更快的要求,“敏捷”研发思想和模式应运而生,敏捷的本质是为了得到更快的Go To Market的能力,从而让企业能得到更快的商机,在敏捷模式下,自己是一种好事,这种模式下须要软件更快的交付能力,而不是等着专业的软件测试人员慢吞吞的进行功能验证。工具
若是不是等着专业的软件测试人员进行测试,那还能谁来参与测试?开发人员?可是开发人员测试本身的软件还并无成为主流,大多数开发人员不会写测试来测试本身的代码,他们选择手工测试或者等待专业的测试人员来测试他们的软件,从而保证软件可正确运行。布局
这正是测试面临的挑战,如何能让研发能参与测试?很不幸的是,目前AI在此领域还不能帮助太多,但也并不是彻底不能作什么,在理解这个问题以前,我以为有一个很好的问题,就是咱们不妨来思考一下自动化测试的6个层次与人工智能的关系。单元测试
什么是自动化测试的6个层次?这6个层次是我目前看到的对于AI和自动化测试相对清晰的一个抽象,先简单介绍一下这6个层次的来源,这是由Applitools 的高级架构师 Gil Tayar在 Craft Conference 2018上介绍他们如何将 AI 技术应用到自动化测试的内容中提到的6个层次,分别为:学习
层次一
彻底没有自动,你须要本身写测试!
层次二
驾驶辅助——AI 能够查看到页面,帮助你写出断言。你仍是要本身写“驱动”应用程序的代码,可是 AI 能够检查页面,并确保页面中的指望值是正确的。在这种模式下,软件测试工程师须要本身用传统技术解决流程驱动的问题,但无需在脚本中作Expectation的校验或者无需用脚本方式写Check Point,而把校验的工做交由AI来完成,AI技术在此过程当中核心起到辅助的做用。
层次三
部分自动化——虽然能分辨实际页面和指望值的区别这一点已经很好了,可是第二层次的 AI 须要有更深层的理解。好比说,若是全部页面都有相同的变动,AI 须要认识到这是相同的页面,并向咱们展现出这些变动。
进一步来讲,AI 须要查看页面的布局和内容,将每一个变动分类为内容变动或是布局变动。若是咱们要测试响应式 web 网站,这会很是有帮助,即便布局有细微变动,内容也应该是相同的。这是 Applitools Eyes 这样的工具所处的层次。在这种模式下,AI逐渐具有了贯穿上下文的能力,若是相对层次二而言,层次二停留在”点“上,层次三模式下的AI已经具有了”线“的辅助能力。
层次四
条件自动化——在第三层,软件中检测的问题和变动仍然须要人来审查。第三层的 AI 能够帮助咱们分析变动,但不能仅仅经过查看页面判断页面是否正确,须要和指望值进行对比才能判断。可是第四层的 AI 能够作到这一方面,甚至更多其余方面,由于它会使用到机器学习的技术。
好比说,第四层的 AI 能够从可视化角度查看页面,根据标准设计规则,例如对齐、空格、颜色和字体使用以及布局规则,判断设计是否过关。AI 也能查看页面的内容,基于相同页面以前的视图,在没有人工干预的状况下,判断内容是否合理。在这种模式下,AI逐渐具有了自我学习的能力,能从”面“上进行辅助自动化,但这实现起来很是的困难,目前相对不够成熟。
层次五
高度自动化——直到如今,全部 AI 都只是在自动化地进行检查。尽管使用自动化软件,仍是须要手动启动测试,须要点击连接,而第五层的 AI 能够自动启动测试自己。AI 将经过观察启动应用程序的真实用户的行为,理解如何本身启动测试。这层的 AI 能够编写测试,能够经过检查点来测试页面。
但这不是终点,它还需观察人的行为,偶尔须要遵从测试人员的指令。在这种模式下,相对前边的几种层次,这个层次的AI已经摆脱了人工”驱动“的模式,核心改变就是从人工”驱动“发展为”AI“驱动,若是说前边几种模式还须要测试人员编写流程驱动脚本,而在这种模式下,测试人员将摆脱这一束缚。
层次六
彻底自动化——我必须认可,这个层次有点恐怖。这个层次的 AI 能够和产品经理“交流”,理解产品的标准,本身写测试,不须要人的帮助。这种模式多是咱们所但愿追求的最高境界,或许发展到这个阶段,测试这个岗位须要从新被定义。
AI技术在测试领域的运用并不是新鲜话题,但业界对此讨论的一些方向也值得咱们思考和探索AI和ML(机器学习)技术能如何被运用到测试场景,常见的三种运用场景包括:
Unit Tests
单元测试对于确保每一次Build都能构建出稳定和具有可测性的软件很是重要,但单元测试的构建和维护自己也面临很大的挑战,在业界例如像RPA这样的AI-Powered Unit Test工具,试图帮助开发人员来更加有效的维护单元测试用例,利用AI技术对代码进行分析和学习,从而有效的减小那些无用的用例集,从而维护一个更加可靠和稳定的单元测试用例库。
API Testing
在敏捷开发模式下,测试人员会面临常态化多变的UI界面,此时针对系统API(接口)的测试其有效性和效率可能会大于UI自动化测试,在此领域有很是多的一些使用AI技术的工具能帮助测试人员对手工UI测试自动转换为API测试,从而帮助组织更加高效的构建起复杂和完善的API测试策略。
UI Testing
目前对于UI自动化测试主要思想主要仍是如何把手工测试用例转换为自动化测试用例,AI技术在此场景下目前大多被运用在结果识别以及多场景的适配测试领域,从而下降对UI自动化的维护和运行成本。
针对上述提到的运用场景和不一样的六个层次,目前业界在此领域也有很是多的AI Powered Testing Tools,咱们能够快速作一个了解(工具排名不分前后)。
Applitools
这是一个运用了AI技术的Visual Testing解决方案,他运用AI技术智能化识别UI界面上那些有价值性的改动,并主动识别其是不是潜在的BUG或者是有意义的改动而并不是BUG,从而让自动化脚本的维护从规则化升级为智能化,例以下图中咱们能够看到应用的图标位置发生了改变,该工具能自动识别这种变化,其主要主打方向是软件测试的Look & Feel领域,或者咱们能够叫用户体验领域。
用该公司本身的话来讲其核心价值以下,从其官方价值不难看出,其主要解决的问题是在软件UI影响用户体验的领域,好比像视窗存在遮挡,界面元素颜色、大小、位置可能存在问题等,这对于一些很是重视用户对软件产品体验方面的领域仍是具备必定的价值,而这些领域的测试若是用传统的基于规则的自动化,实现成本和维护成本会很是巨大。
Appvance IQ
Appvance公司出品的解决方案,官方宣传口号“The Only True AI-Driven Software Test Automation Technology Create 1000's of regression tests in minutes”,翻译过来大体的意思是这是一个真正的AI驱动的自动化测试解决方案技术,该技术能在1分钟内瞬间产生1000个左右的回归测试用例,从官宣口号中不难能够看出,其主打的是“效率”二字,核心但愿解决回归测试的痛点,该公司也提出了一个5层自动化模型,这5层模型和前边提到的6层模型其实有殊途同归之处。
Eggplant
该工具得到2019 SIIA CODiE WINNNER(Best DevOps Tool Digital Automation Intelligence Suite),该工具的Eggplant AI功能号称能自动建立Test Case,并优化测试执行来发现更多的BUG,其提出的测试覆盖率思想提出了一个“User Journeys”的思想相对有些有趣,官方有这么一段介绍“Eggplant AI automatically generates test cases and optimizes test execution to find defects and maximize coverage of user journeys”,其实这里的Customer Journey也便是咱们经常说的不一样的测试场景,为了达到对于Customer Journey的覆盖,其核心实现逻辑抽取出了Model和Tag的概念,前者是Journey建模,后者实际是数据驱动。
Test.AI
这是业界比较知名的两本书籍(《How Google Tests Software》、《App Quality: Secrets for Agile App Teams》)编写团队所建立的一个AI自动化测试平台,其核心能力是将AI大脑添加到Selenium和Appium的工具来提高其智能化能力。
MABL
一帮前Google工程师创办的企业,主攻领域就是提供End-To-End的端到端测试解决方案,AI也是其中很重要的方向,MABL具有自动检测测试对象的变化并动态更新测试脚本的能力。在传统的自动化测试中,可能UI界面的类型变化可能会阻塞脚本执行,而MABL具有自动识别的机制和能力来缓解这类问题。
Sealights
从官方的宣传口号来看,不难看出,其核心定位是利用AI技术作质量管理和质量分析和其余几个的定位略有不一样,主要用户主要针对R&D Manager,因此咱们能够理解为其核心解决的不是测试自身的问题,而是偏管理方面的问题,利用智能化技术针对此领域但愿能更加智能的给予决策人员更加准确的决策信息,提升决策效率。
ReportPortal
从名字上不难看出,这款工具主要是聚焦在测试结果分析和管理方面,这一点和Sealights有些相似,主要基于测试执行的数据利用AI和ML技术进行挖掘,来快速评估新的风险。
Functionlize
该解决方案主打AI自动化领域,其核心能力是其所为的AEA(Adaptive Event Analysis)技术,该技术能自动发现case执行过程当中的Broken问题,并自动修复,从而让你的用例Never Break And NO More Test Maintenance,其利用ML技术的智能识别号称覆盖如下一些UI场景,若是在你的测试中有涉及下边这些的Change,利用AEA技术能够自动识别更自动更新测试脚本,无需人工干预:
除了上述提到的这些目前业界已有的解决方案之外,还有不少厂商也在本身现有的工具能力中注入了AI和ML的能力,不过从上述几个中咱们不难发现,目前业界在测试领域使用AI和ML技术大体能够分为几类:
在我看来AI技术的发展应该是测试人员须要重点关注的领域,咱们每每会由于有些技术可能当下并不成熟,或者当下并无很好的落地场景,从而忽略对将来技术的关注度,在测试领域对于AI的探索也是如此,同时不难发如今业界其实已经有很是多的公司已经在本身的商业化解决方案中注入了AI能力,这种趋势也是值得咱们持续关注,最后我我的比较推荐在AI领域的落地和时间能够尝试从本文提到的6个层次模型中去由浅入深的探索,这有利于在AI和测试的道路上有层次的按部就班。
双11福利来了!先来康康#怎么买云服务器最便宜# [并不简单]参团购买指定配置云服务器仅86元/年,开团拉新享三重礼:1111红包+瓜分百万现金+31%返现,爆款必买清单,还有iPhone 11 Pro、卫衣、T恤等你来抽,立刻来试试手气!https://www.aliyun.com/1111/2019/home?utm_content=g_1000083110
本文做者:汪维
本文来自云栖社区合做伙伴“阿里技术”,如需转载请联系原做者。