36
© Zühlke 2012 Dr. Daniel Mölle Design for Testability 27. September 2012 Folie 1

Design for Testability (MedConf 2012)

  • Upload
    zuehlke

  • View
    664

  • Download
    1

Embed Size (px)

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, Projektleiter

Citation preview

Page 1: Design for Testability (MedConf 2012)

© Zühlke 2012

Dr. Daniel Mölle

Design for Testability

27. September 2012Folie 1

Page 2: Design for Testability (MedConf 2012)

© Zühlke 2012

Design for Testability

27. September 2012Design for Testability | Dr. Daniel Mölle Folie 2

Page 3: Design for Testability (MedConf 2012)

© Zühlke 2012

Design for Testability

Dr. Daniel Mölle

Rückblick

Informatik und Ingenieurwesen

27. September 2012Folie 3

Page 4: Design for Testability (MedConf 2012)

© Zühlke 2012

1968: Software Engineering Conference

27. September 2012Design for Testability | Dr. Daniel Mölle Folie 4

Page 5: Design for Testability (MedConf 2012)

© Zühlke 2012

1972: The Humble Programmer

27. September 2012Design for Testability | Dr. Daniel Mölle Folie 5

Page 6: Design for Testability (MedConf 2012)

© Zühlke 2012

1986: Computer Science?

27. September 2012Design for Testability | Dr. Daniel Mölle Folie 6

Page 7: Design for Testability (MedConf 2012)

© Zühlke 2012

Design for Testability

Dr. Daniel Mölle

Testbarkeit

Von Hardware zu Software

27. September 2012Folie 7

Page 8: Design for Testability (MedConf 2012)

© 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?

Page 9: Design for Testability (MedConf 2012)

© Zühlke 2012

Übertragung auf Software

27. September 2012Design for Testability | Dr. Daniel Mölle

Korrektes Deployment?Komponentenlogik intakt?

Verbindungen okay?

Folie 9

Page 10: Design for Testability (MedConf 2012)

Implementierung

Anforderungen

Architektur

Design Unittests

Integrationstests

Systemtests

Page 11: Design for Testability (MedConf 2012)

© Zühlke 2012

Königsdisziplin:Automatisierte Systemtests

27. September 2012Design for Testability | Dr. Daniel Mölle Folie 11

Page 12: Design for Testability (MedConf 2012)

© Zühlke 2012

Design for Testability

Dr. Daniel Mölle

Unittests

27. September 2012Folie 12

Page 13: Design for Testability (MedConf 2012)
Page 14: Design for Testability (MedConf 2012)

InputController WorkflowEngine

Translator DisplayDriver

UIController

Page 15: Design for Testability (MedConf 2012)

UIControllerKeyHandling.h

ViewStack.hKeyHandling.c

ViewStack.c Presenter.h

Presenter.c

InputController WorkflowEngine

Translator DisplayDriver

Page 16: Design for Testability (MedConf 2012)

UIController

TranslatorMock

DisplayDriverMock

UIControllerTestSuite

KeyHandling.h

ViewStack.hKeyHandling.c

ViewStack.c Presenter.h

Presenter.c

Page 17: Design for Testability (MedConf 2012)

© Zühlke 2012

Testbarkeit auf Modulebene

27. September 2012Design for Testability | Dr. Daniel Mölle Folie 17

Architektur

Design

Buildsystem

Testumgebung

Page 18: Design for Testability (MedConf 2012)

© Zühlke 2012

Design for Testability

Dr. Daniel Mölle

Integrationstests

27. September 2012Folie 18

Page 19: Design for Testability (MedConf 2012)
Page 20: Design for Testability (MedConf 2012)

InputController WorkflowEngine

Translator DisplayDriver

UIController

Page 21: Design for Testability (MedConf 2012)

InputController WorkflowEngine

Translator DisplayDriver

UIController

Page 22: Design for Testability (MedConf 2012)

IntegrationTest

WorkflowEngine

TranslatorMock

DisplayDriverMock

UIController

?

Page 23: Design for Testability (MedConf 2012)

© Zühlke 2012

Testbarkeit auf Integrationsebene

27. September 2012Design for Testability | Dr. Daniel Mölle

Architektur

Design

Buildsystem

Testumgebung

Folie 23

Page 24: Design for Testability (MedConf 2012)

© Zühlke 2012

Design for Testability

Dr. Daniel Mölle

Systemtests

27. September 2012Folie 24

Page 25: Design for Testability (MedConf 2012)

InputController WorkflowEngine

Translator DisplayDriver

UIController

Page 26: Design for Testability (MedConf 2012)

InputController WorkflowEngine

Translator DisplayDriver

UIController

Testcode Testcode

Testcode

Testcode

Testschnittstelle

Page 27: Design for Testability (MedConf 2012)
Page 28: Design for Testability (MedConf 2012)

InputController UIController

HartverdrahteterFunktionsaufruf

Rücksprung

Page 29: Design for Testability (MedConf 2012)

Client Server Client

Network

SystemTest

Page 30: Design for Testability (MedConf 2012)

© Zühlke 2012

Testbarkeit auf Systemebene

27. September 2012Design for Testability | Dr. Daniel Mölle

Architektur

Design

Buildsystem

Testumgebung

Folie 30

Page 31: Design for Testability (MedConf 2012)

© Zühlke 2012

Dr. Daniel Mölle

Und die Kosten?

27. September 2012Folie 31

Design for Testability | Dr. Daniel Mölle

Page 32: Design for Testability (MedConf 2012)

© 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)

Page 33: Design for Testability (MedConf 2012)

© Zühlke 2012

Design for Testability

Dr. Daniel Mölle

Fazit

27. September 2012Folie 33

Page 34: Design for Testability (MedConf 2012)

© 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

Page 35: Design for Testability (MedConf 2012)

© Zühlke 2012

Umfassende Automatisierung

der Tests

27. September 2012Design for Testability | Dr. Daniel Mölle Folie 35

Erfolgsindikator #1

Page 36: Design for Testability (MedConf 2012)

Bildnachweis:Die Fotos auf den Folien 5 (Dijkstra), 13 (Testpads) und 19 (JTAG)sind den Wikimedia Commons entnommen.