design for testability (medconf 2012)

Post on 04-Jul-2015

664 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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

top related