对于机器学习和 AI 算法,问题在于通常没有没有人工干预的oracle。以图像识别为例。解决图像识别问题的常用方法是通过监督机器学习。这通常首先策划一个正确标记的图像数据集以进行训练和验证,这本身就是通过人工干预为开发中的软件模型引入oracle的一种方式。这意味着对模型进行的测试范围将受到人类努力的限制,扩展测试用例,例如通过在线测试显着增加抽样规模和品种,将是一个问题。
Chen et al (1998) 给出的一个例子是测试给定路径是否是无向加权图中的最短路径。这是软件测试中的一个典型案例,当图很复杂时,求助于预言机的成本会很高。如果 (x, v1, …, vN, y) 是建议的 x 和 y 之间长度为 p 的最短路径,Chen 等人建议对该算法进行一些后续测试,其中包括:
找出 y 和 x 之间的最短路径(反向),并验证长度也是 p。
找出 x 和 vK 之间以及 vK 和 y 之间的最短路径。 对于介于 1 和 N 之间的任何 K,验证两条路径的长度总和也是 p。
正式地说,假设 f 是我们正在测试的软件,我们有一个输入 x 和输出 f(x)。 我们没有 f(x) 的预言机,因此验证这个单一的测试用例会很困难。 然而,基于变形关系的已知变换 T 可以应用于 x 以生成后续测试用例 T(x)。 我们可以计算出 f(T(x)),然后通过使用变形关系从已知的 f(x) 构造一个预言机 T’(f(x)) 来验证它。 在上面最短路径问题的例子中,已知的结果长度 p 成为了两类后续测试用例的预言机。
Metamorphic testing on machine learning classifiers
Xie et al (2011)[7] 提出将变形测试应用于机器学习分类器。 他们在 Weka 3.5.7 版上进行了测试,以 k-最近邻 (kNN) 和朴素贝叶斯分类器 (NBC) 的实现为例。 他们在 kNN 实现中发现了一些意想不到的假设,在 NBC 的情况下,发现了一些错误。
J. Carver, N. P. C. Hong, and G. K. Thiruvathukal, Eds., Software engineering for science. Boca Raton: Taylor & Francis, CRC Press, 2017.
E. J. Weyuker, “On testing non-testable programs,” The Computer Journal, vol. 25, no. 4, pp. 465–470, 1982. ↩
M. D. Davis and E. J. Weyuker, “Pseudo-oracles for Non-testable Programs,” in Proceedings of the ACM ’81 Conference, New York, NY, USA, 1981, pp. 254–257. ↩
T. Y. Chen, S. C. Cheung, and S. M. Yiu, “Metamorphic testing: a new approach for generating next test cases,” Technical Report HKUST-CS98-01, Department of Computer Science, Hong Kong University of Science and Technology, Hong Kong, 1998. ↩
V. Le, M. Afshari, and Z. Su, “Compiler Validation via Equivalence Modulo Inputs,” in Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, New York, NY, USA, 2014, pp. 216–226. ↩
T. Y. Chen et al., “Metamorphic Testing: A Review of Challenges and Opportunities,” 2017. ↩ X. Xie, J. W. K. Ho, C. Murphy, G. Kaiser, B. Xu, and T. Y. Chen,
“Testing and validating machine learning classifiers by metamorphic testing,” Journal of Systems and Software, vol. 84, no. 4, pp. 544–558, Apr.2011. ↩
C. Murphy, G. E. Kaiser, L. Hu, and L. Wu, “Properties of Machine Learning Applications for Use in Metamorphic Testing,” in SEKE, 2008, vol. 8, pp. 867–872. ↩