Abstract—Testability is a software quality characteristic that exposes the degree to which a software artifact facilitates the testing process. Software testing is a technical and economical problem, it is important to help identify patterns that would improve the industry’s software testing capabilities. This position paper proposes five abstract patterns that improve software testability, which serves as a reference for testers and developers to evaluate the testability support for high reliable software.
(full paper)
http://patterns-wg.fuka.info.waseda.ac.jp/SPAQU/proceedings2009/3-P2-AbstractTestabilityPatterns.pdf
Several specialists talk about the importance of software testability for software developement. In special, when applied for large-scale systems, this attribute should be fundamental to project success. Jungmayr (Jungmayr, 2002) compile some important references about this issue:
During the design of new systems we do not have only to answer the question ‘can we build it?’ but also the question ‘can we test it?’. Good testability of systems is becoming more and more important (Pol, Koomen, & Spillner, 2000 apud Jungmayr, 2002).
The absence of design for testability in large systems can greatly reduce testing effectiveness (Binder, 1999).
Design for testability, although rarely the first concern of smaller projects, is of paramount importance when successfully constructing large and very large C++ systems (Lakos, 1996 apud Jungmayr, 2002).
Lakos, J. (1996). Large-Scale C++ Systems. Addison-Wesley.
Binder, R. V. (1999). Testing Object-Oriented systems: models, patterns and tools. Addison Wesley.
Pol, M., Koomen, T., & Spillner, A. (2000). Management und Optimierung des Testprozesses: Praktischer Leitfaden für erfolgreiches Software-Testen mit TPI und TMap. Verlag.
Jungmayr, S. (2002). Design for Testability. Nürnberg, DE: CONQUEST.
ABSTRACT
Two key aspects of extreme programming (XP) are unit testing and merciless refactoring. Given the fact that the ideal test code / production code ratio approaches 1:1, it is not surprising that unit tests are being refactored. We found that refactoring test code is different from refactoring production code in two ways: (1) there is a distinct set of bad smells involved, and (2) improving test code involves additional test-specific refactorings. To share our experiences with other XP practitioners, we describe a set of bad smells that indicate trouble in test code, and a collection of test refactorings to remove these smells.
http://homepages.cwi.nl/~leon/papers/xp2001/xp2001.pdf