Testing is an important aspect of software development, but unfortunately, it is often neglected. While test quality analyses such as code coverage or mutation analysis inform developers about the quality of their tests, such reports are viewed only sporadically during continuous integration or code review, if they are considered at all, and their impact on the developers' testing behavior therefore tends to be negligible. To actually influence developer behavior, it may rather be necessary to motivate developers directly within their programming environment, while they are coding. We introduce IntelliGame, a gamified plugin for the popular IntelliJ Java Integrated Development Environment, which rewards developers for positive testing behavior using a multi-level achievement system: A total of 27 different achievements, each with incremental levels, provide affirming feedback when developers exhibit commendable testing behavior, and provide an incentive to further continue and improve this behavior. A controlled experiment with 49 participants given a Java programming task reveals substantial differences in the testing behavior triggered by IntelliGame: Incentivized developers write more tests, achieve higher coverage and mutation scores, run their tests more often, and achieve functionality earlier.
翻译:测试是软件开发中的重要方面,但遗憾的是,它常常被忽视。虽然代码覆盖率或变异分析等测试质量分析能告知开发者测试的质量,但这些报告仅在持续集成或代码审查期间偶尔被查看(如果考虑它们的话),因此它们对开发者测试行为的影响往往微乎其微。为了真正影响开发者行为,或许有必要在开发者编程时直接在其编程环境中激励他们。我们引入了IntelliGame,这是一个针对流行的IntelliJ Java集成开发环境的游戏化插件,它通过多层成就系统奖励开发者积极的测试行为:总共27个不同的成就,每个都有递增的层级,在开发者表现出值得称赞的测试行为时提供肯定性反馈,并激励他们继续和改进这种行为。一项包含49名参与者的受控实验(他们被分配了一项Java编程任务)揭示了IntelliGame引发的测试行为的显著差异:受到激励的开发者编写了更多测试,获得了更高的覆盖率和变异分数,更频繁地运行测试,并且更早地实现了功能。