您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 其他相关 > 正文

人工智能平台方案中的质量工程设计

发表于:2022-06-01 作者:朱先忠 来源:51cto

译者 | 朱先忠

审校 | 孙淑娟

简介

我们正处在人工智能的黄金时代。人工智能方案的采用使得企业更具创造性、竞争力和快速响应能力。软件即服务(software-as-a-service,SaaS)模式,加上云技术的进步,使软件生产和消费过程越来越成熟。

普遍存在的一个事实是,大多数组织更喜欢“购买”现成的人工智能技术,而不是“构建”自己的技术。因此,SaaS提供商,如Salesforce、SAP、Oracle等,都先后引入了人工智能平台功能,构建了人工智能即服务(AI-as-a-Service,AIaaS)模型。诚然,这种发展趋势使得企业更容易采用人工智能方案。

测试技术,对于一般的质量保证(QA),尤其在人工智能平台的采用中起着至关重要的作用。而且,在采用人工智能平台时,测试变得非常复杂,原因如下:

  1. 测试人工智能需要智能测试流程、虚拟化云资源、专业技能和人工智能工具。
  2. 虽然人工智能平台提供商会频繁发布各种版本,但是测试的速度应该尽可能确保同样快。
  3.  人工智能产品通常缺乏透明度,无法解释;因此,很难令人信服。
  4. 不仅是人工智能产品,训练模型的质量和数据的质量也同样重要。然而,一些传统的验证云资源、算法、接口和用户配置的测试方法普遍效率低下。这样一来,对于学习、推理、感知、操作等的测试就变得同样重要。

例如,在一个即插即用人工智能解决方案模型中,人工智能逻辑由软件供应商提供。作为消费者的程序员负责构建接口,提供用于训练逻辑的数据,在解决方案上下文中训练逻辑,并将体验扩展到最终用户。

首先,与传统测试一样,我们应该测试数据、算法、集成和用户体验。其次,为了测试解决方案的功能适合性,应该验证训练模型,这将把测试扩展到推理、规划、学习等方面。第三,应该开发验证AI算法本身的方法。最后,人工智能逻辑可能使用的工具,如搜索、优化、概率等,也应包含在功能验证中。本文中将引入一种关于人工智能测试框架的实用观点。

人工智能平台方案的核心必要性:持续测试

通过高度自动化实现的QA成熟度对于AI平台的采用至关重要。随着企业对其基础设施和工程方法进行现代化,发布周期可能会变得越来越短且高度自动化。持续集成(CI)技术已被证明是有效的。当代码一天登录几次,然后重新编译时,它会生成多个QA反馈循环。因此,要成功应用CI,构建和部署过程的自动化至关重要。自动化是CI的基础,而测试自动化使连续交付(CD)成为可能。总之,CD由CI驱动。敏捷和DevOps模型的发展加速了开发和测试之间的反馈循环,使持续测试(CT)、持续开发和持续交付制度化。

在企业中,数据、应用程序、基础设施等都在不断变化。同时,SaaS供应商不断升级AI产品,以提高用户体验和开发效率。在这种动态情况下,建立一个持续的测试生态系统至关重要;这样一个完全自动化的测试环境不仅可以确认不断变化的企业IT资产,还可以验证AI产品不断变化的版本。

归纳来看,建立一个良好的CT生态系统需要考虑以下因素:

  1. 将自动化测试脚本迁移到企业版本控制工具中。自动化代码库就像应用程序代码库一样,应该驻留在版本控制存储库中。通过这种方式,将测试资产与应用程序和数据资产结合起来将是有效的。
  2. 计划将自动化套件与代码/数据构建部署工具集成,以支持集中执行和报告。将代码/数据构建与其各自的自动化套件保持一致非常重要。当然,在每次构建过程中,基于工具的自动部署是绝对必要的,以避免人为干预。
  3. 将自动化套件分为多个测试层进行,以便在每个检查点实现更快的反馈。例如,人工智能健康检查可以验证在接口和数据结构中部署更改后服务是否正常。人工智能烟雾测试可以验证关键系统功能是否正常运行,并且不会出现堵塞缺陷。
  4. 测试范围也要覆盖训练模型。人工智能测试还应该测试训练模型,该模型可以证明解决方案是否学习了给定的指令,包括有监督和无监督的指令。多次重现相同的场景以检查响应是否符合给定的训练是至关重要的。同样,作为测试的一部分,建立一个过程来训练关于故障、异常、错误等的解决方案,也是至关重要的。如果仔细考虑异常处理,就可以建立容错能力。
  5. 计划在整个AI方案周期内管理人工智能训练/学习。CT相关的设置应有助于继续从测试到生产的学习,从而减少对迁移学习的担忧。
  6. 通过智能回归进行优化。如果整体回归的执行周期时间明显较长,CT应根据受严重影响的区域在运行时划分出一个子集,以便在合理的时间窗口内提供反馈。有效地使用ML算法创建概率模型,以便选择与特定代码和数据构建一致的回归测试,从而帮助高效地优化云资源的使用并加快测试速度。
  7. 始终定期计划进行全面的回归测试。这项工作可以安排到夜间或周末,这取决于其与周期性构建频率的一致性。这是CT生态系统的最终反馈,其目标是通过运行并行执行的线程或机器来最小化反馈时间。

当测试没有人工干预时,故障、错误和任何算法异常都会成为人工智能解决方案的发现来源。同样,测试期间的实际使用情况和用户偏好也成为训练的来源,应该在生产中继续下去。

确保AIaaS方案中的数据可提取

数据质量是人工智能方案中最重要的成功标准。无论是企业内部还是外部都存在有用的数据。提取有用的数据并将其提供给AI引擎的能力是高质量开发的要求之一。提取、转换和加载(ETL)是一个传统术语,指从各种来源收集数据、根据业务规则转换数据并将其加载到目标数据存储的数据管道。ETL领域已经发展到企业信息集成(EII)、企业应用集成(EAI)和企业云集成平台即服务(iPaaS)。不管技术进步如何,数据保证的需求只会变得更加重要。数据保证应解决功能测试活动,如Map Reduce流程验证、转换逻辑验证、数据验证、数据存储验证等。此外,数据保证还应解决性能、故障切换和数据安全性的非功能方面。

结构化数据更易于管理,而源自企业外部的非结构化数据则应谨慎处理。流处理原理有助于及早准备好运动中的数据;也就是说,通过事件驱动的处理,一旦从网站、外部应用程序、移动设备、传感器和其他来源生成或接收到数据,就立即对其进行处理。此外,通过建立质量关卡的办法检查质量是绝对必要的。

推特、Instagram、WhatsApp等消息平台都是受欢迎的数据来源。使用这样的数据时,它们通过基于云的消息传递框架跨各种技术连接应用程序、服务和设备。深度学习技术可以使计算机从这些数据加载中学习。其中一些数据需要借助神经网络解决方案来解决复杂的信号处理和模式识别问题,包括从语音到文本转录、从手写识别到面部识别等诸多领域。因此,应建立必要的质量关卡,以测试来自这些平台的数据。

以下是人工智能驱动的QA项目在设计时应注意的一些事项。

  1. 自动化质量关卡:可以实施ML算法,根据历史和感知标准确定数据是否“通过”。
  2. 预测源头起因:对数据缺陷的源头起因进行分类或识别,不仅有助于避免将来出现错误,而且有助于不断提高数据质量。通过模式和相关性,测试团队可以实现ML算法,将缺陷追溯到源头起因。这有助于在数据进入下一阶段进行自我测试和自我修复之前自动执行补救测试和修复。
  3. 利用预感知监控:ML算法可以搜索数据模式中的症状和相关编码错误,例如高内存使用率、可能导致中断的潜在威胁等,从而有助于团队可以自动实施纠正步骤。例如,人工智能引擎可以自动加速并行进程,以优化服务器消耗。
  4. 故障转移:ML算法可以检测故障并自动恢复以继续处理,并能够注册故障以进行学习。

确保AIaaS方案中的人工智能算法

当已知软件系统的内部结构时,开发测试就很简单了。然而,在AI平台解决方案中,AI和ML的“可解释性”较低,即输入/输出映射是唯一已知的元素,开发人员通常无法查看或理解基础AI功能(例如预测)的机制。尽管传统的黑盒测试有助于解决输入/输出映射问题,但当缺乏透明度时,人类将难以信任测试模型。当然,人工智能平台解决方案是一个黑匣子;有一些独特的人工智能技术可以帮助验证人工智能程序的功能;这样一来,测试就不仅仅是输入和输出映射的问题了。出于设计考虑,人工智能驱动的一些黑盒测试技术包括:

  1. 后验预测检查(Posterior predictive checks,PPC)模拟拟合模型下的复制数据,然后将其与观测数据进行比较。因此,测试可以使用后验预测来“寻找真实数据和模拟数据之间的系统差异”。
  2. 优化测试用例的遗传算法。生成测试用例的挑战之一是找到一组数据,这些数据在作为被测试软件的输入时会导致最高的覆盖率。如果这个问题得到解决,测试用例就可以得到优化。有一些自适应启发式搜索算法可以模拟执行自然进化过程中的基本行为,比如选择、交叉和变异。在使用启发式搜索生成测试用例时,有关测试应用程序的反馈信息用于确定测试数据是否满足测试要求。反馈机制能够逐渐调整测试数据,直到满足测试要求。
  3. 用于自动生成测试用例的神经网络。这些是可以获取、存储和处理经验知识的物理细胞系统。他们模仿人脑来执行学习任务。神经网络学习技术用于自动生成测试用例。在该模型中,神经网络在一组应用于AI平台产品原始版本的测试用例上进行训练。网络训练仅针对系统的输入和输出。然后,经过训练的网络可以用作人工预言器,用于评估AI平台产品的新版本和可能存在故障的版本产生的输出的正确性。
  4. 基于模型的回归测试选择的模糊逻辑。虽然这些方法在已经使用模型驱动的开发方法的项目中很有用,但一个关键障碍是模型通常是在高度抽象的级别创建的。它们缺乏在模型和代码级测试用例中与覆盖率相关的执行跟踪之间建立可追溯性链接所需的信息。基于模糊逻辑的方法可用于自动细化抽象模型,以生成允许识别可追溯性链接的详细模型。该过程引入了一定程度的不确定性——这种不确定性可通过应用基于细化的模糊逻辑来解决。此方法的逻辑是,根据与所用细化算法相关的概率正确性将测试用例分类为可重新测试的测试用例。

有关此部分知识更详细的内容,请参考​​《机器学习模型的黑盒测试》​​。

确保AIaaS方案中的集成和接口

所有的SaaS解决方案,包括AIaaS方案在内,都会带有一组预定义的Web服务。企业应用程序和其他智能资源都可以与这些服务交互,从而实现承诺的结果。如今,Web服务已经发展到能够提供平台独立性,即互操作性的水平。这种灵活性的提高使大多数Web服务能够被不同的系统所使用。当然,这些接口的复杂性也相应地要求提高测试水平。例如,在一种CI/CD环境中,在每个构建应用包中检查这些接口的兼容性更成为一项关键的任务。

当前,这方面的主要挑战是实现虚拟化Web服务,并验证AI平台解决方案与应用程序或物联网接口之间的数据流。概括来看,接口/Web服务测试复杂的主要原因包括:

  1. 没有可测试的用户界面,除非它与另一个可能尚未准备好测试的源已经集成到一起。
  2. 这些服务中定义的所有元素都需要验证,无论哪个应用程序使用它们或使用频率如何。
  3. 必须验证服务的基础安全参数。
  4. 通过不同的通信协议连接到服务。
  5. 同时调用服务的多个通道会导致性能与可伸缩性问题。

于是,测试接口层显得尤其需要:

  1. 模拟组件或应用程序行为。人工智能应用程序与人、机器和软件接口的复杂性应在人工智能测试中模拟,以确保正确性、完整性、一致性和速度。
  2. 检查非标准代码的使用。使用开源库和采用真实世界的应用程序可能会将非标准代码和数据带入企业IT环境。因此,这些内容都应该得到验证。

确保AIaaS方案中的用户体验

在主要通过远程方式工作和生活的新型社会现实中,客户体验已成为企业成功的必要条件。这是人工智能方案中一个更大的目标。非功能测试是一种经过验证的现象,它通过验证性能、安全性和可访问性等属性来提供有意义的客户体验。一般来说,下一代技术增加了体验保障的复杂性。

以下是在整个人工智能测试框架中确保用户体验的一些重要设计考虑。

  1. 为体验而设计,而不是为体验而测试。企业人工智能战略应该从最终用户的角度出发。确保测试团队代表实际客户是很重要的。尽早让客户参与设计不仅有助于设计,还可以尽早获得客户的信任。
  2. 通过构建测试优化模型实现敏捷性和自动化。从“蜂拥”期的测试周期就应该考虑用户体验的问题,因为针对用户体验的早期测试将有助于实现一种构建测试优化的开发周期。
  3. 采用敏捷方法的持续安全性至关重要。让企业安全团队成为敏捷团队的一部分:1)在测试的“蜂拥”期即拥有并验证组织的威胁模型;2)评估SaaS AI解决方案架构可能具有的所有多通道接口的结构漏洞(从假想的黑客的角度)。
  4. 速度至关重要。人工智能数据的属性,如体积、速度、多样性和可变性,迫切要求进行预处理、并行/分布式处理和/或流处理。性能测试将有助于优化分布式处理的设计,这是用户对系统期望的速度所必需的。
  5. 文本和语音测试的细微差别也是很重要的。许多研究调查表明,对话类人工智能仍然是公司议程的首要议题。随着增强现实、虚拟现实、边缘人工智能等新技术的不断涌现,测试文本、语音和自然语言处理等要求都应该能够得到解决。
  6. 模拟有助于测试极限。检查用户场景是体验保证的基础。说到人工智能,测试异常、错误和违规将有助于预测系统行为,进而帮助我们验证人工智能应用程序的错误/容错级别。
  7. 信任、透明度和多样性。验证企业用户对人工智能结果的信任度,验证数据源和算法的透明度要求以降低风险为目标并增强对人工智能的信心,确保数据源和用户/测试人员的多样性来检查人工智能道德及其准确性,所有这些都至关重要。为了做到这一点,测试人员不仅应该提高领域知识的水平,还应该了解大型企业IT中数据、算法和集成过程的技术诀窍。

结论

总之,持续测试是每一家企业采用人工智能平台方案的基本要求。所以,我们应该采用模块化方法,完善数据、算法、集成和经验保障活动的设计。这将有助于我们创建一个持续的测试生态系统,从而使得企业IT可以随时准备接受内部和外部AI组件的频繁变化。

译者介绍

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。早期专注各种微软技术(编著成ASP.NET AJX、Cocos 2d-X相关三本技术图书),近十多年投身于开源世界(熟悉流行全栈Web开发技术),了解基于OneNet/AliOS+Arduino/ESP32/树莓派等物联网开发技术与Scala+Hadoop+Spark+Flink等大数据开发技术。

原文标题:​Quality Engineering Design for AI Platform Adoption​​,作者:Anbu Muppidathi​