How Developers Engineer Test Cases: An Observational Study

Mauricio Aniche, Christoph Treude, Andy Zaidman

Research output: Contribution to journalArticleScientificpeer-review

6 Citations (Scopus)
23 Downloads (Pure)

Abstract

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.

Original languageEnglish
Pages (from-to)4925-4946
Number of pages22
JournalIEEE Transactions on Software Engineering
Volume48
Issue number12
DOIs
Publication statusPublished - 2021

Bibliographical note

Green Open Access added to TU Delft Institutional Repository ‘You share, we take care!’ – Taverne project https://www.openaccess.nl/en/you-share-we-take-care
Otherwise as indicated in the copyright section: the publisher is the copyright holder of this work and the author uses the Dutch legislation to make this work public.

Keywords

  • Codes
  • Computer bugs
  • developer testing
  • Documentation
  • Software
  • software engineering
  • software testing
  • Software testing
  • Task analysis
  • Tools

Fingerprint

Dive into the research topics of 'How Developers Engineer Test Cases: An Observational Study'. Together they form a unique fingerprint.

Cite this