AI测试 基于人工智能系统的测试——第一、二部分

凌晨两点半 · April 24, 2020 · Last by 凌晨两点半 replied at May 06, 2020 · 1828 hits

基于人工智能系统的测试

2019年11月,CSTQB(中国软件测试认证委员会)将和KSTQB(韩国软件测试认证委员会)以及滔瑞中国一起合作,联合举办一场公开课。此次公开课是以AI(人工智能)为主题,进而深入探讨并了解“基于人工智能系统的测试”一话题。同时,此次的公开课还邀请了来自英国的Dr.Stuart Reid先生作为此次的讲师,为大家带来一场精彩的听学盛宴。
目前本次课程的学习大纲已正式发布。大纲的全称为--“AI Testing-Testing AI-Based Systems Syllabus v1.3”。这份大纲共68页。全英文内容。

由于大纲是全英文的,阅读起来有难度,借助翻译软件翻译为中文,方便阅读学习。

主要内容是
第一部分:人工智能和测试的介绍
第二部分:人工智能系统的特性和验收标准
第三部分:机器学习
第四部分:机器学习的性能指标和基准
第五部分:人工智能系统测试简介
第六部分:人工智能系统的黑盒测试
第七部分:人工智能系统的白盒测试
第八部分:测试人工智能的测试环境
第九部分:使用人工智能进行测试

引言
传统系统的测试已被很好地理解,但是基于AI的系统对我们的日常生活变得越来越普遍和至关重要,它带来了新的挑战。
这篇内容涵盖了人工智能(AI)的关键概念,我们如何确定验收标准以及如何测试基于AI的系统。
这些系统通常是复杂的(例如深层神经网络),这给测试人员带来了许多新的挑战和机遇。
在整个文档中,首字母缩写词AI代表“人工智能”一词。

一、人工智能和测试的介绍

1.1 “人工智能”和“人工智能效应”的定义

1.2 AI使用案例

1.3 AI使用和以后的市场

91%的技术主管认为AI将成为下一次技术革命的核心。

1.4 基于AI系统的故障和测试的重要性

1.5 图灵测试和AI的历史

1.6 AI技术

搜索算法•推理技术–逻辑程序–规则引擎–演绎分类器–基于案例的推理–程序推理•机器学习技术–人工神经网络•前馈神经网络•递归神经网络–贝叶斯网络
–决策树–深度学习•卷积神经网络–强化学习–转移学习–遗传算法–支持向量机
结合使用这些技术,可以将一些最有效的基于AI的系统视为AI混合体。

1.7 AI开发框架

TensorFlow –基于数据流图,可用于Google的可扩展机器学习
PyTorch-用于使用Python语言进行深度学习的神经网络
MxNet –亚马逊用于AWS的深度学习开源框架
Caffe / Caffe2-使用C ++和Python接口编写的深度学习开放框架CNTK –微软认知工具包(CNTK),一种开源深度学习工具包
Keras-用Python语言编写的高级API,能够在TensorFlow或CNTK上运行

1.8 NARROW VS一般AI和技术奇异性

到目前为止,所有成功的AI都是“狭窄”的AI,这意味着它可以处理一项专门的任务,例如下围棋,充当垃圾邮件过滤器或驾驶自动驾驶汽车。
通用AI比狭窄的AI先进得多,它是指一种基于AI的系统,它可以处理许多完全不同的任务,与人类一样。
通用AI也被称为高级机器智能(HLMI)。
2017年发布的一项针对AI研究人员的调查报告称,HLMI何时实现的总体平均估计值是到2061年。在这些AI研究人员中,有15%的人认为HLMI对人类会产生不良或非常不良的后果。
一个普遍的假设是,一旦实现了一般的AI(并且允许基于AI的系统访问互联网),基于AI的系统将使用对可用信息,处理能力和存储的访问进入自我循环-改进。
片刻之后,这将意味着该系统将变得比人类更智能(继续变得超级智能)。
这种智能爆炸发生的时间点称为技术奇点。

1.9 AI标准化

标准化旨在促进创新,帮助提高系统质量并确保用户安全,同时创建一个公平开放的行业生态系统。
AI标准化发生在各个级别,包括:国际标准组织、区域标准组织、国家标准。

1.10 AI的监管标准

监管标准可以分为两大类:适用于安全相关系统的标准和适用于非安全相关系统的标准,例如财务,公用事业和报告系统。
与安全相关的系统是那些可能对人,财产或环境造成伤害的系统。

二、人工智能系统的特性和验收标准

2.1 AI特有的特征

与任何系统一样,基于AI的系统具有功能性和非功能性需求。
基于AI的系统具有 模型质量 未包含的一些独特特征,例如适应性,自主性,演化,灵活性,偏差,性能,透明度,复杂性和不确定性。
这些非功能特性将在下面进行更详细的描述,并提供有关对其进行测试的建议。
基于AI的系统全套质量特征可用作测试计划期间使用的checklist的基础,以用于确定需要通过测试缓解的风险。
请注意,与任何一组非功能性需求一样,这些特性之间可能存在一些相互作用,重叠和可能的冲突。

2.1.1 适应性(Adaptability)

适应性是系统对环境变化做出反应以继续满足功能性和非功能性需求的能力。
自适应系统的属性包括自我配置,自我修复,自我保护和自我学习。
适应性要求系统主动或被动地收集有关其操作环境的信息。
探索(主动收集信息)为自我完善提供了有用的信息,但也危险,并且系统在探索时应格外小心安全相关情况。
适应性要求应指定系统应适应的环境变化,并且还应包括对适应过程本身的要求,例如适当时的最大适应时间。
适应性测试通常基于环境修改或突变。功能性和非功能性需求均应进行测试,并且最好以自动化方式进行回归测试是一种合适的方法。
还应该测试系统执行的适应过程,以确定例如系统是否在所需时间范围内适应,以及系统是否处于为实现适应而消耗的资源的约束范围内。

2.1.2 自主性(Autonomy)

自主是系统在没有人工干预的情况下持续工作的能力。
应该为系统指定预期的人工干预水平,并且应该是系统功能要求的一部分(例如,“系统将保持巡航状态,直到发生以下情况之一……”)。
自主也可以与适应性或灵活性结合起来考虑(例如,系统应该能够在没有人工干预的情况下保持给定水平的适应性或灵活性)。
在某些情况下,基于AI的系统可能会表现出过多的自主性,在这种情况下,人类可能有必要从中夺取控制权。
测试自主性的一种方法是尝试迫使系统脱离其自主行为,并在未指定的情况下请求干预(一种否定性测试)。
负样本测试也可以用来尝试欺骗系统,使其认为应该在何时进行干预(例如,通过在其业务范围边界处创建测试方案,以建议将边界值概念应用于方案测试)来控制系统。

2.1.3 演化(Evolution)

演化与系统应对两种类型的变化的能力有关。
第一种类型的更改是用户需求更改时-这可能有多种原因,甚至可能是由于用户与系统本身的交互所引起的。
第二种类型的更改是系统更改其行为时,这可能是由于系统在使用时学习了新的行为。系统行为的变化并不总是积极的,而这种系统特性的消极形式可以称为退化,漂移或陈旧。
系统演化测试通常采取维护测试的形式,需要经常运行。
此测试通常需要监视指定的系统目标,例如性能目标(例如,准确率,精确率和召回率),并确保没有数据偏差引入系统。
该测试的结果可能是对系统进行了重新培训,也许使用了更新的培训数据集。

2.1.4 灵活性(Flexibility)

灵活性是系统在超出其初始规格的环境中工作的能力(即根据实际情况更改其行为以实现其目标)。灵活性应在要求中明确规定。
这可以通过使用严格程度不同的动词来非正式地实现,例如“必须”,“可能”和“接近”,或者可以通过规范中的概率和可能性(例如RELAX)更正式地实现。
需求语言)。
可以使用不同的技术机制来实现灵活性,例如反应性,主动性,交互性,适应性或自学。
测试灵活性需要进行测试以扩展系统的原始性能。
变形测试(请参阅第6.4节),其中包括使用变形关系扩展初始规范(在指定限制内)可用于测试灵活性

2.1.5 偏差(Bias)

偏差是对机器学习模型提供的预测值与实际值之间的距离的度量。
在机器学习(ML)中,其思想是识别并归纳训练数据中的模式,并在模型中实施这些模式以对其进行分类和预测。
如果训练数据不能代表预期可用于操作的数据,则该模型很可能会显示出偏差。
偏差测试可以分两个阶段执行。
首先,可以通过评审将其从训练数据中删除,但这需要专家评审员,他们可以识别可能造成偏见的特征。
其次,可以通过使用无偏差测试集的独立测试来对系统进行偏差测试。当我们知道训练数据存在偏见时,就有可能消除偏见的根源。
或者,我们可以接受该系统包括偏差,但是通过发布训练数据来提供透明度。

2.1.6 性能指标(Performance Metrics)

性能指标是为机器学习(ML)模型定义的,其中最流行的是准确率,精确率和召回率。accuracy, precision and recall
通常在ML框架(例如TensorFlow)中提供对性能模型的测试,该框架将为给定的测试数据集计算这些度量。

2.1.7 透明性/可解释性(Transparency)

透明性(也称为可解释性)是衡量基于AI的系统得出结果的难易程度的一种度量。
与许多非功能性需求一样,可能会与其他非功能性特征发生冲突-在这种情况下,可能需要权衡透明度以达到所需的准确性。
解决潜在透明度问题的一种方法是发布用于创建(不透明)部署模型的框架,训练算法和训练数据的选择细节。
可解释的AI(XAI)领域涵盖了使基于AI的系统更易解释的方法。
透明度测试是一项定性活动,理想情况下,要求目标受众(或一组有代表性的测试人员)执行测试,以确定基于AI的系统的工作是否可以理解或所提供的解释是否令人满意。

2.1.8 复杂性(Complexity)

基于AI的系统(尤其是通过深度学习实现的系统)可能非常复杂。
由于问题的复杂性,基于AI的系统通常用于无法解决的问题(例如,基于大数据进行决策)。如前所述,深度神经网络拥有超过1亿个参数并不罕见。
这种系统的复杂性产生了一个预测性的问题。
它可能需要一些专家花费一些时间和讨论才能就复杂的基于AI的系统的单个测试用例结果达成共识,并且理想情况下,我们希望运行许多测试,这是不可行的如果我们不得不依靠专家(缓慢地),产生预期的结果。
可以使用多种测试技术来解决测试预测性的问题,包括 A/B testing, back-to-back testing and metamorphic testing

2.1.9 不确定性(Non-Determinism)

不能保证非确定性系统每次运行都会从相同的输入产生相同的输出(与确定性系统相反)。对于非确定性系统,使用相同的前提条件和测试输入集的测试可能会有多个(有效)结果。确定性通常由测试人员假设-它允许重新运行测试并获得相同的结果-当将测试重新用于回归或确认测试时,这非常有用。然而,许多基于AI的系统是基于概率实现的,这意味着它们并不总是从相同的测试输入中产生相同的结果。基于ai的系统还可以包含其他非决定论的原因,比如并发处理(尽管这些通常出现在复杂的传统的、非ai的系统中)。非确定性系统的测试要求测试人员解决以下问题:对于同一测试案例,多个实际结果可能被认为是正确的。
对于确定性系统,对正确性的检查是对“实际结果是否等于预期结果”的简单检查,而对于非确定性系统,测试人员必须对所需的行为数据有更深入的了解,以便可以得出合理的结论,验证测试是否通过。

2.2 用人类的价值观对基于AI的系统进行预警

基于AI的系统的两个主要问题。
首先,指定的功能可能无法与人类的价值观完美地吻合,而人类的价值观(最多)很难确定。
第二个问题是,任何功能强大的智能系统都将希望确保其自身的持续存在并获取物理和计算资源-不是为了他们自己,而是为了成功完成其分配的任务。

2.3 副作用

2.4 奖励黑客(reward hacking)

2.5 规范基于AI的系统的道德要求

共收到 3 条回复 时间 点赞

啥呀?没看懂啊

内容非常的不连贯,同样没看懂

凌晨两点半 关闭了讨论 06 May 17:07
凌晨两点半 重新开启了讨论 06 May 17:08

毕竟是翻译软件翻译的,流畅度会差一些,但大概意思应该不是难理解的。
本来想删除,但没看到有删除按钮。之后的翻译章节也就不放了。整个整理成了doc文档排版。放在CSDN可以下载。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up