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
Abnahmetest
Das Ziel des Abnahmetests besteht darin, Vertrauen in das System, Teilsystem oder in spezifische nicht-funktionale Eigenschaften eines Systems zu gewinnen. Das Finden von Fehlerzuständen ist
nicht das Hauptziel beim Abnahmetest. Abnahmetests können die Bereitschaft eines Systems für den Einsatz und die Nutzung bewerten, obwohl sie nicht notwendigerweise die letzte Teststufe darstellen.
So könnte beispielsweise ein umfangreicher Systemintegrationstest dem Abnahmetest eines der Systeme folgen.
Der Abnahmetest liegt meist im Verantwortungsbereich der Kunden oder Benutzer des Systems.
Abnahmetest
Testbasis
Testbasis:
- Benutzeranforderungen
- Systemanforderungen
- Anwendungsfälle (use cases)
- Geschäftsprozesse
- Risikoanalyseberichte
Abnahmetest
Typische Testobjekte
Typische Testobjekte:
- Geschäftsprozesse des voll integrierten Systems
- Betriebs- und Wartungsprozesse
- Anwenderverfahren
- Formulare
- Berichte
- Konfigurationsdaten
Abnahmetest
Zeitpunkt im Lebenszyklus
- Eine Standardsoftware kann einem Abnahmetest unterzogen werden, wenn sie installiert oder integriert ist.
- Der Abnahmetest bezüglich der Benutzbarkeit einer Komponente kann während des Komponententests durchgeführt werden.
- Der Abnahmetest einer neuen funktionalen Erweiterung kann vor dem Systemtest erfolgen.
Anwender-Abnahmetest
Er prüft die Tauglichkeit eines Systems zum Gebrauch durch Anwender bzw. Kunden.
Betrieblicher Abnahmetest
Die Abnahme des Systems durch den Systemadministrator enthält:
- Test des Erstellens und Wiedereinspielens von Sicherungskopien (backup/ restore)
- Wiederherstellbarkeit nach Ausfällen
- Benutzermanagement
- Wartungsaufgaben
- Datenlade- u. Migrationsaufgaben und
- periodische Überprüfungen von Sicherheitslücken
Regulatorischer Abnahmetest
Regulatorische Abnahmetests werden gegen alle Gesetze und Standards durchgeführt, denen das System entsprechen muss – beispielsweise staatliche, gesetzliche oder Sicherheitsbestimmungen.
Vertraglischer Abnahmetest
Beim vertraglichen Abnahmetest wird kundenindividuelle Software explizit gegen die vertraglichen Abnahmekriterien geprüft.
Abnahmekriterien sollten beim Vertragsabschluss zwischen den beteiligten Parteien definiert werden.