Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

18.1.2006 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.

Ähnliche Präsentationen


Präsentation zum Thema: "18.1.2006 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt."—  Präsentation transkript:

1 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik

2 Folie 2 H. Schlingloff, Software-Engineering II Komponententest-Entwurf sehr entwicklungsnahe Testarbeit, oftmals direkt am ausführbaren Code Problematik der Spezifikation (Wozu eine Spezifikation, wenn der Code selbst vorliegt?) fließender Übergang zum Debugging; oft von den Entwicklern selbst durchgeführt Problematik der Zielsetzung (Fehler finden oder Ablauffähigkeit demonstrieren?) Problematik des Hintergrundwissens aus der Entwicklung (für den Testentwurf oft notwendig, aber stillschweigende Annahmen behindern die Objektivität bzw. Abdeckung)

3 Folie 3 H. Schlingloff, Software-Engineering II Beispiel geg. Funktion overlaps die als Eingabe zwei Zeitintervalle A und B (jeweils gegeben durch (start_X, ende_X)) bekommt und bestimmt, ob sie sich überlappen Schreiben Sie für diese Funktion Testfälle auf! (Jetzt!)

4 Folie 4 H. Schlingloff, Software-Engineering II Auswertung nach Punkten (1) 1. Haben Sie einen Testfall für überlappende Intervalle? 2. … und einen für nicht überlappende Intervalle? 3. Haben Sie einen Testfall wo das erste Intervall vor dem zweiten und einen wo das zweite vor dem ersten liegt? 4. Haben Sie einen Testfall wo ein Intervall vollständig innerhalb des anderen liegt? 5. Haben Sie einen Testfall wo die beiden Intervalle aneinander stoßen? 6. Haben Sie einen Testfall wo die beiden Intervalle mit dem selben Zeitpunkt beginnen? 7. Haben Sie einen Testfall wo die beiden Intervalle mit dem selben Zeitpunkt enden?

5 Folie 5 H. Schlingloff, Software-Engineering II Auswertung nach Punkten (2) 8. Haben Sie für jeden der Fälle 4-7 einen symmetrischen Testfall wo die Intervalle vertauscht sind? 9. Haben Sie einen Testfall wo die beiden Intervalle gleich sind? 10. Haben Sie einen Testfall mit einem punktförmigen Intervall? 11. Haben Sie einen Testfall mit zwei gleichen punktförmigen Intervallen? 12. Haben Sie Testfälle mit ganzzahligen und nichtganzzahligen Werten? 13. Haben Sie Testfälle mit unzulässigen Intervallen? 14. Haben Sie Testfälle mit Werten am Rande des Zahlenbereichs (maxint / maxreal)?

6 Folie 6 H. Schlingloff, Software-Engineering II Auswertung nach Punkten (3) Zusatzpunkte: 16. Haben Sie zusätzlich in allen Testfällen die erwarteten Ausgabewerte angegeben? 17. Haben Sie wenigstens einen Testfall, in dem Sie eine falsche Anzahl von Werten angeben (z.B. drei statt vier ganzzahlige Werte)? 18. Haben Sie Testfälle mit negativen Eingabewerten? 19. Haben Sie Testfälle die die Zahlbereichs- Überlaufbehandlung testen? 20. Haben Sie Tests mit unzulässigen Eingabezeichenfolgen?

7 Folie 7 H. Schlingloff, Software-Engineering II Reflexion Durchschnittswerte erfahrener Programmierer: 7-8 Diese Übung sollte zeigen, dass das Testen auch eines solch trivialen Programms keine leichte Aufgabe ist. Und wenn das wahr ist, betrachten Sie die Schwierigkeit, ein Flugleitsystem mit Befehlen, einen Compiler oder auch nur ein gängiges Gehaltsabrechnungsprogramm zu testen. (1979) Heute: 1-10 MLoC

8 Folie 8 H. Schlingloff, Software-Engineering II Testentwurf im Komponententest Aus Komplexitätsgründen ist es nicht möglich, alle Eingabewerte(-folgen) zu testen Problem: Welche Untermenge aller denkbaren Testfälle bietet die größte Wahrscheinlichkeit, möglichst viele Fehler zu finden? Techniken zur Testdaten- und Testfallbestimmung Äquivalenzklassenbildung Auswahl repräsentativer Daten Grenzwertanalyse Wertebereiche und Bereichsgrenzen Entscheidungstabellen und Klassifikationsbäume

9 Folie 9 H. Schlingloff, Software-Engineering II Äquivalenzklassenbildung 1. Schritt: Partitionierung des Eingabedatenraumes in eine endliche Zahl von Äquivalenzklassen (bezüglich des vermuteten Ausfallverhaltens) im Beispiel: zwei echte, disjunkte Zeitintervalle 2. Schritt: Auswahl der Testfälle anhand je eines Repräsentanten der Äquivalenzklasse im Beispiel: ((1,2),(3,4)) 3. Schritt: Bildung von Testfällen durch Kombination von Testfällen für die verschiedenen Eingaben Grenzwertanalyse: Auswahl von Testfällen an den Rändern der Äquivalenzklassen Testfälle für die Grenzwerte selbst sowie die Werte unmittelbar neben den Grenzwerten Bei strukturierten Daten kartesisches Produkt der Grenzwerte - Achtung, kombinatorische Explosion!

10 Folie 10 H. Schlingloff, Software-Engineering II Übungsbeispiel Bilden Sie Testfälle gemäß der Grenzwertmethode! (jetzt!) Welche Fälle wurden nicht erfasst? Warum? public final class IMath { public static int idiv (int x, y) { /* Returns the integer quotient of the two input values */ … }

11 Folie 11 H. Schlingloff, Software-Engineering II Äquivalenzklassenmethode – Vor- und Nachteile Vorteile systematische Vorgehensweise kalkulierbare Anzahl Testfälle und Überdeckung gut für kleine Funktionen mit Vor- und Nachbedingungen Nachteile Testfallauswahl durch Heuristik Wechselwirkungen zwischen Parameterwerten werden oft übersehen bei komplexen Kontrollstrukturen vergleichsweise viele Klassen

12 Folie 12 H. Schlingloff, Software-Engineering II Pause!

13 Folie 13 H. Schlingloff, Software-Engineering II Abdeckung Oft ergeben sich sehr viele Klassen und mögliche Testfälle Problematik wie vollständig ist die Testsuite? Abdeckungskriterien im Code jedes Statement wird einmal ausgeführt jede Bedingung ist einmal wahr und einmal falsch jeder Pfad wird einmal durchlaufen jede Schleife wird mehrfach durchlaufen (wie oft?) … Kein Blackbox-Test!

14 Folie 14 H. Schlingloff, Software-Engineering II Kontrollflussgraph void ZaehleZchn (int& VokalAnzahl, int& Gesamtzahl){ char Zchn; cin>>Zchn; while ((Zchn>=`A´) && (Zchn<=`Z´) && (Gesamtzahl>Zchn } } Beispiel: Liggesmeyer (f) / Balzert start n1 n2 n4 n5 n6 ende n3

15 Folie 15 H. Schlingloff, Software-Engineering II Kontrollflussorientierte Tests Überdeckungsmaße Anweisungsüberdeckung (statement coverage, C0) Zweigüberdeckung (branch coverage, C1) Pfadüberdeckung (path coverage, C2) Bedingungsüberdeckung (condition coverage, C3) - einfache Bedingungsüberdeckung - mehrfache Bedingungsüberdeckung - minimale Bedingungsüberdeckung

16 Folie 16 H. Schlingloff, Software-Engineering II Anweisungsüberdeckung auch C 0 -Test genannt (statement coverage) jede Anweisung muss durch mindestens einen Testfall erfasst werden Beispiel: (A,1) ergibt Pfad (start,n1,n2,n3,n4,n5,n6, n2,ende) Kante (n4,n6) wird nicht durchlaufen start n1 n2 n4 n5 n6 ende n3 void ZaehleZchn (int& VokalAnzahl, int& Gesamtzahl){ char Zchn; cin>>Zchn; while ((Zchn>=`A´) && (Zchn<=`Z´) && (Gesamtzahl>Zchn } }

17 Folie 17 H. Schlingloff, Software-Engineering II Bewertung Anweisungsüberdeckung Oft ist vollständige Anweisungsüberdeckung das minimale Kriterium bei der Konstruktion einer Testsuite Überdeckungsgrad einer Testsuite: Prozentsatz der mindestens einmal ausgeführten Anweisungen (erstrebenswert: 100%) Minimum z.B. in DO-178B (ab Stufe C) oft als Überdeckungsmaß verwendet schwaches Kriterium (18% aufgedeckte Fehler) Beispiel: (x>5) statt (x>=5) wird nicht entdeckt

18 Folie 18 H. Schlingloff, Software-Engineering II Zweigüberdeckung auch C 1 -Test genannt (branch coverage) jede Kante muss durch mindestens einen Testfall erfasst werden Beispiel: (A,B,1) ergibt Pfad (start,n1,n2,n3,n4,n5,n6,n2, n3,n4,n6,n2,ende) Überdeckungsgrad: Prozentsatz der durchlaufenen Kanten start n1 n2 n4 n5 n6 ende n3

19 Folie 19 H. Schlingloff, Software-Engineering II Bewertung Zweigüberdeckung subsumiert Anweisungsüberdeckung Schleifen werden ungenügend getestet (z.B. nur ein Mal durchlaufen) Problem der Gewichtung von Zweigen (Konvergenz der Überdeckungsrate mit Testfallanzahl, Fehleinschätzung) gut geeignet um logische Fehler zu finden, schlecht geeignet für Datenfehler Toolunterstützung durch Codeinstrumentierung

20 Folie 20 H. Schlingloff, Software-Engineering II Pfadüberdeckung Jeder Pfad durch den Kontrollflussgraphen Im Allgemeinen unendlich viele! (Überdeckungsmaß?) selbst falls endlich: sehr viele strukturierter Pfadtest: Äquivalenzklassen von Pfaden (ähnlich Grenzwertanalyse) Schleife keinmal, einmal, mehr als zweimal ausgeführt (boundary oder interior condition) zusätzlich intuitiv ermittelte Testfälle Werkzeugunterstützung?

21 Folie 21 H. Schlingloff, Software-Engineering II modifizierter boundary-interior Test (nach Liggesmeyer) alle Pfade die Schleifen nicht betreten Schleifen einmal ausführen, Unterschiede im Rumpf (aber nicht in eingeschachtelten Schleifen) werden berücksichtigt Schleifen zweimal ausführen, wie oben jede Schleife separat beurteilen alle Zweige berücksichtigen

22 Folie 22 H. Schlingloff, Software-Engineering II Bedingungsüberdeckung condition coverage test; Überprüfung der Entscheidungen im Programm Varianten: einfache Bedingungsüberdeckung (C 2 ): Jede atomare Bedingung einmal wahr als auch einmal falsch mehrfache Bedingungsüberdeckung (C 3 oder C 2 (M)): alle Kombinationen atomarer Bedingungen minimale Mehrfachbedingungsüberdeckung (MC/DC): Jede Entscheidung im Flussdiagramm unabhängig wahr oder falsch void ZaehleZchn (int& VokalAnzahl, int& Gesamtzahl){ char Zchn; cin>>Zchn; while ((Zchn>=`A´) && (Zchn<=`Z´) && (Gesamtzahl>Zchn } }

23 Folie 23 H. Schlingloff, Software-Engineering II einfache Bedingungsüberdeckung jede atomare Bedingung mindestens in einem Testfall wahr und in einem Testfall falsch Problem: Ausführung teilweise compilerabhängig! (unvollständige Bedingungsauswertung) Problem, Programmfluss zur Bedingung zu steuern (Abhängigkeit der Variablenwerte) Problem, Gesamtentscheidung zu beeinflussen manchmal kombiniert mit Zweigüberdeckung zur Bedingungs/Entscheidungsüberdeckung (condition/decision coverage)

24 Folie 24 H. Schlingloff, Software-Engineering II Mehrfachbedingungsüberdeckung alle Variationen der atomaren Bedingungen garantiert Variation der Gesamtentscheidung exponentiell viele Möglichkeiten Problem: Abhängigkeit von Variablen! (z.B. (Zchn==`A´)||(Zchn==`E´)) kann nicht beides wahr sein) Problem: kein vernünftiges Überdeckungsmaß

25 Folie 25 H. Schlingloff, Software-Engineering II minimale Mehrfachbedingungsüberdeckung Modified Condition/Decision Coverage MC/DC Evaluation gemäß Formelstruktur (jede Teilformel einmal wahr und einmal falsch) zusammengesetzte Entscheidungen werden zusammenhängend beurteilt Problem: ((A&&B)||C) wird durch (www) und (fff) vollständig überdeckt, aber nicht wirklich getestet (A||B) wird durch (wf) (fw) und (ff) überdeckt Modifikation: zusätzlicher Nachweis, dass jede atomare Teilentscheidung relevant ist (z.B. durch positiven und negativen Testfall) DO-178B Standard für Avionik-Software: Every point of entry and exit has been invoked at least once, every condition in a decision has taken on all possible outcomes at least once, every decision has taken all possible outcomes at least once, and each condition in a decision has been shown to independently affect the decisions outcome.

26 Folie 26 H. Schlingloff, Software-Engineering II Coverage Tools

27 Folie 27 H. Schlingloff, Software-Engineering II Pause!

28 Folie 28 H. Schlingloff, Software-Engineering II Datenflussorientierter Test Variablen und Parameter Lebenszyklus: erzeugen – (schreiben – lesen*)* – vernichten computational use versus predicate use Zuordnung von Datenflussattributen zu den Knotens des Kontrollflussgraphen Berechnung der Variablenzugriffe für jeden Definitionsknoten n für Variable x die Mengen dcu(x,n) und dpu(x,n) aller Knoten, in der x (berechnend oder prädikativ) verwendet wird

29 Folie 29 H. Schlingloff, Software-Engineering II attributierter Kontrollflussgraph void ZaehleZchn (int& VokalAnzahl, int& Gesamtzahl){ char Zchn; cin>>Zchn; while ((Zchn>=`A´) && (Zchn<=`Z´) && (Gesamtzahl>Zchn } } def(VokalAnzahl) def(Gesamtzahl) start n1 n2 n4 n5 n6 ende n3 def(Zchn) p-use(Zchn), p-use(Gesamtzahl) c-use(Gesamtzahl) def(Gesamtzahl) p-use(Zchn) c-use(VokalAzahl) def(VokalAnzahl) def(Zchn) c-use(VokalAzahl) c-use(Gesamtzahl)

30 Folie 30 H. Schlingloff, Software-Engineering II Defs/Uses-Kriterien zur Testabdeckung Testfallerzeugung berechne Pfade zwischen Definition und Verwendung ungenutzte Definitionen markieren Fehler Kriterien all defs: Jeder Pfad von einer Definition zu mindestens einer Verwendung enthalten all p-uses: Jeder Pfad von einer Definition zu irgendeiner prädikativen Verwendung - subsumiert Zweigüberdeckung all c-uses: analog, zu computational use all c-uses/some p-uses: jede berechnende oder mindestens eine prädikative Verwendung all uses: jede Verwendung du-paths: Einschränkung auf wiederholungsfreie Pfade

31 Folie 31 H. Schlingloff, Software-Engineering II Datenkontexte Ein Datenkontext für einen Knoten ist eine Menge von Knoten, die für jede der im Knoten verwendeten Variablen eine Definition enthalten Datenkontext-Überdeckung: Alle Datenkontexte müssen vorkommen, d.h. jede Möglichkeit, den Variablen Werte zuzuweisen ggf. zusätzlich Berücksichtigung der Definitionsreihenfolge x = y+z y = … z = … y = …

32 Folie 32 H. Schlingloff, Software-Engineering II Diskussion Datenflussüberdeckung Mächtiger als Kontrollflussverfahren Besonders für objektorientierte Programme all c-uses besser als all p-uses besser als all- defs Werkzeugunterstützung essenziell wenig Werkzeuge verfügbar

33 Folie 33 H. Schlingloff, Software-Engineering II Bewertung strukturelle Tests Auslassungsfehler (auch: fehlende Ausnahmebehandlung usw.) prinzipiell nicht erfasst Konstruktion von Testfällen kann beliebig schwierig sein dead code (der nie ausgeführt werden kann) wird normalerweise entdeckt Toolunterstützung Möglichkeit der Code-Optimierung durch Testergebnisse (häufig durchlaufene Programmteile verbessern); aber: Regressionstest erforderlich! Historisch seit 1963 etabliert, weit verbreitet Literaturempfehlung: How to Misuse Code Coverage; Brian Marick;


Herunterladen ppt "18.1.2006 Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt."

Ähnliche Präsentationen


Google-Anzeigen