33
Husain Aljazzar, Software Engineering, Universität Konstanz software engineering Software-Testen Husain Aljazzar

Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Embed Size (px)

Citation preview

Page 1: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringSoftware-Testen

Husain Aljazzar

Page 2: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringNotationen

Störfall (= Ausfall, Versagen – Engl. failure): jegliche Abweichung des beobachteten Verhaltens vom spezifizierten Verhalten.

Defekt (= Fehler, Bug – Engl. fault): die mechanische oder algorithmische Ursache zu einem Störfall.

Page 3: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringSoftware-Qualitätssicherung

Fehlervermeidungstechniken versuchen zu verhindern, dass Defekte in das System

eingebaut werden, z.B. Verifikation. Fehlerentdeckungstechniken

unterstützen das Aufspüren von Fehlern in dem System, z.B. Überprüfung und Testen.

Fehlertoleranztechniken unterstellen, dass ein System Systemstörfälle trotz

Defekte zur Laufzeit vermeiden kann, z.B. redundante Systeme.

Page 4: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringÜberprüfung

Inspektion (Engl. Inspection) Durchgang (Engl. Walk-through)

Page 5: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTesten

Testen ist eine Fehlerentdeckungstechnik, in der das implementierte SW-System mit verschiedenen Eingaben getestet wird. In den Entwicklungsphasen wird versucht Störfälle zu

verursachen um Defekte aufzudecken. Ein guter Test ist ein Test, der möglichst viele Fehler

identifiziert.

Nach der Entwicklung wird versucht zu zeigen, dass das implementierte SW-System die Anforderungen erfüllt (keine Störfälle bzw. Defekte enthält)

Page 6: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTesten

Definitionen1. Testen ist der systematische Versuch, in der

implementierten Software, Defekte auf geplante Weise zu finden.

2. Testen ist das Verfahren, in dem gezeigt wird, dass keine Defekte vorhanden sind.

Was ist der Unterschied zwischen den beiden Definitionen?

Page 7: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTest-Konzepte

Testkomponente, Testling: die zu testende SW-Komponente

Testfall: eine Reihe von Eingaben und erwarteten Ergebnissen, die eingesetzt wird, um Störfälle zu verursachen und Defekte aufzudecken.

Testsuite (oder Testsequenz): eine Reihe von Testfällen

Testabschnitt: eine Reihe von Testsuites, die in einer Testumgebung ausgeführt werden können.

Page 8: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTest-Konzepte

Teststumpf, Platzhalter (Engl. Test Stub): eine Komponente, von der der Testling abhängt.

Testtreiber: eine Komponente, die einen Testrahmen zur Verfügung stellt, der die Interaktion mit dem Testling ermöglicht.

Page 9: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringArten des Testens

Modultest (unit testing) Integrationstest

(integration testing) Systemtest (system

testing) Abnahmetest oder auch

Kunden-Akzeptanztest genannt (acceptance test)

Page 10: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringArten des Testens Modultest

Testen eines einzelnen Moduls (z.B. eine Java-Klasse einschließlich Hilfsklassen) I.d.R. wird pro Testfall eine Methode des Moduls getestet.

Integrationstest Mehrere Komponenten werden zusammengetestet. Ziel: Auffinden von Fehlern beim Zusammenspiel von individuell bereits getesteten

Komponenten. Systemtest

Testen des gesamten Systems als eine Einheit Ziel ist es, Fehler bezüglich der Anforderungen zu identifizieren.

Abnahmetest Eine besondere Ausprägung des Systemtests

Unter Beobachtung, Mitwirkung oder Führung des Kunden Evtl. mit echten Daten In der realen bzw. realitätsnahen Einsatzumgebung

Ziel ist es zu zeigen, dass das implementierte System die Anforderungen erfüllt (keine Defekte bzw. Störfälle enthält)

Page 11: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTestprozess

Testplanung

Testdurchführung

Testplan Testvorschrift

Testbericht

Tes

tdok

um

enta

tion

Oft gemeinsam in einem Dokument

Page 12: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTestdokumentation – Testplan

Verwaltungstechnische Gesichtspunkte des Testens Zielrichtung Vorgehensweise Budget Zeitplan Personalplan Hardware-Ressourcen

Dokumentiert welche Anforderungen und Komponenten sollen getestet werden.

Page 13: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTestdokumentation – Testvorschrift

Beschreibung der Testfälle der Arbeit zur Vorbereitung der Testumgebung Festlegung der Testreihenfolge (Testsuites,

Testabschnitte)

Vorlage: Balzert, Lehrbuch der Software-Technik – Band 2, Seite 549

Page 14: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringEigentlich ist das eine

Vorlage für eine vereinigtes Dokument mit dem Testplan und

der Testvorschrift!

Page 15: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineering

Testdokumentation – Beschreibung eines Testfalls

1. Testfallbezeichner

2. Testobjekte (Im Systemtest: der Bezeichner des Systems)

3. Eingabespezifikation

4. Ausgabespezifikation Berechnet von Hand oder durch das zu ersetzende System (Oracle)

5. Umgebungserfordernisse Hardware- und Software-Konfiguration, Testtreiber, etc…

6. Besondere prozedurale Anforderungen Einschränkungen, Zeitlimits, …

7. Abhängigkeit zwischen Fällen

Page 16: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringTestdokumentation – Testbericht

Testzusammenfassung Eine Übersicht über den Test

Testprotokoll Enthält die Ergebnisse aller Testläufe I.d.R. entsteht durch Ergänzung der Testvorschrift mit den

Ergebnissen. Liste der Problemmeldungen

Eine Liste der gefundenen Störfälle Liste der SW-Komponenten

Liste der getesteten Komponenten

Page 17: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringModultest

Planung: nach dem Feinentwurf bzw. vor der Implementierung Dokument: Modultestplan + Modultestvorschrift

Durchführung: nach der Implementierung Dokument: Modultestbericht

Framework für Modeltest ist JUnit In unserem Projekt ist ein systematisches

Modultesten nicht zwingend aber empfohlen.

Page 18: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringIntegrationstest

Planung nach dem Feinentwurf, vor der Modultestplanung Dokument: Integrationstestplan einschließlich

Integrationsstrategie + Integrationstestvorschrift Durchführung:

Bei der Modulintegration, d.h. nach dem Modultest Dokument: Inegrationstestbericht

Page 19: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringSystemtest

Planung nach der Anforderungsanalyse vor dem Entwurf Dokument: systemtestplan + Systemtestvorschrift

Durchführung: Nach der Systemintegration vor der Lieferung Dokument: Systemtestbericht

Page 20: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringAbnahmetest

Planung nach der Anforderungsanalyse vor dem Entwurf Dokument: Abnahmetestplan + Abnahmetestvorschrift

Durchführung: Nach dem Systemtest bei der Lieferung Dokument: Abnahmetestbericht

Page 21: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringIn D1 am Freitag 04.05.2007

Systemtestplanung Systemtestplan Systemtestvorschrift

Abnahmetestplanung Abnahmetestplan Abnahmetestvorschrift

Page 22: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringSystemtest Funktionstest findet Unterschiede zwischen den

funktionalen Anforderungen und dem implementierten System. Testfälle werden aus dem Anwendungsfallmodell (Use-Cases-Model)

abgeleitet. Leistungstest überprüft der Leistungsanforderungen

(performance requirements) Testfälle werden aus dem Pflichtenheft abgeleitet Härtetest testet das System in Stresssituationen Volumentest testet den Speicherverbrauch des Systems Sicherheitstest testet die Sicherheitsaspekte im System Zeitvorgabentest testet Antwortzeiten des System Erholungstest testet die Fähigkeit des Systems, sich von

Fehlerzuständen zu erholen.

Page 23: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringHerausforderung des Testens

Es ist unmöglich ein SW-System vollständig zu testen. Unentscheidbares Problem Zeit- und Kostenbeschränkungen

Auswahl von Testfällen

Page 24: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringAuswahl von Systemtestfällen

Testfälle werden aus den Anwendungsfällen abgeleitet.

Interessante Testfälle sind Anwendungsfallinstanzen (Szenarien), die für den Benutzer von Bedeutung sind und mit hoher Wahrscheinlichkeit zum Aufdecken vieler

Fehler führen. Wie findet man solche Testfälle:

Äquivalenztest Grenztest

Page 25: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringÄquivalenztest

Ziel: Minimierung der Anzahl der Testfälle Annahme: Bei „ähnlichen“ Eingaben verhält sich das

System ähnlich. Alle möglichen Eingaben werden in

Äquivalenzklassen aufgeteilt. Aus jeder Äquivalenzklasse wird ein Testfall

ausgewählt.

Page 26: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringÄquivalenztest

Bestimmung der Äquivalenzklassen Kriterien

Abdeckung und Disjunktion: Jede mögliche Eingabe gehört zu genau einer Äquivalenzklasse

Repräsentation: Wenn eine Eingabe einer Klasse zu einem Störfall führt, dann führen alle Eingaben dieser Klasse zu diesem Störfall.

Es gibt immer mindestens zwei Äquivalenzklassen: Gültige Eingaben Ungültige Eingaben

Page 27: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringBeispiel

Mögliche Äquivalenzklassen im Studienberatungssystem: Registrierung von Benutzern

Registrierung eines Studenten bzw. Administrators Gültige bzw. ungültige Registrierungsdaten

Anmeldung von Benutzern Gültige bzw. ungültige Anmeldung

Planung eines IE-Bachelor-Studiums …

Planung eines IE-Master-Studiums …

Page 28: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringGrenztest

Eine spezielle Art des Äquivalenztests, bei der die Testfälle an den Grenzen der Äquivalenzklassen ausgewählt werden.

Annahme: Sonderfälle werden oft bei der Entwicklung übersehen, z.B. Registrierung des ersten Studenten bzw. Administrators Die erstmalige Anmeldung eines Benutzers Planung der letzten Prüfung Abdecken eines Themengebiets

Page 29: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringKorrektur

Testen deckt Störfälle auf aber nicht automatisch die verursachende Defekte (Bugs).

Debugging (Fehlersuche): Falls ein Test einen Störfall aufdeckt, muss der Entwickler das Testobjekt untersuchen, um die Ursache zu finden

Korrektur: Eine Änderung, die den Defekt behebt.

Page 30: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringRegressionstest

Wenn ein Defekt korrigiert wir, kann durch die entsprechende Änderung andere Störfälle verursacht werden

Wiederholen des durchgeführten Tests

Page 31: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringAbnahmetest Das Ziel ist zu zeigen, dass das implementierte System die

Anforderungen erfüllt. Abnahmetest basiert auf Definition 2 des Testens

Testen ist das Verfahren, in dem gezeigt wird, dass keine Defekte vorhanden sind.

Erfolgt unter Führung des Kunden. Testfälle

Aus normalen Betrieb Teilmenge aus dem Systemtest Testfälle für die Verarbeitung der Geschäftsvorgänge einer typischen

Zeitperiode, z.B. Semester, ganzes Studium Abnahmetest muss im Auftrag (bei der Abgabe des

Pflichtenheft) festgelegt werden.

Page 32: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineeringPrinzipien des SW-Testens1. Testen ist der Prozess sowohl zur Aufdeckung von Defekten als auch zur

Bewertung der SW-Qualität.2. Ein guter Testfall ist einer, der mit guter Wahrscheinlichkeit zum Aufdecken

möglichst vieler neuer Defekte führt.3. Testergebnisse müssen genau analysiert werden4. Testfallbeschreibung muss das zu erwartende Ergebnis spezifizieren5. Testfälle sollen sowohl gültige als auch ungültige Eingaben abdecken6. Die Wahrscheinlichkeit, dass unaufgedeckte Defekte noch existieren, ist

proportional zur Anzahl der bereit aufgedeckten Defekte7. Der Test soll von einem Team durchgeführt, das möglichst unabhängig vom

Entwicklungsteam ist. (In unserem Projekt ist dieses schwer einzuhalten)8. Tests sollen wiederholbar und wiederverwendbar sein. 9. Testen soll geplant werden.10. Testaktivitäten sollen in den SW-Entwicklungsprozess integriert werden.11. Testen ist eine kreative und anspruchsvolle Tätigkeit.

Page 33: Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen Husain Aljazzar

Husain Aljazzar, Software Engineering, Universität Konstanz

software

engineering

System- und Abnahmetest im Studienberatungssystem

Nach der Definition der Anforderungen Erstellung eines Testplans für Systemtest

Zeiteinteilung, welche Merkmale sollen getestet werden, Hardware, wer test was?

Erstellung einer Systemtestvorschrift Auswahl von Testfällen

Nach der Planung des Systemtests Verhandelt mit dem Gruppenbetreuer über den

Abnahmetest: Termin, Dauer, welche Szenarien, etc…