对于测试结果准确性的问题,我们可以引入“蜕变测试”这么一个思路,进行测试。蜕变测试在整个软件测试领域也已经提出很多年了,这个测试的思维也是特别适合人工智能系统刚才说的如何判断测试结果准不准确的问题。
比如说我们要测试sinx,如果说我们不知道我们输入的x它的结果是不是对的,我们可以构造一个蜕变关系,sinx=sin(π-x),然后我们输入x和π-x,去看看它的输出结果是不是符合我们蜕变的关系,由此来判断我们的测试结果是不是准确。
对于人工智能系统也是一样的,我们可以把我们测试的输入数据也是进行一些变换,比如说可以变换测试数据的规模、输入的顺序等,也可以针对单个输入的样本去进行一个变换。比如说变换测试数据的一个标签值,或者某些像素值等等。
之前我们需要假设,比如说我们构建的一些像素值或者改变规模等等,应该是不改变它的一个输出结果,有这样一个蜕变关系之后,我们再把两种输入输入到系统当中去,看看它们是不是符合这样一个结果。
第二种就是变异测试的一个思路,这个解决我们测试充分性的问题,也就是说我们所进行的测试到底是不是充分的,是不是足够了。到底测试进行到什么程度才是足够呢?我们可以通过引入变异测试的思路来实现。
它的思路是将被测系统在数据源级别或模型级别进行变异,由此会生成一些变异的版本,然后把我们的测试数据输入到这些编译的版本当中去,去测试这些测试的结果,能不能使这些变异的版本的输出出现一些变化,如果说能够使变异的版本出现一些输出结果的变化的话,我们就可以判断输入的测试用例是比较有效的。反之的话,就说明我们这个测试用例无法很好地测试出系统的一些变化。
由此来判断我们的测试集是不是充分,是不是所有的编译的版本能够使它发生一个变化。