One of the main challenges that developers face when testing their systems lies in engineering test cases that are good enough to reveal bugs. And while our body of knowledge on software testing and automated test case generation is already quite significant, in practice, developers are still the ones responsible for engineering test cases manually. Therefore, understanding the developers' thought- and decision-making processes while engineering test cases is a fundamental step in making developers better at testing software. In this paper, we observe 13 developers thinking-aloud while testing different real-world open-source methods, and use these observations to explain how developers engineer test cases. We then challenge and augment our main findings by surveying 72 software developers on their testing practices. We discuss our results from three different angles. First, we propose a general framework that explains how developers reason about testing. Second, we propose and describe in detail the three different overarching strategies that developers apply when testing. Third, we compare and relate our observations with the existing body of knowledge and propose future studies that would advance our knowledge on the topic.
翻译:开发者在测试其系统时面临的主要挑战之一是工程测试案例,这些案例足以揭示错误。而尽管我们在软件测试和自动测试案例生成方面的知识已经相当重要,但实际上,开发者仍然是负责工程测试案例的人。因此,了解开发者的思想和决策过程,而工程测试案例是让开发者更好地测试软件的一个基本步骤。在本文中,我们观察13个开发者思考的持久,同时测试不同的现实世界开放源码方法,并使用这些观察来解释开发者工程师测试案例的方式。我们然后通过调查72个软件开发者测试实践的情况来质疑和增加我们的主要发现。我们从三个不同角度讨论我们的结果。首先,我们提出了一个总框架,解释开发者如何解释测试的理由。第二,我们提出并详细描述开发者在测试时应用的三种不同的总体战略。第三,我们将我们的观点与现有的知识体系进行比较和联系,并提议未来研究,以增进我们关于这个主题的知识。