How is unit testing performed in organizations? Is it an informal activity that is done before integration if there is some time left after programming or is it the key element of the development effort? A recent poll examined the way unit testing is performed in software development organizations. Here are the results:
Unit testing is not performed 13%
Unit testing is informal 46%
Unit tests cases are documented 11%
Unit tests cases and their executions are documented 16%
We use a Test Driven Development approach 14%
These results do not claim any scientific value, but they give some information on the usage of unit testing in organizations. Unit testing is still performed informally by a majority of participants. This is symptomatic of the small consideration that is given to the testing activities in most software development projects. When the pressure to deliver is big, testing informally makes it easier to execute poorly without being noticed as you dont have to provide evidence of your activity. It is however recognized that unit testing is an important building block of system quality and that it costs more to correct errors discovered in later project phases. Good documentation of unit tests allows also to improve maintenance when the original developer has left the project or the company, because it can limit the occurrence that the correction introduced a negative side-effect.
At a time where agile approaches repeat the importance of unit testing, the glass can also be considered as half-empty. From this point of view, It is already encouraging to see that 41% of the participants are documenting their unit testing efforts. A Test Driven Development approach is used by 14% of the participants and 16% are documenting the execution of their unit test. These percentages are already important, as we know that documentation is not the preferred activity of software developers. They could be explained by the emergence of a wide range of open source unit testing frameworks in the xUnit family. They are the tools that should lead to more and more repeatable unit tests.