2. Testen im SoftwareLebenszyklus Flashcards
Teststufen
nach dem
allgemeinen V-Modell
- Komponententest (unit test)
- Integrationstest
- Systemtest
- Abnahmetest
Iterativ-inkrementelle Entwicklungsmodelle
Bei iterativ-inkrementeller Entwicklung werden Anforderungen, Entwurf, Entwicklung und Test in einer Reihe kurzer Entwicklungszyklen durchlaufen. Beispiele:
- Prototyping
- Rapid Application Development (RAD)
- der Rational Unified Process (RUP) und
- agile Entwicklungsmodelle.
Jedes Inkrement bzw. Erweiterung, die der bisherigen Entwicklung
hinzugefügt wird, ergibt ein wachsendes System, das ebenso getestet werden muss. Regressionstests haben daher bei allen Iterationen nach dem ersten Zyklus eine zunehmende Bedeutung.
Testen innerhalb eines Entwicklungslebenzyklus
- Zu jeder Entwicklungsaktivität gibt es eine zugehörige Aktivität im Testen.
- Jede Teststufe hat Testziele, die spezifisch für diese Stufe sind.
- Die Analyse und der Entwurf der Tests für eine Teststufe sollten während der zugehörigen Entwicklungsaktivität beginnen.
- Die Tester sollten im Reviewprozess der Entwicklungsdokumente (Anforderungen, Analyse und Design) eingebunden werden.
Charakteristika von Teststufen
- allgemeine Ziele
- die Arbeitsergebnisse, von denen die Testfälle abgeleitet werden (also die Testbasis)
- das Testobjekt (also was getestet wird)
- typische Fehlerwirkungen und –zustände, die gefunden werden sollten
- Anforderungen an den Testrahmen und Werkzeugunterstützung
- spezifische Ansätze und
- Verantwortlichkeiten
Komponententest
Der Komponententest (auch bekannt als Unit-, Modul- oder Programmtest) hat zum Ziel, Software, die separat getestet werden kann (z.B. Module, Programme, Objekte, Klassen, etc.), zu prüfen und darin vorhandene Fehler zu finden.
Testfälle werden von Entwicklungsdokumenten wie einer Komponentenspezifikation, dem Softwareentwurf oder dem Datenmodell abgeleitet.
Komponententest
Testbasis
Testbasis:
- Anforderungen an die Komponente
- detaillierter Entwurf
- Code
Komponententest
Typische Testobjekte
Typische Testobjekte:
- Komponenten
- Programme
- Datenumwandlung/Migrationsprogramme
- Datenbankmodule
Test-First-Ansatz
Ein Ansatz beim Komponententest ist es, die Testfälle vor der Implementierung der Funktionalität vorzubereiten und zu automatisieren. Dies wird Test-First-Ansatz oder testgetriebene Entwicklung (test-driven) genannt.
Dieser Ansatz ist sehr iterativ und basiert auf Zyklen aus Entwicklung von Testfällen, der Entwicklung und Integration von kleinen Code-Stücken und der Ausführung von Komponententests im Wechsel mit der Behebung der Probleme, bis die Tests erfolgreich durchlaufen sind.
Integrationstest
Der Integrationstest prüft die Schnittstellen zwischen Komponenten und die Interaktionen zwischen verschiedenen Teilen eines Systems, beispielsweise zum Betriebssystem, Dateisystem, zur Hardware, und er prüft die Schnittstellen zwischen Systemen.
Integrationstest
Testbasis
Testbasis
- Software- und Systementwurf
- Architektur
- Nutzungsabläufe/Workflows
- Anwendungsfälle (use cases)
Integrationstest
Typische Testobjekte
Typische Testobjekte:
- Subsysteme
- Datenbankimplementierungen
- Infrastruktur
- Schnittstellen
- Systemkonfiguration und Konfigurationsdaten
Komponentenintegrationstest
Ein Komponentenintegrationstest prüft das Zusammenspiel der Softwarekomponenten und wird nach dem Komponententest durchgeführt.
Systemintegrationstest
Ein Systemintegrationstest prüft das Zusammenspiel verschiedener Softwaresysteme oder zwischen Hardware und Software und kann nach dem Systemtest durchgeführt werden.
Je größer der Umfang einer Integration ist, desto schwieriger ist die Isolation von Fehlerzuständen in einer spezifischen Komponente oder einem System, was zur Erhöhung des Risikos und zusätzlichem Zeitbedarf zur Fehlerbehebung führen kann.
Systemtest
Der Systemtest beschäftigt sich mit dem Verhalten eines Gesamtsystems/-produkts. Das Testziel soll klar im Master- und/oder Stufentestkonzept dieser Teststufe festgelegt sein.
Beim Systemtest sollte die Testumgebung mit der finalen Ziel- oder Produktivumgebung so weit wie möglich übereinstimmen, um das Risiko umgebungsspezifischer Fehler, die nicht während des Testens gefunden werden, zu minimieren.
Systemtests sollen funktionale und nicht-funktionale Anforderungen an das System sowie Datenqualitätscharakteristiken untersuchen.
Systemtests werden oft durch unabhängige Testteams durchgeführt.
Systemtest
Testbasis
Testbasis
- System- und Anforderungsspezifikation
- Anwendungsfälle (use cases)
- funktionale Spezifikation
- Risikoanalyseberichte
Systemtest
Typische Testobjekte
Typische Testobjekte
- System-, Anwender- und Betriebshandbücher
- Systemkonfiguration und Konfigurationsdaten