51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2902|回复: 0
打印 上一主题 下一主题

[转贴] 解析AI测试的三重含义,千万别产生歧义

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-5-13 10:10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     随着AI影响力的日益扩大,AI与软件测试的交叉领域,即AI测试,成为热门方向。然而,这里存在一个陷阱:对于AI测试来说,如果不结合上下文,是很容易产生歧义的。
      换句话说,AI测试是个多义词。今天,我们就来说文解字,解析AI测试背后的三重含义。对于每一种含义,我们从what(是什么),why(为什么)和how(怎么做)这三个角度进行解析。
      AI测试的第一种含义是AI驱动的测试(AI-driven testing),即testing by AI。
      顾名思义,AI驱动的测试,就是运用AI技术来赋能软件测试。这里,赋能的含义既可以是替代人工,也可以是辅助人工。与传统测试相比,测试的对象仍然是常规软件,但是由于AI的运用,测试的方法和技术发生了改变。
      为什么需要AI驱动的软件测试呢?有两方面原因。
      一方面,AI的能力十分强大。AI已经在机器翻译,语音识别,图像理解,疾病诊断,智能助手等众多领域有优秀的表现。AI之所以应用广,能力强,其背后是有数学原理支撑的,例如万能近似定理。从理论上说,AI能承担任何工作,软件测试也不例外。
      另一方面,软件测试存在巨大痛点。一直以来,测试都是软件研发过程中耗时长,成本高,又不得不做的工作。人们曾经寄希望于自动化测试来改善这一状况。然而,自动化测试不仅带来额外的开发和维护成本,而且已有的自动化技术基本只能让局部测试工作自动化,大量测试工作仍然是人工的。
      既然AI有能力,测试也有需求,那么"一拍即合",AI驱动的测试也就应运而生。然而,如何实现AI驱动的测试呢?
      面向AI驱动测试的创业公司。调研发现,目前大部分AI测试创业公司聚焦于系统级UI测试这一领域。它们致力于打造智能化的测试机器人,使之完成对UI的学习,建模,测试和错误定位。
      这些创业公司提供的典型服务包括:1) 基于强化学习技术,让测试机器人与UI进行交互,引导机器人发现链接失效,页面响应慢等问题。2) 基于图像识别技术,定位UI中功能异常或影响用户体验的元素。3) 基于自然语言处理技术,根据测试意图或产品需求文本,自动生成测试用例,并执行。
      在软件测试的部分环节和局部领域,一批AI落地并辅助测试工作的案例。
      这些案例包括:1) 根据用例内容和历史执行记录,动态估计用例失败概率,并依此来编排用例执行顺序。2) 根据持续测试失败日志,自动对失败原因进行分类。3) 根据缺陷描述,自动将其分配给对应的开发组。
      从这两份调研报告可以发现,AI驱动的测试是个大领域,既涉及强化学习,自然语言处理,图像识别等多种AI技术,也涉及用例生成,用例执行,缺陷管理等多方面测试工作。总的来看,AI驱动的测试仍然处于前期发展阶段,距离产生成熟的通用智能测试工具还有很长一段路要走。
      AI测试的第二种含义是面向AI的测试,即testing for AI。相对来说,测试AI比AI测试更能表达这种含义。注意到,此时的测试对象不再是常规软件,而是具有AI能力的软件。
      那么,为什么需要测试AI呢?在我看来,也有两方面原因。
      首先,任何应用软件都是为了满足需求而产生的,AI软件也不例外。检验软件的实际行为是否符合需求描述的过程,就是测试的过程。针对AI应用的测试,也就不可避免。随着具有AI能力的智能化软件越来越普及,测试AI软件也就成为普遍需求。
      其次,测试AI与测试常规软件存在一个根本不同,即测试预言(test oracle,软件的期望输出)无从知晓,因此我们难以运用传统测试长期积累的(依赖于测试预言的)经验与技术来测试AI,需要新的测试理论和测试技术。
      基于这两方面原因,如何测试AI成为一个重要的新课题,逐渐引起软件测试界的关注。那么,究竟应该如何测试AI呢?这个领域正在开拓之中,已经浮现出来的方法包括:
      1) 单元测试。AI软件内部有许多功能性模块,例如数据集加载,数据清洗,特征变换等。这部分模块与传统软件是类似的,即期望输出可知。因此传统的单元测试框架,以及代码覆盖率度量工具,在面向这部分模块时仍然适用。
      2) 数据测试。对于基于监督学习的AI应用来说,AI的准确性很大程度上取决于训练数据的质量。因此,我们需要对训练数据进行测试,以保障数据质量。数据测试的内容包括标记的正确性,样本数量的充分性,样本结构的合理性等。
      3) 模型测试。对于训练得到的模型,我们需要在新的数据集上测试它的性能。很多时候,新的数据集是没有标记的,这给模型测试带来巨大挑战,已知的针对性技术有蜕变测试,覆盖引导的模糊测试等。
      4) 集成测试。AI模块往往不是孤立存在的,而是与一些非AI模块存在交互。此时,我们需要对AI模块与非AI模块之间的接口进行测试,以保障AI模块能够正确处理接口可能出现的各种边缘和异常情况。
      事实上,除此之外,训练模型的过程,也是一个不断进行测试的过程。对于AI工程师来说,模型训练和参数调整往往是其主要的工作内容。因此,从广义上说,每个AI工程师同时也是测试工程师。
      然而,鉴于传统软件由开发工程师自己保证质量往往不够,AI软件仅靠AI工程师自己来保证质量可能也只是权宜之计。随着AI逐渐应用于金融和安全等关键领域,用户对AI软件质量的要求会越来越高,可能会对独立的AI测试工程师提出要求。
      AI测试的第三种含义是AI自测试,即self-testing of AI。
      对于一部分AI软件(例如,基于强化学习的游戏机器人)来说,它们有个重要特点是能够动态自适应环境变化。那么,如何在运行时(runtime)检验AI软件的自动适配是否正确或符合预期呢?这就需要AI自测试。
      目前,对于AI自测试主要有两种思路。一是异地自测试,即在另外一台机器上复制当前应用,并在副本上测试适配效果;二是原地自测试,即在当前机器之上,运用事件溯源(event sourcing)等技术对应用适配进行测试。当然,AI自测试还是一个很新的方向,暂无工业界落地案例。
      以上就是AI测试的三种不同含义,即AI驱动的测试,面向AI的测试和AI自测试。鉴于AI测试的多义词性质,大家在谈论AI测试时,应当限定具体语境,以避免产生歧义。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 01:24 , Processed in 0.062366 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表