100% Path-Coverage bei Schleifen

GuitarBero
Neuling
Neuling
Beiträge: 10
Registriert: 27. Feb 2013 18:57

100% Path-Coverage bei Schleifen

Beitrag von GuitarBero » 11. Mär 2013 17:57

Hallo,

ich habe eine Frage, wie hier in der TS-Vorlesung "Path Coverage" bzw. "Pfad durch den Kontrollfluss" definiert wird.

Mein Verständnis:
Alle möglichen Pfade durch den Kontrollfluss müssen getestet werden.
Definition "Pfad": Folge von Knoten mit definiertem Anfangs- und Endpunkt, insb. A,B,C != A,B,A,B,C.
Dadurch ist 100% Path-Coverage bei Schleifen im Allgemeinen nicht zu erreichen, da die Anzahl der Schleifendurchläufe nicht begrenzt wird und damit jede Anzahl von Schleifendurchgängen eigene Pfade und dadurch auch eigene Testfälle braucht.

In Übung 12 Aufgabe 1c) sollte angegeben werden, wie viele Pfade mindestens für 100% Path Coverage zu testen sind.
Lösungen laut Tutor: 9 Pfade
Bei dieser Lösung wird die Schleifen-Bedingung aber wie eine normale If-Bedingung behandelt, d.h. sie muss nur einmal true und einmal false sein.
Das widerspricht offensichtlich meinem Verständnis von Path Coverage.
Meiner Meinung nach ist die Lösung (mangels weiteren Informationen), dass man unendlich viele Pfade testen muss, da es einen Unterschied macht, ob man einmal, zweimal oder hundertmal durch die Schleife läuft. Deshalb braucht man auch Testfälle die nur einmal, nur zweimal, ..., hundermal etc. durch die Schleife laufen.
Die Tutor-Lösung ist umso mehr verblüffend, wenn man sich Folie 12 in Foliensatz 11 (Testen) anschaut, da dort jede Anzahl von möglichen Schleifendurchgängen berücksichtigt wird.

Es wäre nun gut zu wissen, wie das Fachgebiet Path Coverage in der Klausur handhabt.

MarkusMS
Erstie
Erstie
Beiträge: 17
Registriert: 22. Apr 2012 21:53

Re: 100% Path-Coverage bei Schleifen

Beitrag von MarkusMS » 13. Mär 2013 14:57

Hi,
Es sind zwar 9 Pfade, allerdings musst du zwei davon nicht betrachten (Zwei der Pfade fallen weg. Es sind n = 0 und n < 0.). Es bleiben also insgesamt 7 Pfade übrig.

Und was die 100 % Path Coverage angeht... wenn in der Schleife wieder Verzweigungen sind, musst du natürlich für jeden Pfad in der Schleife wieder einen Testfall haben. Ansonsten genügt es, die Schleife ein- bis maximal zweimal zu durchlaufen...


Gruß

GuitarBero
Neuling
Neuling
Beiträge: 10
Registriert: 27. Feb 2013 18:57

Re: 100% Path-Coverage bei Schleifen

Beitrag von GuitarBero » 14. Mär 2013 11:12

Erstmal danke für die Antwort.

Trotzdem beantwortet das leider nicht ganz meine Frage ^^
Ansonsten genügt es, die Schleife ein- bis maximal zweimal zu durchlaufen...
Wie oft den nun genau für Path Coverage? Es geht ja darum, minimale Testfälle zu finden.

Zitat aus den Folien der EiSE-Vorlesung dieses Semester:
Remark: PC [Path Coverage] cannot be achieved in practice, e.g., no fixed loop bound, not all paths
feasible
Bei der Aufgabe in Übung 12 haben wir also den Fall, dass nicht alle Pfade erreichbar sind und die Schleife nach oben nicht beschränkt ist (while n>0).
Das die zwei Pfade nicht möglich sind, sei für das folgende außer Acht gelassen.
Da eben A,B,C und A,B,A,B,C zwei verschiedene Pfade sind, bräuchte man nun meiner Meinung nach Testfälle für den Fall, dass die Schleife einmal, zweimal, dreimal etc. durchlaufen wird. Das dadurch natürlich immer wider die gleichen Knoten durchlaufen werden, ist mir klar. Es geht mir auch nicht darum, was man in der Praxis tatsächlich machen würde, sondern wie es theoretisch sein müsste und meiner Meinung nach, sagt die Definition eben, dass man jeden Programmpfad testen muss. Also muss man testen, dass die SChleife einmal, zweimal etc. durchlaufen wird, da man dabei jedesmal verschiedene Pfade durch den Graphen durchläuft.

Grüße

barracuda317
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 187
Registriert: 12. Okt 2011 18:15

Re: 100% Path-Coverage bei Schleifen

Beitrag von barracuda317 » 14. Mär 2013 19:03

Mal eine (vllt doofe) Frage dazu.

Ich habe mir in der Übung also Notiz: 1*2*2*2+1=9 aufgeschrieben.

Aber im Nachhinein kann ich das grad nicht rekonstruieren, warum das so ist?

----
Edit:

Ich habe nun nochmal nachgedacht und mir folgende Erklärung zurechtgebastelt:

1*(a!=b) + 1*(a==b)

Dabei ist (a==b) nur ein Pfad. Also 1

Für (a!=b) haben wir:

3 If-Bedingungen mit (a>b), (n<0) , (n<0)

Also (a!=b) = 2*2*2

Passt das?

GuitarBero
Neuling
Neuling
Beiträge: 10
Registriert: 27. Feb 2013 18:57

Re: 100% Path-Coverage bei Schleifen

Beitrag von GuitarBero » 15. Mär 2013 11:16

Ja passt. Genau das wurde in der Übung gesagt.

Antworten

Zurück zu „Archiv“