审稿人朱宪忠|孙淑娟介绍我们正处于人工智能的黄金时代。人工智能解决方案的采用使企业更具创造力、竞争力和响应能力。软件即服务(SaaS)模式,加上云技术的进步,使得软件生产和消费过程越来越成熟。一个普遍的事实是,大多数组织更愿意“购买”现成的AI技术,而不是“构建”自己的技术。因此,Salesforce、SAP、Oracle等SaaS提供商相继推出人工智能平台功能,构建人工智能即服务(AI-as-a-Service,AIaaS)模式。不可否认,这种发展使公司更容易采用人工智能解决方案。一般来说,用于质量保证(QA)的测试技术在AI平台的采用中尤其发挥着至关重要的作用。而且,当采用AI平台时,测试变得非常复杂,原因如下:测试AI需要智能测试流程、虚拟化云资源、专业技能和AI工具。AI平台提供商虽然会频繁发布各种版本,但测试的速度应该越快越好。人工智能产品往往缺乏透明度,无法解释;因此,他们很难令人信服。不仅仅是人工智能产品,训练模型的质量和数据的质量也同样重要。然而,一些用于验证云资源、算法、接口和用户配置的传统测试方法通常效率低下。这样,学习、推理、感知、操作等测试就变得同等重要。例如,在即插即用的AI解决方案模型中,AI逻辑由软件供应商提供。作为消费者的程序员负责构建界面,为训练逻辑提供数据,在解决方案的上下文中训练逻辑,并将体验扩展到最终用户。首先,与传统测试一样,我们应该测试数据、算法、集成和用户体验。其次,为了测试解决方案的功能适用性,应对训练好的模型进行验证,这会将测试扩展到推理、规划、学习等方面。第三,应开发验证AI算法本身的方法。最后,AI逻辑可能用到的工具,如搜索、优化、概率等,也应该包括在功能验证中。本文从实用的角度介绍了AI测试框架。AI平台场景的核心需求:通过高度自动化持续测试QA成熟度对于AI平台的采用至关重要。随着企业对其基础设施和工程方法进行现代化改造,发布周期可能会变得越来越短和高度自动化。持续集成(CI)技术已被证明是有效的。当一天多次签入代码然后重新编译时,它会生成多个QA反馈循环。因此,构建和部署过程的自动化对于成功应用CI至关重要。自动化是CI的基础,测试自动化支持持续交付(CD)。简而言之,CD由CI提供支持。敏捷和DevOps模型的演变加速了开发和测试之间的反馈循环,使持续测试(CT)、持续开发和持续交付制度化。在企业中,数据、应用程序、基础架构等都在不断变化。与此同时,SaaS提供商也在不断升级AI产品,以提升用户体验和开发效率。在这种动态情况下,建立一个持续的测试生态系统至关重要;这样一个全自动化的测试环境,不仅可以确认不断变化的企业IT资产,还可以验证不断变化的AI产品版本。综上所述,建立良好的CT生态系统需要考虑以下因素:将自动化测试脚本迁移到企业版本控制工具中。自动化代码库,如应用程序代码库,应该驻留在版本控制存储库中。这样,将测试资产与应用程序和数据资产相结合将是高效的。有计划将自动化套件与代码/数据构建部署工具集成,以支持集中执行和报告。将代码/数据构建与其各自的自动化套件保持一致非常重要。当然,在每次构建过程中,基于工具的自动化部署是绝对必要的,以避免人为干预。将自动化套件划分为多个测试层,以便在每个检查点实现更快的反馈。例如,AI健康检查可以在接口和数据结构中部署更改后验证服务是否健康。AI烟雾测试可以验证关键系统功能是否正常运行并且没有堵塞缺陷。测试范围还应涵盖训练模型。AI测试还应该测试经过训练的模型,它可以证明解决方案是否学习了给定的指令,无论是有监督的还是无监督的。多次重现相同场景以检查响应是否与给定训练匹配至关重要。此外,建立一个流程来培训有关故障、异常、错误等的解决方案,作为测试的一部分也很关键。如果仔细考虑异常处理,则可以内置容错。计划在整个AI程序周期中管理AI培训/学习。与CT相关的设置应该有助于从测试到生产继续学习,减少对迁移学习的担忧。通过智能回归进行优化。如果整体回归的执行周期时间明显较长,则CT应在运行时根据受影响严重的区域划分一个子集,以在合理的时间窗口内提供反馈。有效地使用机器学习算法创建概率模型,以选择符合特定代码和数据构建的回归测试,有助于有效优化云资源使用并加快测试速度。始终定期安排全面的回归测试。这项工作可以安排在晚上或周末进行,具体取决于它与定期构建频率的一致性。这是CT生态系统的最终反馈,其目标是通过运行线程或并行执行的机器来最小化反馈时间。在没有人为干预的情况下进行测试时,故障、错误和任何算法异常都可能成为发现AI解决方案的来源。同样,测试期间的实际使用情况和用户偏好也成为培训的来源,应该在生产中继续进行。确保AIaaS解决方案中的数据可提取性数据质量是AI解决方案中最重要的成功标准。有用的数据存在于企业内部和外部。能够提取有用的数据并将其提供给AI引擎是高质量开发的要求之一。提取、转换和加载(ETL)是一个传统术语,指的是从各种来源收集数据、根据业务规则转换数据并将其加载到目标数据存储中的数据管道。ETL领域已经发展到企业信息集成(EII)、企业应用集成(EAI)和企业云集成平台即服务(iPaaS)。无论技术进步如何,对数据保证的需求只会变得更加重要。数据保障应解决MapReduce过程验证、转换逻辑验证、数据验证、数据存储验证等功能测试活动。此外,数据保障还应解决性能、故障转移和数据安全等非功能方面。结构化数据更易于管理,而来自企业外部的非结构化数据应谨慎处理。流处理原则有助于尽早准备动态数据;也就是说,通过事件驱动处理,一旦从网站、外部应用程序、移动设备、传感器和其他来源生成或接收数据,就会立即处理数据。处理。此外,绝对有必要通过建立质量门来检查质量。Twitter、Instagram、WhatsApp等消息平台是流行的数据来源。在使用此类数据时,他们通过基于云的消息传递框架跨各种技术连接应用程序、服务和设备。深度学习技术允许计算机从这些数据负载中学习。其中一些数据需要神经网络解决方案来解决复杂的信号处理和模式识别问题,范围从语音到文本转录,从手写识别到面部识别等等。因此,应建立必要的质量门来测试来自这些平台的数据。在设计AI驱动的QA项目时,需要牢记以下几点。自动质量门:可以实施ML算法来根据历史和感知标准确定数据是否“通过”。预测源头原因:分类或识别数据缺陷的源头原因不仅有助于避免未来的错误,而且有助于持续改进数据质量。通过模式和相关性,测试团队可以实施ML算法以将缺陷追溯到其根源。这有助于在数据进入下一阶段进行自我测试和修复之前自动进行补救测试和修复。利用预感知监控:ML算法可以搜索数据模式中的症状和相关编码错误,例如高内存使用率、可能导致中断的潜在威胁等,以便团队可以自动实施纠正措施。例如,AI引擎可以自动加速并行进程以优化服务器消耗。故障转移:ML算法可以检测故障并自动恢复以继续处理,并具有注册故障以进行学习的能力。当软件系统的内部结构已知时,确保AIaaS解决方案中的AI算法易于开发和测试。然而,在AI平台解决方案中,AI和ML的“可解释性”较低,即输入/输出映射是唯一已知的元素,开发人员往往无法看到或理解底层AI功能(如预测)的机制。虽然传统的黑盒测试有助于解决输入/输出映射问题,但当缺乏透明度时,人类将难以信任测试模型。当然,AI平台解决方案是一个黑盒子;有独特的人工智能技术可以帮助验证人工智能程序的功能;这样,测试不仅仅是映射输入和输出的问题。出于设计考虑,一些AI驱动的黑盒测试技术包括:后验预测检查(PPC)在拟合模型下模拟复制数据,然后将其与观察到的数据进行比较。因此,测试可以使用后验预测来“寻找真实数据和模拟数据之间的系统差异”。优化测试用例的遗传算法。生成测试用例的挑战之一是找到一组数据,当用作被测软件的输入时,会产生最高的覆盖率。如果解决了这个问题,就可以优化测试用例。有自适应启发式搜索算法模仿自然进化中基本行为的执行,例如选择、交叉和变异。在使用启发式搜索生成测试用例时,通过测试应用的反馈信息来判断测试数据是否满足测试要求。反馈机制可以逐步调整测试数据,直到满足测试要求。用于自动测试用例生成的神经网络。这些是可以获取、存储和处理经验知识的物理细胞系统。他们模仿人脑来执行学习任务。神经网络学习技术用于自动生成测试用例。在这个模型中,神经网络在一组应用于AI平台产品原始版本的测试用例上进行训练。网络仅针对系统的输入和输出进行训练。然后,经过训练的网络可以用作人工预言机,用于评估由新版本和可能有故障的AI平台产品产生的输出的正确性。基于模型的回归测试选择的模糊逻辑。虽然这些方法在已经使用模型驱动开发方法的项目中很有用,但一个主要障碍是模型通常是在高抽象级别创建的。他们缺乏在代码级测试用例中的模型和覆盖相关执行跟踪之间建立可追溯性链接所需的信息。基于模糊逻辑的方法可用于自动细化抽象模型以生成允许识别可追溯性链接的详细模型。这个过程引入了一定程度的不确定性,可以通过应用基于细化的模糊逻辑来解决。这种方法的逻辑是根据与所使用的优化算法相关的概率正确性将测试用例分类为可重新测试。关于这部分知识更详细的内容,请参考《机器学习模型的黑盒测试》。确保AIaaS解决方案中的集成和接口所有SaaS解决方案,包括AIaaS解决方案,都带有一组预定义的Web服务。企业应用程序和其他智能资源都可以与这些服务交互以实现承诺的结果。今天,Web服务已经发展到可以提供平台独立性(即互操作性)的程度。这种增加的灵活性使大多数Web服务能够被不同的系统使用。当然,这些接口的复杂性也需要相应提高测试水平。例如,在CI/CD环境中,检查每个构建的应用程序包中这些接口的兼容性成为一项关键任务。目前,这方面的主要挑战是实现虚拟化Web服务和验证AI平台解决方案与应用程序或物联网接口之间的数据流。总而言之,界面/Web服务测试复杂的主要原因包括:没有要测试的用户界面,除非它已与另一个可能尚未准备好测试的源集成。这些服务中定义的所有元素都需要身份验证,无论哪个应用程序使用它们或使用它们的频率如何。必须验证服务的底层安全参数。通过不同的通信协议连接到服务。同时调用服务的多个通道可能会导致性能和可伸缩性问题。因此,特别有必要测试接口层:模拟组件或应用程序行为。AI应用程序与人、机器和软件交互的复杂性应在AI测试中进行模拟,以确保正确性、完整性、一致性和速度。检查非标准代码的使用。使用开源库并采用真实世界的应用程序可以将非标准代码和数据带入企业IT环境。因此,这些都应该得到验证。确保AIaaS场景中的用户体验在以远程工作和生活为主的新社会现实中,客户体验已成为业务成功的必要条件。这是AI计划更大的目标之一。非功能测试是一种经过验证的现象,它通过验证性能、安全性和可访问性等属性来提供有意义的客户体验。一般来说,下一代技术增加了体验保证的复杂性。以下是在整个AI测试框架中确保用户体验的一些重要设计考虑。为体验而设计,而不是为体验而测试。企业人工智能战略应该从最终用户的角度出发。确保测试团队代表实际客户非常重要。让客户尽早参与设计不仅有助于设计,还可以尽早获得客户的信任。通过构建测试优化模型实现敏捷性和自动化。UX问题应该在“集群”时期的测试周期中考虑,因为UX的早期测试将有助于实现构建-测试-优化的开发周期。使用敏捷方法的持续安全性至关重要。让企业安全团队成为敏捷团队的一部分:1)在测试的“集群”阶段拥有并验证组织的威胁模型;2)评估SaaSAI解决方案架构可能具有的所有多通道接口的结构漏洞(从假设的黑客的角度来看)。速度至关重要。AI数据的属性,如体积、速度、多样性和可变性,需要预处理、并行/分布式处理和/或流处理。性能测试将有助于优化分布式处理的设计,这对于用户期望的系统速度是必要的。文本和语音测试的细微差别也很重要。大量研究调查表明,对话式AI仍然是企业议程的重中之重。随着增强现实、虚拟现实、边缘人工智能等新技术的出现,测试文本、语音、自然语言处理等需求都应该能够得到解决。模拟有助于测试极限。考察用户场景是体验保障的基础。在人工智能方面,异常、错误和违规测试将有助于预测系统行为,进而帮助我们验证人工智能应用程序的错误/容错级别。信任、透明度和多样性。验证业务用户对AI结果的信任度,验证数据源和算法透明度要求以降低风险并增强对AI的信心,确保数据源和用户/测试人员的多样性以检查AI道德和准确性,所有这些都至关重要。为此,测试人员不仅要具备一定的领域知识水平,还要了解大型企业IT中的数据、算法和集成流程的专业知识。结论综上所述,持续测试是每个采用AI平台解决方案的企业的基本要求。因此,我们应该采用模块化的方式来改进数据、算法、集成和体验保障活动的设计。这将帮助我们创建一个持续测试的生态系统,以便企业IT可以准备好接受内部和外部AI组件的频繁更改。译者介绍朱宪忠,51CTO社区编辑,51CTO专家博主,讲师,潍坊某高校计算机教师,自由编程资深人士。早期专注于各种微软技术(编译成三本与ASP.NETAJX和Cocos2d-X相关的技术书籍)。/ESP32/RaspberryPi等物联网开发技术和Scala+Hadoop+Spark+Flink等大数据开发技术。原标题:QualityEngineeringDesignforAIPlatformAdoption,作者:AnbuMuppidathi
