Publication Type
Journal Article
Version
acceptedVersion
Publication Date
12-2022
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
Codes, Software, Task Analysis, Software Testing, Tools, Documentation, Computer Bugs, Software Engineering, Software Testing, Developer Testing
Discipline
Software Engineering
Research Areas
Software and Cyber-Physical Systems
Publication
IEEE Transactions on Software Engineering
Volume
48
Issue
12
First Page
4925
Last Page
4946
ISSN
0098-5589
Identifier
10.1109/TSE.2021.3129889
Publisher
Institute of Electrical and Electronics Engineers
Citation
ANICHE, Maurício; TREUDE, Christoph; and ZAIDMAN, Andy.
How developers engineer test cases: An observational study. (2022). IEEE Transactions on Software Engineering. 48, (12), 4925-4946.
Available at: https://ink.library.smu.edu.sg/sis_research/8792
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-No Derivative Works 4.0 International License.
Additional URL
https://doi.org/10.1109/TSE.2021.3129889