通过自动生成的测试间谍使测试成为可维护资产:以Scala集合库Iterator trait为例的研究
软件工程
2019-08-26 v3
摘要
在测试有状态抽象时,常常需要记录交互(如方法调用)并对这些交互表达断言。遵循测试间谍(Test Spy)设计模式,我们可以通过额外的可变状态以编程方式具体化此类交互。或者,诸如Mockito之类的模拟框架可以自动生成测试间谍,使我们能够以声明式领域特定语言记录交互并表达期望。根据我们对Scala的Iterator trait测试代码的研究,后一种方法就代码规模(某些情况下缩小超过70%)、圈复杂度以及所需额外可变状态量等指标而言,可显著减少测试代码复杂度。在这篇工具论文中,我们认为由此产生的测试代码不仅更具可维护性、可读性和意图明确性,而且相较于手动实现、显式有状态的测试间谍,更是与Scala社区更好的风格契合。
引用
@article{arxiv.1808.09630,
title = {Tests as Maintainable Assets Via Auto-generated Spies: A case study involving the Scala collections library's Iterator trait},
author = {Konstantin Läufer and John O'Sullivan and George K. Thiruvathukal},
journal= {arXiv preprint arXiv:1808.09630},
year = {2019}
}