In this session, Kevin Seal will present some recent experiences of testing a JavaEE project and how coverage was a double-edged sword, unit testing a blessing and a curse, and a pragmatic mix of test approaches was eventually invaluable in refining the architecture and development process. Kevin Seal talks about the role of testing in design and development processes. Unit testing has several benefits, like providing easy refactoring, simplified integration, and improved documentation. However, while most developers know how to write unit tests, they do not necessarily know what they are testing. In other words, unit testing is not reliable for catching integration errors or broader system-level errors.
Kevin goes on to discuss how the testing process needs to be weighed in balance. If System Integration Tests (SIT) and User Acceptance Tests (UAT) are left for late in the development process or not given enough importance, the cost of errors at the architectural level are likely to be much more than the ones at the programming level. Unit testing is easy but architectural testing is more important. It is always better, he says, to treat the system as a whole, because unit tests do not give a feeling of complete consistency. Finally, Kevin stresses the importance of making sure that developers and architects use the same language when they talking about units, mock objects, fake objects, etc. The talk is followed by a round-table discussion where the role of testing in real world applications is discussed further.