4 AI系统的测试关键技术和实践
4.1 功能测试的困局
在传统系统的功能测试中,测试工程师无论是做手工测试还是自动化测试,都必须先设计和开发测试用例,然后才能利用测试用例完成测试工作,给出测试结论。从这里可以看出,测试用例是测试工作中很重要的产出物。IEEE 610在1990年就给出了测试用例的定义“为特定目的开发的一套测试输入、执行条件以及期望结果的集合,例如运用特殊的程序路径或检查应用是否满足某个特定的需求。”从这个定义中我们可以看到,测试用例包含了三个条件分别是测试输入、执行条件和期望结果,这三个条件有一个共同的约束词就是一套。这表明这三个条件是一个三元组,相互之间是有关联的。一条测试用例一定包含了一组的输入条件,一系列明确的执行条件和一组明确的期望结果。在测试执行过程中,如果测试工程师必须严格遵从测试用例的输入、执行条件完成和被测试系统的交互,最后将实际结果和预期结果进行比对,判断测试是否通过。这个过程中,测试工程师如果发现系统的实际结果和测试用例中的预期结果不一致,就应该发现了一个问题,如果测试用例设计没问题,那么就发现了一个缺陷,如果测试用例不对,就需要修改测试用例的问题。但是无论怎么样,测试用例执行工作都是检查被测试系统的实际输出和预期结果偏差的工作。在传统的软件测试中,功能测试用例设计方法包含了边界值法、等价类划分法、因果图法、场景法、正交试验法等多种测试用例设计方法,那么每一种其实都是基于软件系统的设计逻辑,这里的设计逻辑其实是代码的实现逻辑,从而设计出一些应该有的输入和对应的输出,这些输入和输出是成对出现的,是站在原始需求的基础之上,依据代码实现逻辑设计的。如上这些测试用例设计方法可以让测试工程师站在代码实现之上“猜测”测试输入和预期输出,这