P r a k t I s c h e Entwicklung und Test Testen von Software-Systemen Systemen - Testen im Softwarelebenszyklus Entwickler erstellen ihr System bzw. ihre Software und testen es/sie zur Entwicklungszeit Tester testen das System/den Code, das/den die Entwickler erstellen, also ist das Testen abhängig von der Entwicklung Testen muss schon während der Anforderungsphase beginnen, und nicht erst, wenn der Code erstellt und zum Test freigegeben wird Dokumente müssen gereviewed werden, sobald sie zur Verfügung stehen. Tester beim Review einbinden! Test und Entwicklung sollten zeitlich parallele Prozesse sein. Die Analyse und der Entwurf der Tests für eine Teststufe sollten während der zugehörigen Entwicklungsaktivität beginnen! 2007 Dr. Klaudia Dussa-Zieger Testen von Software-Systemen SS 2007 (1) Testen von Software-Systemen SS 2006 (2) Wozu? Damit das Rad nicht in jedem Projekt neu erfunden werden muss Erfahrungen sammeln und nutzen Sicherheit, das Richtige zur richtigen Zeit zu tun Vorlage für die tägliche Arbeit müssen angepasst werden: Anpassung abhängig von Produkteigenschaften Anpassung abhängig vom Projektkontext Anpassung wird auch als Tailoring bezeichnet Wozu? Zur Positionsbestimmung Frühzeitige Erkennung von Problemen Transparenz im Projekt (Zeit, Kosten, Qualität) Als Basis für: Projektplanung ( Wie komme ich erfahrungsgemäß am besten von X nach Y? ) Assessment ( Bin ich vom Weg abgekommen? ) Performance-Analyse ( Wie gut laufe ich den Weg? ) Verbesserungen ( Wie könnte ich den Verkehrsfluss optimieren? ) Testen von Software-Systemen SS 2006 (3) Testen von Software-Systemen SS 2006 (4)
Welche gibt es? Wasserfallmodell Wasserfallmodell Spiralmodell RUP Extreme Programming Prototyping Rapid Application Development (RAD) V-Modell u.v.m. Hier wird in starker Vereinfachung von einer linearen Folge der Phasen ausgegangen. Eine überarbeitete, etwas realitätsnähere Version des Wasserfallmodells sieht Rücksprünge von einer Phase in die jeweilige Vorgängerphase vor. Anforderungsanalyse System- und Komponentendesign und Integration und Installation und Wartung Testen von Software-Systemen SS 2006 (5) Testen von Software-Systemen SS 2006 (6) Iterativ-Inkrementelle Modelle Iterativ-inkrementelle Modelle wie das unten abgebildete Spiralmodell berücksichtigen, dass die Phasen der Systementwicklung i.a. nicht nur einmal sondern mehrfach durchlaufen werden. Analyse Validierung Risikoanalysen Prototypen, Modelle, Simulationen Die jeweilige Vorgehensweise hängt vom zu erstellenden System und vom Projektumfang ab Charakteristika iterativ-inkrementeller Anforderungen, Entwurf, Entwicklung und Test werden in einer Reihe kleiner Entwicklungsschritte, sog. Iterationen, durchlaufen. Die Erweiterung einer Iteration kann auf verschiedenen Stufen als Teil der Entwicklung getestet werden. Die Erweiterungen (Inkremente) ergeben ein wachsendes unvollständiges System, das ebenso getestet werden sollte. Regressionstests haben daher bei allen Iterationen nach dem ersten Zyklus eine zunehmende Bedeutung. Verifikation und Validierung können für jede Erweiterung durchgeführt werden. Testen von Software-Systemen SS 2006 (7) Testen von Software-Systemen SS 2006 (8)
Rational Unified Process (RUP, nach P. Kruchten) Acceptance Testing On-site Customer Coding Standards Inhalt Process Workflows Business Modeling Requirements Analysis and Implementation Test Deployment Supporting Workflows Configuration Mgmt Project Management Environment Extreme Programming (nach K. Beck, 2003) XP ist eine schlanke Softwareentwicklungsmethodik...... für kleine Projektteams...... für Projekte mit sich ändernden Anforderungen. Planning Game Unit Testing Simple Die Methodik besteht aus Praktiken (Best Practises)...... welche nicht neu und bereits etabliert sind... 40 Hour Week... basierend auf Grundprinzipien...... welche mit den Instinkten des Programmierers und nicht dagegen arbeiten...... welche auch für das Projektmanagement von Vorteil sind. Refactoring Metaphor Short Releases Testen von Software-Systemen SS 2006 (9) Pair Programming Collective Ownership Continuous Integration Testen von Software-Systemen SS 2006 (10) Prototyping typische Probleme beim Wasserfall- und V-Modell... Vollständige Spezifizierung von Anforderungen zu Projektbeginn Mangelnde Koordination zwischen Entwicklern und Anwendern Präsentation des Projektergebnisses erst nach Fertigstellung Theoretische Überprüfung der Machbarkeit ist problematisch... können durch den Einsatz von Prototypen vermieden werden: Frühzeitige Klärung relevanter Anforderungen Unterstützung bei Diskussion und Entscheidungsfindung Überprüfung der Machbarkeit Prototyp = Ausschnitt des zu entwickelnden Systems horizontaler Prototyp vertikaler Prototyp einer kompletten Systemebene, z.b. Benutzerschnittstelle ausgewählter Teile des Systems durch alle Systemebenen Rapid Application Development (RAD) (Martin, 1991) Wie das Prototyping ein Entwicklungsmodell zur Umgehung der typischen Probleme beim Wasserfall- bzw. V-Modell Prototypisches Vorgehen, bei dem Anforderungen an eine Software gesammelt und möglichst schnell in ausführbaren Code umgesetzt werden Früher Abgleich der Software mit dem Kunden Änderungen werden in einer weiteren Version implementiert und erneut vorgelegt Diese Zyklen werden so oft durchlaufen, bis der Auftraggeber mit der Software zufrieden ist und diese abnimmt Testen von Software-Systemen SS 2006 (11) Testen von Software-Systemen SS 2006 (12)
V-Modell V-Modell (auch genannt Allgemeines V-Modell nach B. Boehm ): Analyse Codierung Testen Betrieb Funktionales Technisches Komponenten- (logische) Reihenfolge der Aktivitäten Anmerkung: Das hier vorgestellte Allgemeine V-Modell ist verschieden vom V-Modell XT (= Vorgehens- Modell des Bundes für die Systementwicklung ) Testen von Software-Systemen SS 2006 (13) Verifikation vs. Validierung Verifikation Bestätigung durch Bereitstellung eines objektiven Nachweises darüber, dass festgelegte Anforderungen erfüllt sind (ISO 9000). Entwickeln wir das System richtig?... Schritt für Schritt eine richtige Umsetzung! Validierung Bestätigung durch Bereitstellung eines objektiven Nachweises, dass die Anforderungen für einen spezifischen beabsichtigten Gebrauch oder eine spezifische beabsichtigte Anwendung erfüllt worden sind (ISO 9000). Entwickeln wir das richtige System?... eine gültige Lösung für die Problemstellung! Prüfung, ob ein Entwicklungsergebnis die individuellen Anforderungen bezüglich einer speziellen beabsichtigten Nutzung erfüllt (Spillner/Linz 2005). Testen von Software-Systemen SS 2006 (14) V-Modell: Analyse Codierung Testen Betrieb Funktionales Synonyme Begriffe für Stufen im V-Modell Begriff Funktionales Synonym Lastenheft (des Kunden), Customer Requirements Funktionaler Systementwurf, (System-)Pflichtenheft, System Requirements Technisches Komponenten- Technisches Komponenten- Technischer Systementwurf, Systemarchitektur Komponenten-/Modulspezifikation Programmierung Modul-Codierung Test basiert auf Spezifikation (Teil der Testbasis) Testen von Software-Systemen SS 2006 (15) Komponenten-/Modultest, Klassentest, Unit-Test Testen von Software-Systemen SS 2006 (16)
Komponenten-/Modultest Komponenten-/Modulspezifikation Testen des Zusammenspiels integrierter Komponenten/Module Schnittstellen Funktionalität Systemanforderungen Einsatztauglichkeit (Kundensicht) Nichtfunktionale Anforderungen (Performanz,...) Testen von Software-Systemen SS 2006 (17) Testphasen und Phasenergebnisse (IEEE 829) Testplanung und -steuerung Testanalyse und Testdesign Testfälle realisieren Testdurchführung Tests auswerten & berichten Testkonzept [TK] Testfallspezifikation [TF] Testskripte [TS] (Testimplementierung) Testprotokoll [TP] Testbericht [TB] Testen von Software-Systemen SS 2006 (18) Testen im V-Modell Testaktivitäten im Entwicklungszyklus (Übersicht) Erwartetes Ergebnis durch Verwendung des V-Modells Analyse Codierung Testen Betrieb Testen von Software-Systemen SS 2006 (19) t Bessere Qualität des Pflichtenhefts durch frühzeitiges Erstellen von Testfällen... Dadurch besseres (und gemeinsames) Verständnis von Anforderungen Bessere Kommunikation mit Kunden und im Team Besseres Verständnis des s, besseres ( for Testability ) Systeme von höherer Qualität Testen von Software-Systemen SS 2006 (20)