How Developers Engineer Test Cases: An Observational Study
- 23 November 2021
- journal article
- research article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. PP (00985589) , 1
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.Keywords
All Related Versions
Funding Information
- Schweizerischer Nationalfonds zur Frderung der Wissenschaftlichen Forschung (200021M_205146)
- Nederlandse Organisatie voor Wetenschappelijk Onderzoek (Vici "TestShift" project (No. VI.C.182.032))
This publication has 70 references indexed in Scilit:
- Influence of confirmation biases of developers on software quality: an empirical studySoftware Quality Journal, 2012
- Studying the co-evolution of production and test code in open source and industrial developer test processes through repository miningEmpirical Software Engineering, 2010
- On the Interplay Between Software Testing and Evolution and its Effect on Program Comprehension2008
- What is software testing? And why is it so hard?IEEE Software, 2000
- Software unit test coverage and adequacyACM Computing Surveys, 1997
- A simplified domain-testing strategyACM Transactions on Software Engineering and Methodology, 1994
- Why software testing is sometimes ineffective: Two applied studies of positive test strategy.Journal of Applied Psychology, 1994
- A Description of Think Aloud Method and Protocol AnalysisQualitative Health Research, 1993
- Practical programmerCommunications of the ACM, 1991
- The category-partition method for specifying and generating functional testsCommunications of the ACM, 1988