A Longitudinal Study of the Use of a Test-Driven Development Practice in Industry

Author(s): J. Sanchez, L. Williams, and E.M. Maximilien
Venue: Agile Conf., IEEE CS Press
Date: 2007


Methodology: TDD
Duration: 5 years, 10 release
Company: IBM
Type of project: JavaPOS Device Drivers
# of developers: 9 to 17
project life: Legacy
Experience with the Methodology: None
Team Language Experience: 3 unexperienced
Collocation: Distributed
Code Size (KLOC) New; Base; Total: 73, 41,114
Number of releases (iterations): 10
Test/implementatoin code ratio: 0.54
% lower defect density: 40
Learning curve: Was easier over time

The case study was done over a 5 year time span with 10 released with a development team at IBM. Their product was a POS (Point of Sale) device drivers for items such as receipt machines, registers and other items used to record a sale transaction. During the time span, the engineering team grew from 9 engineers to a total of 17. The team learned a few things while they were using a TDD practice Junit was a very important tool to help with testing and allow regression test to be done daily. However, not all tests can be automated and they would have to be manually run. By creating a good design and structure of the code, you would be able to maximize the percentage of automative tests. Creating a new test case for each defect that is detected is very important to his process.