【AI测试】也许这有你想知道的人工智能 (AI) 测试--开篇

人工智能测试

什么是人工智能,人工智能是怎么测试的。多是你们一开始最想了解的。
这里写图片描述
你们看图中关于人工智能的定义。通俗点来讲呢,就是 让机器实现原来只有人类才能完成的任务;好比看懂照片,听懂说话,思考等等。
不少人测试的同窗会问,那人工智能是怎么测试的?其实这个问题自己问的不太对。web

举个例子,把 人工智能 比作 水果。若是有人问你 “水果是怎么吃的”,你可能不知道怎么回答。
在不知道是什么类型的水果,或者具体是什么水果的时候,恐怕不能很好的回答这个问题。
那正确的问法是什么,能够从具体的人工智能应用的来问:算法

  • 机器学习项目怎么测试
  • 推荐系统项目怎么测试
  • 图像识别项目怎么测试
  • 天然语言处理项目怎么测试。

目前应用最普遍的人工智能也是这四个类型。安全

刚刚把人工智能比做水果,咱们知道,吃水果的方法有不少。能够把机器学习比做 一种吃水果的方法。若是用刀切这种方法。深度学习又是机器学习的一个分支。大概的关系图如图中显示。
这里写图片描述机器学习

测试什么

通常这些项目都要测试什么,要进行什么类型的测试。svg

1. 模型评估测试
模型评估主要是测试 模型对未知新数据的预测能力,即泛化能力。
泛化能力越强,模型的预测能力表现越好。而衡量模型泛化能力的评价指标,就是性能度量(performance measure)。性能度量通常有错误率、准确率、精确率、召回率等。性能

2. 稳定性/鲁棒性测试
稳定性/鲁棒性主要是测试算法屡次运行的稳定性;以及算法在输入值发现较小变化时的输出变化。
若是算法在输入值发生微小变化时就产生了巨大的输出变化,就能够说这个算法是不稳定的。学习

3. 系统测试
将整个基于算法模型的代码做为一个总体,经过与系统的需求定义做比较,发现软件与系统定义不符合或与之矛盾的地方。
系统测试主要包括如下三个方面:
一、项目的总体业务流程
二、真实用户的使用场景
三、数据的流动与正确测试

4. 接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。网站

5. 文档测试
文档测试是检验用户文档的完整性、正确性、一致性、易理解性、易浏览性。
在项目的整个生命周期中,会获得不少文档,在各个阶段中都以文档做为前段工做成果的体现和后阶段工做的依据。为避免在测试的过程当中发现的缺陷是因为对文档的理解不许确,理解差别或是文档变动等缘由引发的,文档测试也须要有足够的重视。人工智能

6. 性能测试

7. 白盒测试–代码静态检查

8. 竞品对比测试
若是有涉及时,可针对作竞品对比测试,清楚优点和劣势。好比AI智能音箱产品。

9. 安全测试

发布上线后,线上模型监控


测试数据

不论是机器学习,推荐系统,图像识别仍是天然语言处理,都须要有必定量的测试数据来进行运行测试。
算法测试的核心是对学习器的泛化偏差进行评估。为此是使用测试集来测试学习器对新样本的差异能力。而后以测试集上的测试偏差做为泛化偏差的近似。测试人员使用的测试集,只能尽量的覆盖正式环境用户产生的数据状况。正式环境复杂多样的数据状况,须要根据上线后,持续跟进外网数据。算法模型的适用性必定程度上取决于用户数据量,当用户量出现大幅增加,可能模型会随着数据的演化而性能降低,这时模型须要用新数据来作从新训练。

上线只是完成了一半测试,并不像APP或者WEB网站测试同样,测试经过后,发布到正式环境,测试工做就完成了。
测试集如何选取很关键,通常遵循两个原则:

  • 测试集独立同分布
  • 测试数据的数量和训练数据的比例合理

测试集独立同分布
不能使用训练数据来作为测试数据,此为独立。
测试数据须要和训练数据是同一个分布下的数据,此为分布。
举个例子,训练数据中正样本和负样本的分布为7:3,测试数据的分布也须要为7:3,或者接近这个分布,比较合理

测试数据的数量和训练数据的比例合理
当数据量比较小时,可使用 7 :3 训练数据和测试数据
(西瓜书中描述 常见的作法是将大约 2/3 ~ 4/5 的样本数据用于训练,剩余样本用于测试)
或者 6: 2 : 2 训练数据,验证数据和测试数据。
若是只有100条,1000条或者1万条数据,那么上述比例划分是很是合理的。

若是数据量是百万级别,那么验证集和测试集占数据总量的比例会趋向于变得更小。若是拥有百万数据,咱们只须要1000条数据,便足以评估单个分类器,而且准确评估该分类器的性能。假设咱们有100万条数据,其中1万条做为验证集,1万条做为测试集,100万里取1万,比例是1%,即:训练集占98%,验证集和测试集各占1%。对于数据量过百万的应用,训练集能够占到99.5%,验证和测试集各占0.25%,或者验证集占0.4%,测试集占0.1%。
这里写图片描述

通常算法工程师会将整个数据集,本身划分为训练集、验证集、测试集。或者训练集、验证集 等等。(这里的测试集是算法工程师的测试数据)
算法工程师提测时,写明自测时的准确率或其余指标。测试人员另外收集本身的测试集。
测试数据能够测试人员本身收集。或者公司的数据标注人员整理提供。或者爬虫。外部购买。
测试人员能够先用算法工程师的测试集进行运行测试查看结果。再经过本身的测试集测试进行指标对比。

测试用例思考点

第二篇(https://blog.csdn.net/lhh08hasee/article/details/82080090)