人工智能系统的测试和传统的软件测试究竟有什么不一样呢?这个我们要从两者之间程序设计上的范式去看待。

我们知道,经典的程序设计是通过编程去输入一些算法规则和数据,然后再通过程序的算法去输出答案,这是经典程序设计的模式。

但是对于人工智能来说不是这样,人工智能是先输入数据和答案,中间的规则是由AI系统的训练过程所得到的。


也就是说我们经典程序的规则是人为写进去的,人工智能系统的规则是从数据中学到的,不断有新的数据进来之后,它里面的规则也会进一步地进行改变。根据学到的规则再从你的输入的数据中得出一个结果。
人工智能系统不是通过编写明确的逻辑,而是通过数据来训练数据、训练规则。所以它的测试方法和传统软件的测试方法肯定是有所区别的。

传统软件测试我们知道了规则之后,根据这个规则去设计测试用例就可以了,但是人工智能系统很难通过设计用例的这种方式去进行测试,这也是人工智能系统测试为什么有挑战性的一个根本性的一个原因。

总结来说,由于编程模式的改变,使得人工智能的程序会有很多的特性,导致其无法用传统的方法去进行测试。首先它输出的结果具有一定的随机性。因为它是从训练数据中所训练出的一个逻辑规则,使得它输出的结果和你的输入数据是非常相关的。


比如说对于一个图像分类的例子,它的输出往往是具有统计规律的一组概率值,这个概率值是无法事先预测的。我们传统的软件测试往往是有一个先验条件的,比如说我一个确定的输入,得出一个确定的输出,我再用这样的标准去验证传统软件的正确性。这条路在人工智能系统里面很难走通。

再一个就是人工智能系统通过的准则很难去确定,我怎么判断这个人工智能系统的测试是符合我的要求的?这个是非常难以判断的。从另外一个角度说,我很难判断人工智能系统它的输出还不是正确的。这个在测试领域也有一个专门的名词叫做“test oracle”的问题。也就是说我很难确定测试的结果到底是不是对的。

这里给大家举一个例子,下面这两幅图是医学辅助诊断领域的样例图,是皮肤上的疤痕的拍片的一个图,其中一张是真实的医院拍摄的图像,另一张是模仿医学图像去自动生成的一张新的图像,比如说我们现在要测试这样一个功能,测试我们的计算机生成的图片到底好不好,我们怎么来确定呢?我们很难通过一个量化的指标去确定,只能通过人的肉眼去做一个定性的判断。很难去判定我生成的图片是不是足够好,很难有客观的判定的准则。

接下来的一点是,我们刚才也说过,人工智能系统的规则是通过数据训练出来的,它的性能也就严重依赖于我们输入的训练数据的质量,数据的规模、数据的质量、数据的差别都会影响人工智能系统的性能。

特别是在很多时候,人工智能系统可能会表现出一个过拟合的现象,也就是说在训练阶段表现得很好的一个模型,可能在测试阶段表现并不是特别好,这样就造成我们在测试的时候,对数据的把握就非常的重要

最后一点就是人工智能系统它的输出结果,除了刚才说的不确定性之外,也是可能会随着时间进行变化的。一般来说,我们大多数企业中的人工智能系统是一个不断更新迭代的过程。先由一定的原始数据训练出一个模型出来,之后根据业务的调整,或者说随着用户数据的一些变化,一段时间之后,原来的模型准确率可能无法满足业务要求,企业往往会对模型进行一个更新的训练。这样这个系统输出的结果会随着你不断更新数据会产生变化。每次更新之后,可能会对这个系统进行一个重新的评估测试。

所以人工智能系统需要一个更高效、持续的测试方法
人工智能系统随着时间的变化,数据的演化,性能、输出结果也会发生变化,因此需要一个可持续的、可循环迭代的测试方法。能够尽快地去训练、测评、部署更新版的模型。这也是人工智能系统测试需要遵循的一个原则。

以上内容总结来说主要有以下三点:
1、数据驱动的AI系统相对于传统软件测试更复杂,更具有挑战。
2、AI的测试除了测试基础知识与技能之外,还需要测试人员掌握更加全面的知识,比如机器学习、统计学、大数据分析等。
3、AI的测试需要针对性的方法论。

举报/反馈

道普云

847获赞 487粉丝
咨询软件测试CNAS/CMA认可
道普云(山东)智能科技有限公司
关注
0
0
收藏
分享