design for testability (medconf 2012)
DESCRIPTION
Das Konzept vom "Design for Testability" stammt ursprünglich aus dem Hardware-Entwurf und bezeichnet die Auslegung elektronischer Produkte auf Prüfbarkeit. Mittlerweile ist dieser Begriff aber auch in der Welt der Software-Technik geläufig, wo er im Zusammenhang mit Methoden wie Testautomatisierung und Test-Driven Development eine zunehmende Rolle spielt. Der zentrale Gegenstand dieses Vortrags ist die Frage, wie sich eine gute Testbarkeit auf den verschiedenen Ebenen -- Module, Integration, System -- erreichen lässt. Dabei werden verschiedene Entwurfstechniken und Architekturstile vorgestellt, mit konkreten Erfahrungen aus der Praxis untermalt und in Bezug auf ihre Dienlichkeit bewertet. Was lernen die Zuhörer in dem Vortrag: Es werden sowohl theoretische Grundlagen zum "Design for Testability" als auch spezifische Fallbeispiele behandelt. Dabei sollen nicht nur hilfreiche Ansätze besprochen, sondern auch populäre Trugschlüsse zur Testbarkeit von Software-Systemen beleuchtet werden. Vortrag von Daniel Mölle Zielgruppe: Softwareentwickler, Softwarearchitekten, ProjektleiterTRANSCRIPT
© Zühlke 2012
Dr. Daniel Mölle
Design for Testability
27. September 2012Folie 1
© Zühlke 2012
Design for Testability
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 2
© Zühlke 2012
Design for Testability
Dr. Daniel Mölle
Rückblick
Informatik und Ingenieurwesen
27. September 2012Folie 3
© Zühlke 2012
1968: Software Engineering Conference
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 4
© Zühlke 2012
1972: The Humble Programmer
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 5
© Zühlke 2012
1986: Computer Science?
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 6
© Zühlke 2012
Design for Testability
Dr. Daniel Mölle
Testbarkeit
Von Hardware zu Software
27. September 2012Folie 7
© Zühlke 2012
Testbarkeit bei Hardware
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 8
Korrekt bestückt?Bauteile intakt?Lötstellen okay?
© Zühlke 2012
Übertragung auf Software
27. September 2012Design for Testability | Dr. Daniel Mölle
Korrektes Deployment?Komponentenlogik intakt?
Verbindungen okay?
Folie 9
Implementierung
Anforderungen
Architektur
Design Unittests
Integrationstests
Systemtests
© Zühlke 2012
Königsdisziplin:Automatisierte Systemtests
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 11
© Zühlke 2012
Design for Testability
Dr. Daniel Mölle
Unittests
27. September 2012Folie 12
InputController WorkflowEngine
Translator DisplayDriver
UIController
UIControllerKeyHandling.h
ViewStack.hKeyHandling.c
ViewStack.c Presenter.h
Presenter.c
InputController WorkflowEngine
Translator DisplayDriver
UIController
TranslatorMock
DisplayDriverMock
UIControllerTestSuite
KeyHandling.h
ViewStack.hKeyHandling.c
ViewStack.c Presenter.h
Presenter.c
© Zühlke 2012
Testbarkeit auf Modulebene
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 17
Architektur
Design
Buildsystem
Testumgebung
© Zühlke 2012
Design for Testability
Dr. Daniel Mölle
Integrationstests
27. September 2012Folie 18
InputController WorkflowEngine
Translator DisplayDriver
UIController
InputController WorkflowEngine
Translator DisplayDriver
UIController
IntegrationTest
WorkflowEngine
TranslatorMock
DisplayDriverMock
UIController
?
© Zühlke 2012
Testbarkeit auf Integrationsebene
27. September 2012Design for Testability | Dr. Daniel Mölle
Architektur
Design
Buildsystem
Testumgebung
Folie 23
© Zühlke 2012
Design for Testability
Dr. Daniel Mölle
Systemtests
27. September 2012Folie 24
InputController WorkflowEngine
Translator DisplayDriver
UIController
InputController WorkflowEngine
Translator DisplayDriver
UIController
Testcode Testcode
Testcode
Testcode
Testschnittstelle
InputController UIController
HartverdrahteterFunktionsaufruf
Rücksprung
Client Server Client
Network
SystemTest
© Zühlke 2012
Testbarkeit auf Systemebene
27. September 2012Design for Testability | Dr. Daniel Mölle
Architektur
Design
Buildsystem
Testumgebung
Folie 30
© Zühlke 2012
Dr. Daniel Mölle
Und die Kosten?
27. September 2012Folie 31
Design for Testability | Dr. Daniel Mölle
© Zühlke 2012
Der Trade-Off
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 32
Testabdeckung
Aufwand
Verständlichkeit
Qualität (und Zeit)
© Zühlke 2012
Design for Testability
Dr. Daniel Mölle
Fazit
27. September 2012Folie 33
© Zühlke 2012
Take-Away Messages
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 34
Testbarkeit als nicht-funktionale Anforderung
Wenn man es richtig macht:Gewinn an Qualität und Zeit
Von Anfang an in allen Disziplinen berücksichtigen
Alle drei Ebenen beachten
© Zühlke 2012
Umfassende Automatisierung
der Tests
27. September 2012Design for Testability | Dr. Daniel Mölle Folie 35
Erfolgsindikator #1
Bildnachweis:Die Fotos auf den Folien 5 (Dijkstra), 13 (Testpads) und 19 (JTAG)sind den Wikimedia Commons entnommen.