CS352 Software Engineering (Software Engineering in the Small)
Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen...
-
Upload
hartwin-heisser -
Category
Documents
-
view
126 -
download
4
Transcript of Software engineering Husain Aljazzar, Software Engineering, Universität Konstanz Software-Testen...
Husain Aljazzar, Software Engineering, Universität Konstanz
software
engineeringSoftware-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.
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.
Husain Aljazzar, Software Engineering, Universität Konstanz
software
engineeringÜberprüfung
Inspektion (Engl. Inspection) Durchgang (Engl. Walk-through)
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)
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?
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.
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.
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)
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)
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
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.
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
Husain Aljazzar, Software Engineering, Universität Konstanz
software
engineeringEigentlich ist das eine
Vorlage für eine vereinigtes Dokument mit dem Testplan und
der Testvorschrift!
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
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
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.
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
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
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
Husain Aljazzar, Software Engineering, Universität Konstanz
software
engineeringIn D1 am Freitag 04.05.2007
Systemtestplanung Systemtestplan Systemtestvorschrift
Abnahmetestplanung Abnahmetestplan Abnahmetestvorschrift
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.
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
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
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.
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
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 …
…
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
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.
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
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.
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.
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…