# TMap

TMap (Test Management Approach) ist ein Modell im Bereich des Testens und der Qualitätssicherung von Software, in der alle anfallenden Aspekte, das Umfeld und die Vorgehensweise strukturiert werden.
Damit ist TMap spezieller als Prozessmodelle wie ITIL oder das V-Modell, die den gesamten Prozess der Softwareentwicklung betrachten. Veröffentlicht wurde es 1995 von Martin Pol, Ruud Teunissen und Erik van Veenendaal. TMap ist eingetragenes Warenzeichen von Sogeti Nederland B.V. und ist Standard in vielen Organisationen weltweit. Es kann TPI$^®$ (Test Process Improvement) aus derselben Unternehmensgruppe gegenübergestellt werden. Während TMap die Tests selbst strukturiert, will TPI$^®$ den gesamten Testprozess optimieren. Damit befindet sich TPI$^®$ auf der Management-Ebene, während TMap im konkreten Projekt eingesetzt werden soll. Dabei basiert TMap auf praktischer Erfahrung und stellt damit keine theoretische, sondern eine pragmatische Methode dar.

## Kernbereiche von TMap

Der Testprozess wird in 4 Bereiche, die sogenannten Kernbausteine unterteilt:
* Geschäftsbasiertes Testmanagement
* Vollständig strukturierter Testprozess
* Vollständiger Werkzeugsatz
* Adaptiver, flexibler Testprozess
Vorteile von TMap:
* TMap beruht auf der Erfahrung aus einer Vielzahl von Projekten
* berücksichtigt aktuelle Trends
* fokussiert auf den Testprozess
* optimiert Risikoabdeckung und Testtiefe
* maximiert Einbindung der Teilhaber

## Geschäftsbasiertes Testmanagement (BDTM)

Die Auswahl der Testfälle geschieht aufgrund folgender Überlegungen: welche Risiken gibt es, was soll das Ergebnis sein, wie viel Zeit darf das Testen in Anspruch nehmen und was wird es kosten. Aufgrund dieser Überlegungen, die in Absprache mit dem Kunden getroffen werden, unterstützt TMap den Geschäftsprozess und ist nah am Kunden.
Merkmale des BDTM-Ansatzes:
* Gesamtaufwand für das Testen bezieht sich auf Risiken des Systems, das für eine Organisation getestet werden soll. Der Einsatz von Menschen, Ressourcen und Budget konzentriert sich auf die Teile des Systems, die für die Organisation am wichtigsten sind. TMap bietet die Möglichkeit festzustellen wie viele Risiken durch den gewählten Test abgedeckt werden und so das Restrisiko abzuschätzen.
* Der geschätzte Aufwand und die Planung des Testprozesses sind eng mit der festgelegten Teststrategie verbunden. So kann leicht auf Änderungen eingegangen werden, da immer ein Plan zur Verfügung steht wie viel Zeit, Budget und Ressourcen benötigt werden.
* Der Kunde wird in den Testablauf eingebunden, so kann auf die Wünsche des Kunden besser eingegangen werden. Ein BDTM Ansatz kann auch die Konsequenzen zukünftiger und vergangener Entscheidungen sichtbar machen.

## Vollständig strukturierter Testprozess

Der strukturierte Testprozess ist untergliedert in:
* Masterplan und Management des gesamten Testprozesses
* Abnahme- und Systemtests
* Entwicklertests

### Masterplan

Damit im gesamten Testablauf nicht unnötig doppelt getestet wird, wird der sogenannte Masterplan in Zusammenarbeit mit dem Kunden erstellt. Der Testmanager legt also in Abstimmung mit dem Kunden und anderen Interessenvertretern die Verteilung fest, was in welcher Teststufe mit welcher Intensität getestet wird. Das Ziel ist dabei, die wichtigsten Fehler so früh und so wirtschaftlich wie möglich zu entdecken. Der Mastertestplan bildet die Grundlage für die Testpläne der einzelnen Teststufen.
Aktivitäten:
* Formulierung des Auftrags
* Verständnis für den Auftrag
* Produktrisiken
* Festlegen der Teststrategie
* Aufwandsabschätzung
* Festlegung der Planung
* Festlegen der Testprodukte
* Festlegung der Orientierung
* Definition der Infrastruktur
* Organisation-Management
* Bestimmung der Testprozessrisiken und Gegenmaßnahmen
* Rückmeldung und Konsolidierung des Plans

### Abnahme- und Systemtest

Abnahme- und Systemtests werden als autonome Prozesse betrachtet. Sie haben ihren eigenen Testplan, ihr eigenes Budget und oft auch eine eigene Testumgebung.

### Entwicklertest

Entwicklertests sind Tests, bei denen Kenntnisse über die technische Implementierung des Systems vonnöten sind. Entwicklertests werden bei TMap nicht als autonomer Prozess betrachtet. Der Entwickler führt die Tests selber aus.

### Aufgliederung des Phasenmodells

Wie ein Systementwicklungsprozess besteht ein Testprozess aus einer Reihe verschiedener Aktivitäten. Die verschiedenen Aktivitäten werden im Phasenmodel dargestellt. Es gibt folgende Phasen:
* Planungsphase
* Steuerungsphase
* Einrichtung und Wartung der Infrastruktur
* Vorbereitungsphase
* Spezifikationsphase
* Durchführungsphase
* Abschlussphase

#### Planungsphase

Die Planungsphase legt die Basis für einen beherrschbaren und qualitativ hochwertigen Testprozess. Deshalb ist es wichtig, mit dieser Phase so früh wie möglich zu beginnen.
Aktivitäten:
* Formulierung des Auftrags
* Verständnis für den Auftrag
* Bestimmung Testbasis
* Analyse der Produktrisiken
* Festlegung Teststrategie
* Aufwandsabschätzung
* Festlegung der Planung
* Zuweisung Testeinheiten und Testtechniken
* Festlegung der Testprodukte
* Festlegung der Organisation
* Definition Infrastruktur
* Organisation des Managements
* Bestimmung der Testprozessrisiken und Gegenmaßnahmen
* Rückmeldung und Konsolidierung

#### Steuerungsphase

Der primäre Testprozess wird selten nach Plan durchgeführt, dementsprechend muss die Durchführung des Testplans überwacht und ggf. angepasst werden. Dieses geschieht in der Steuerungsphase.
Aktivitäten:
* Management
* Überwachung
* Berichtswesen
* Anpassung

#### Einrichtung und Wartung der Infrastruktur

Hier wird für die notwendige Testinfrastruktur und die erforderlichen Ressourcen gesorgt. Dabei wird zwischen Testumgebungen, Testwerkzeugen und Arbeitsplätzen unterschieden.
Aktivitäten:
* Spezifikation der Infrastruktur
* Aufbau Infrastruktur
* Spezifikation der Annahme der Infrastruktur
* Annahme der Infrastruktur
* Wartung der Infrastruktur
* Konservierung der Infrastruktur

#### Vorbereitungsphase

Hier wird zuallererst ein Testbarkeitsreview der Testbasis durchgeführt. Das Ziel dieser Phase ist es, an eine Testbasis mit entsprechender Qualität zu kommen.
Aktivitäten:
* Zusammenstellung der Testbasis
* Erstellung von Checklisten
* Bewertung der Testbasis
* Erstellung Reviewbericht zur Testbarkeit

#### Spezifikationsphase

Die Spezifikationsphase legt die benötigten Tests und deren Ausgangssituation(en) fest. Das Ziel ist es so viel wie möglich vorzubereiten, sodass die Tests so schnell wie möglich durchgeführt werden können, wenn die Entwickler das Testobjekt ausliefern.
Aktivitäten:
* Erstellung Testdesign
* Definition Startpunkte
* Spezifikation Testobjektannahme

#### Durchführungsphase

Das Hauptziel der Durchführungsphase ist es einen Einblick in die Qualität des Testobjekts zu bekommen, indem die vereinbarten Tests durchgeführt werden.
Aktivitäten:
* Annahme Testobjekt
* Vorbereitung der Startpunkte
* Ausführung der Tests und Retests
* Prüfung und Bewertung der Testergebnisse

#### Abschlussphase

TMap bietet viele Vorzüge bezüglich Wiederholbarkeit von Prozessen. Ziel dieser Phase ist es, die Produkte der Durchführungsphase zu konservieren, sodass sie später wiederverwertet werden können, Produkte können sein, Testfälle, Testumgebung, Erfahrungen und Bewertungen.
Aktivitäten:
* Bewertung des Testprozesses
* Konservierung der Testware

## Vollständiger Werkzeugsatz

TMap unterstützt die korrekte Durchführung des strukturierten Testprozesses mit einem vollständigen Werkzeugsatz. Dieser konzentriert sich auf die Arbeit mit folgenden Themen:
* Techniken: Wie wird getestet
Folgende Techniken stehen zur Verfügung:
   * Testaufwandsschätzung
   * Fehlermanagement
   * Das Erstellen von Metriken
   * Produktrisikoanalyse
   * Testdesign
   * Produktprüfung
* Infrastruktur: Wo und womit wird getestet
Um testen zu können, sind eine Testumgebung, Testwerkzeuge und Arbeitsplätze notwendig.
* Organisation: Wer testet
Strukturiertes Testen erfordert die Aufmerksamkeit auf folgende Punkte:
   * Testrichtlinien
   * Permanente Testorganisation
   * Testorganisation im Projekt
   * Testexperten
   * Testrollen

## Adaptiver, flexibler Testprozess

TMap ist ein Ansatz der in allen Testsituationen und in Kombination mit allen Systementwicklungsmethoden angewandt werden kann. Die Anpassungsfähigkeit lässt sich durch vier Eigenschaften beschreiben:
* Auf Änderungen reagieren
* Produkte und Prozesse (wieder)verwenden
* Aus Erfahrung lernen
* Erst probieren, dann versuchen
Da heute Ansätze für IT-Entwicklungen extrem variabel sein können, werden hier einige Einsatzgebiete erwähnt, in denen TMap eingesetzt werden kann.
* Auftraggeber-Lieferanten-Beziehung (Outsourcing)
* Interaktiven, inkrementellen, Wasserfall- und agilen Ansätzen
* Neuentwicklung, Wartung und Migration von Informationssystemen
* Bei kombinierten Entwicklungsverfahren, wie inhouse, auf Basis der Wiederverwendung, Einsatz von Standardpaketen, Zusammenbau gekaufter Module, alles innerhalb einer einzigen IT-Architektur
* Zur Abdeckung nicht funktionaler Anforderungen des Informationssystems im Testverfahren
* In Situationen, bei denen den Kommunikationsprozessen und den zugehörigen Fähigkeiten viel Aufmerksamkeit geschenkt werden muss