Abstract
DesignforTestability
StefanJungmayr
Testabilityisasoftwarequalitycharacteristicthatisofmajorrelevancefortestcostsandsoft-waredependability.Still,testabilityisnotanexplicitfocusintoday’sindustrialsoftwaredevel-opmentprojects.Relatedprocesses,guidelines,andtoolsaremissing.
Thispaperisaboutdesignfortestability,themainintersectionofsoftwaredesignandtesting.Wedescribe1elementsofobject-orientedsoftwaredesignthatmaycausetestingproblemsand2guidelinesonhowtoimprovetestabilityincludingtheuseofdesignpatterns.Thespe-cialfocusisonsystemdependenciesandobservability.
Keywords
testing,testability,designfortestability,designpatterns,dependencies,observability
CONQUEST2002-57
1Introduction
Testingconsumesasignificantamountoftimeandeffortwithinanaveragesoftwaredevelopmentproject.Therearedifferentapproachestokeeptestcostsundercontrolandtoincreasethequalityoftheproductundertest:•••••••
improvethesoftwarespecificationanddocumentation,reduceorchangefunctionalrequirementstoeasetesting,usebettertesttechniques,usebettertesttools,improvethetestprocess,trainpeople,and
improvethesoftwaredesignandimplementation.
Inthispaperwefocusonsoftwaredesignandhowitcanbeimprovedtofacilitatetesting.
Thedegreetowhichasoftwaresystemorcomponentfacilitatestestingiscalledtestability.Designingasoftwaresystemwithtestinginmindiscalleddesignfortestability.
Therearedifferentwaystoimprovethetestabilityofasoftwaredesign,forexampletolimit