博舍

【AI测试】人工智能测试、算法测试整体介绍——第一部分 人工智能测试用例是什么

【AI测试】人工智能测试、算法测试整体介绍——第一部分

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

引言

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

一、人工智能和测试的介绍1.1“人工智能”和“人工智能效应”的定义1.2AI使用案例1.3AI使用和以后的市场

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

1.4基于AI系统的故障和测试的重要性1.5图灵测试和AI的历史1.6AI技术

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

1.7AI开发框架

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

1.8NARROWVS一般AI和技术奇异性

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

1.9AI标准化

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

1.9AI的监管标准

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

软件测试用例自动生成技术(一)

软件测试这一环节在软件开发周期中不可或缺。然而软件测试却花费软件开发超过一半的成本。因此利用软件测试用例自动生成技术来降低软件开发成本并提高软件开发效率就变得至关重要。目前软件测试用例自动生成技术可大体分为五类:1.符号执行及程序结构覆盖测试(symbolicexecutionandprogramstructuralcoveragetesting)2.基于模型的测试用例生成技术(model-basedtestcasegeneration)3.混合型测试(combinatorialtesting)4.自适应型随机测试–随机测试的一个变种(adaptiverandomtestingasavariantofrandomtesting)5.基于搜索的测试(search-basedtesting)本博文分多博客逐次介绍这些技术。

1.符号执行(SymbolicExecution)

符号执行是一种程序分析技术。其可以通过分析程序来得到特定代码域执行的输入。使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束(PC:PathConstraint),然后通过约束求解器来得到触发目标代码的具体值。From:https://zh.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E6%89%A7%E8%A1%8C

1.1测试案例

上图(a)为一段交换x,y值的代码,仅当初始值x>y时交换。上图(b)为该段程序的执行树(ExecutionTree,执行树进行符号执行时程序的所有执行路径,其中结点表示程序状态,边表示状态转移,结点右上角编号为程序行编号)。在执行语句1前PC设值为真因为无论x,y为何值语句1的判断条件总会执行。执行树表示了程序所有可能的执行路径,比如当X≤Y时,路径1,8执行;当X>Y时执行1,2,3,4,5。尽管符号执行在中世纪便已提出,但这项技术得到关注才是近年的事。原因有二:1.面对现实中庞大的程序符号执行需要复杂的条件约束2.相比于其它自动测试技术,符号执行需要巨大的运算量

1.2基本问题

若要符号执行运用在现实中庞大的程序中,其必须有两个特点:高效性及自动化。但其有三个基本问题需要解决:1.路径爆炸(PathExplosion):符号执行很难解决现实中的大型软件因为现实中的软件路径纷乱繁杂,而且每条路径都有可能面临庞大的计算量。因此,在有限的时间内,只有一部分路径可被符号执行。2.路径发散(PathDivergence):现实中程序经常是多语言混合编程或其本身是二进制文件。为这类程序生成精确的条件约束要么需要实现一个大型架构,要么就需要用户自己为关键部分建模。正因如此,从生成测试数据的那段路径开始就有可能产生多条分支。由于路径发散的问题,符号执行要么不能找到程序的关键路径,要么就需要用户自己建模从而减少自动化。3.复杂约束(ComplexConstraints):为条件约束进行划分问题如此难以抉择。因此生成的路径约束很有可能异常复杂。

Reference:AnOrchestratedSurveyonAutomatedSoftwareTestCaseGeneration

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇