阿里妹导读:近几年人工智能、机器学习等词漫天遍地,似乎有一种无AI,无研发,无AI,无测试的感觉。有人说:不带上“智能”二字,都不好意思说自己是创新。我们先暂且不评论对错,只探讨这背后值得我们思考的问题。

在测试领域,人工智能和测试是什么关系?为什么测试领域会谈及人工智能?如果测试工程师不懂AI,是否有未来,测试人员该如何看待“AI测试”?带着这些问题,阿里高级测试开发专家汪维希望借此和大家做一些交流和探讨。

测试发展变革史

借用一幅图先让我们快速来回溯一下测试变革所经历的几个不同的时期,从最早期的纯手工测试,随着整个IT技术的发展,测试也历经了不少的变革,每一次变革我们不难发现侧重点都有所不同。

从最初的验证软件的可工作状态,到强调释放生产力的自动化诉求,从封闭式的自动化能力到基于社区模式的开放式能力建设,再到从更加全面的研发流程体系来构建的持续集成的自动化能力,我们不难发现每次变革背后似乎都有一个核心词在推动,那就是“效率”。但这个效率又有所不同,就是不同阶段对于效率在逐渐从单点效率往系统性效率迈进。

如果我们认为前边四个阶段都是基于规则为核心的测试,而未来则会打破这种模式,推动这个核心改变的模式可能主要来源两个方面,第一是研发技术的升级,第二是研发模式的更加敏捷和分布式开发,这两者都打破了以规则为核心的测试理念。

因为我们可能面对更多的研发人员,更复杂的研发场景,更复杂多变的应用系统,在此基础上便催生了对于软件测试新的思考,那便是如何让软件测试变得更加的“Smart”,这便是我们正在经历的时代,不过很不幸的是,我们可能大多数情况下测试还不够“Smart”,很有可能我们在某些情况下我们还处于“1980-1990”的时代,我想这也是测试人员之痛。

图片来源:https://becominghuman.ai/ai-in-testing-the-third-wave-of-automation-cfdd43f55d9c

如今测试发展面临的主要挑战

对于软件测试而言,其实互联网的发展和兴起对软件测试的发展带来了巨大的挑战,这不得不从本质问题说起,相对互联网时代之前的传统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的探索也是如此,同时不难发现在业界其实已经有非常多的公司已经在自己的商业化解决方案中注入了AI能力,这种趋势也是值得我们持续关注,最后我个人比较推荐在AI领域的落地和时间可以尝试从本文提到的6个层次模型中去由浅入深的探索,这有利于在AI和测试的道路上有层次的循序渐进。

人工智能测试是什么意思_测试工程师必须懂这些相关推荐

  1. 测试电梯的测试用例_测试开发工作者日记:2020.12.24

    画    最近的工作业务测试比较多,但是作为从最底层测试摸爬滚打出来的博主来说,完全没压力,也没有不爽,相反还觉得这是一次大脑放松的机会. 用非常非常快速的方法进行功能测试,甚至用例都不看也不写. 就 ...

  2. python做测试需要哪些技能_测试人员需要具备哪些基本技能

    测试人员需要具备哪些基本技能或者素质.这个问题在几年前常见于软件测试工程师笔试题上.对这个问题,我觉得应该有新的解读.现在我们日常工作中需要应对的是,测试和开发的交叉领域,测试和运维的交叉领域.而不再 ...

  3. 判断数组中某个元素除自身外是否和其他数据不同_算法工程师要懂的3种算法数据结构:线性表详解...

    算法思想有很多,业界公认的常用算法思想有8种,分别是枚举.递推.递归.分治.贪心.试探法.动态迭代和模拟.当然8种只是一个大概的划分,是一个"仁者见仁.智者见智"的问题. 其实这些 ...

  4. uni-app网络请求封装_网络工程师必懂篇·数据的传输流程

    很多时候我们会发现,有时候学习过程中,大家对于整体的数据包流程没有一个明确的思路,今天我们来好好聊一聊数据在网络中,是如何传递的. PC1 地址192.168.1.100/24,网关地址192.168 ...

  5. 世纪前线网络质量测试工具 是什么_成为一名软件测试工程师有什么前途?

    作为软件质量控制中重要的一环,软件测试工程师基本上处于地位高.待遇高的地位(注:我说的是真正意义上的软件测试工程师,不是那些"点点点"的测试员).同时软件测试的人才需求缺口越来越大 ...

  6. 并发测试工具_软件测试工程师都在用哪些测试工具?

    工欲善其事,必先利其器,高效开展软件测试活动,除了测试工程师工作中认真敬业之外,还应有优秀的测试工具辅助其工作.测试工具能提高测试效率,辅助实现测试目标,提升个人的技能. 下面简单介绍一下目前业内常用 ...

  7. 测试私有方法 重构_一个全栈工程师重构之路:中小公司 DevOps 落地实践

    为了这篇文章,我前后写了将近十篇文章铺垫,才将这篇整体重构思想引出. 背景 先说下背景,我们是一家小公司,虽然打着做产品的旗帜,但是每个客户都有大量的个性化功能,这里指各个客户的java端.Andro ...

  8. python测试开发工程师前景_测试开发工程师,薪水20k值吗?

    近几年,招聘网站上的趋势:不管面试初级测试还是中高级测试,工作职责中基本上都会出现熟练一种开发语言,Java,Python等,会搭框架,招聘方向不是自动化就是测试开发,越来越多的人追崇测试开发,那你了 ...

  9. 禅道类似软件_软件测试工程师都在用哪些测试工具

    接下面小编要给大家简单介绍一下目前业内常用的测试工具: 01 .测试管理工具 软件测试活动开展过程中,将会涉及到大量的测试活动管理及资源文档管理,因此,拥有一个完善.有效的测试管理工具,将会给软件测试 ...

最新文章

  1. c#运行shell命令
  2. 使用while语句修改后的效果和for一样
  3. P2158,jzoj1709-仪仗队【欧拉函数,数论】
  4. 数据管理的3种方法,看完后感叹:数字化转型、数据中台真不难
  5. 移动端分享到微信和QQ
  6. python yield原理_从python的yield说起
  7. android 横盘方向传感器,横盘震荡选择方向!
  8. idea往gitee上传项目
  9. SpringMVC——处理方法返回值的可选类型
  10. 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. 复合火焰探测传感器_智能消防水炮能够自动跟踪火焰吗?
  12. 8大轻型网管工具,网络管理好帮手
  13. NFC Reader Tool 蓝牙NFC读写器使用教学
  14. c语言单片机题目设计大全,51单片机毕业设计题目.docx
  15. Magisk Magisk Manager 下载
  16. 魅族 计算机 隐藏,不知道你们发现了么,魅族Flyme6 超好用的隐藏功能
  17. 正交性的好处和实现方法
  18. 现在开房都不需要在前台办理入住了?刺激
  19. 实训9——蓝牙修改开锁密码
  20. ubuntu10.10下更新无线网卡驱动

热门文章

  1. springboot接收文件上传_SpringBoot第十七篇:上传文件
  2. 人脸识别代码_Python人脸识别源代码可自动识别出年龄、性别等
  3. VTK:定向圆柱体用法实战
  4. boost::msm::mpl_graph::incidence_list_graph相关的测试程序
  5. boost::hana::detail::has_duplicates用法的测试程序
  6. boost::disjoint_sets_with_storage用法的测试程序
  7. boost::geometry::box_view用法的测试程序
  8. boost::geometry::strategy::vincenty用法的测试程序
  9. boost::coroutine2模块实现协程的测试程序
  10. boost::coroutine模块实现非对称协程的测试程序