蜕变测试

蜕变测试（） 是一种用来缓解“测试准则问题”的软件测试技术。 测试准则是一种让测试人员判定程序是否能通过测试的机制。当测试人员对于所选择的测试用例难以确定预期的正确结果，或无法判定程序输出是否满足预期的结果时，便认为存在“测试准则问题”。

定義
蜕变测试中指出，给出一个或多个测试用例（称为“源测试用例”或“原始测试用例”）及其预期输出（如果有的话），一个或多个用来验证系统或待实现函数的必要属性（称为蜕变关系）的后续测试用例可以被构造出来。例如，一个程序正确实现了sin x的100位有效数字。正弦函数的一个蜕变关系是“sin (π − x) = sin x”，因此即使对于源测试用例 x = 1.234 来说，sin x 的预期输出并不知道，但依然可以以此构造一个后续测试用例 y = π − 1.234。然后判断源测试用例和后续测试用例产生的输出是否在蜕变关系下一致。任何不一致的输出表示了程序的实现中存在缺陷。

應用
在一般情况下，蜕变关系并不需要一定是一个等式或方程，也可以是一个关系。蜕变试验可以应用于包含了目标函数多次执行过程、其必要属性可以被定制的任何问题中。一些成功应用蜕变测试的例子包括：偏微分方程、普适计算、服务计算、绘图软件、生物信息学 、软件产品线以及网络搜索引擎等。

蜕变测试也被应用于机器学习、人工智能算法、以及基于神经网络的深度学习模型中 

，并被认为是用来验证机器学习软件的一种很有前景的方法。

参考文献

外部链接 
 ACM SIGSOFT webinar on metamorphic testing 
软件测试