[译] 软件测试中的预言问题综述
原文:The Oracle Problem in Software Testing: A Survey。作者为 Earl T. Barr、Mark Harman、Phil McMinn、Muzammil Shahbaz 和 Shin Yoo。正式发表信息为 IEEE Transactions on Software Engineering,2015 年,第 41 卷第 5 期,507–525 页。UCL Discovery 提供开放获取版本。 译者说明:本文依据所提供的 31 页 PDF 翻译。该 PDF 的生成日期为 2014 年 11 月 17 日,章节和引用编号沿用这份稿件。文中的“当前”“近年来”和研究展望均指原文写作时期。本文将 test oracle 译为“测试预言”,其余计算机技术名词保留英文,首次出现时酌加中文说明。参考文献保留英文著录。原文公式中需要注意的记号问题另列译注。UCL 将原作标注为 CC BY 3.0。本文为中文译文,配图来自原作。 摘要 测试通过检查系统行为来发现潜在 fault。给定系统输入,如何区分预期的正确行为和可能错误的行为,就是测试预言问题(test oracle problem)。自动化测试预言,有助于消除制约整体测试自动化的一项瓶颈。缺少自动化测试预言时,人必须判断观察到的行为是否正确。 已有研究提出了多种测试预言自动化技术,包括建模、specification、contract-driven development 和 metamorphic testing。这些技术都不足以解决问题时,最终的测试预言信息来源仍然是人。人可能掌握非形式化 specification 与领域知识,也可能了解预期和惯例,用它们指导判断。包括人工判定在内,所有形式的测试预言都面临降低成本、增加收益的问题。本文全面综述测试预言问题的现有解决方法,并分析这一软件测试研究与实践领域的发展趋势。 关键词:测试预言;automatic testing;testing formalism。 1 引言 软件测试研究一直希望在可行且合适的范围内,尽可能自动化测试过程,让测试更快,降低成本并提高结果的可靠性。要做到这一点,需要测试预言(test oracle),即区分 System Under Test(SUT,被测系统)正确行为与错误行为的判定过程。 ...