Seite 1 von 1

Übung 7

Verfasst: 27. Jun 2011 15:56
von ~usz
Hallo,

eine Frage zur Aufgabe 2: Warum gibt es eine Kante im Datenflussgraphen von Knoten 3 bis 8? In Knoten 3 wird für r doch gar kein Wert definiert? Auch wenn dort ein Wert definiert werden würde (was die 1. Bedingung ist) wird in 8 der Wert auch gar nicht gelesen (was die 2. Bedingung ist)?

Könnte es sein, dass es sich um den Graphen für den fehlerfreien Code handelt (wie im Kommentar)? ;)

Re: Übung 7

Verfasst: 27. Jun 2011 16:52
von saller
Hi,

da war noch ein kleiner Fehler im Code als Relikt aus dem letzten Jahr :roll: . Sorry - habe ich ausgebessert und aktualisiert - jetzt passt der Graph auch wieder zum Code.

Grüße
Karsten

Re: Übung 7

Verfasst: 28. Jun 2011 16:07
von MuldeR
Hallo.

Ich habe Blatt #7 gerade eben noch einmal neu runter geladen, aber im Datenfluss-Graphen gibt es immer noch Kanten von 3 nach 8 :?:

Auch müsste die Kante von 3 nach 15 meiner Meinung nach weg. Ebenfalls mit der Begründung, dass in 3 ja ein nur ein u(r) und kein d(r) statt findet.

(Laut Skript gibt es eine Kante von n1 nach n2, wenn in n1 d(x) und in n2 r(x) gilt und der Pfad zwischen n1 und n2 definitionsfrei ist)

[EDIT]

Okay, ich sehe gerade, dass nicht der Graph an den Code, sondern der Code an den Graphen angepasst wurde :wink:

Re: Übung 7

Verfasst: 28. Jun 2011 16:15
von saller
Hallo Mulder,

bist Du sicher, dass Du die gestern aktualisierte Version dir runter geladen hast (die ich kurz nach meinem obigen Post aktualisiert habe)?

In dem Codebeispiel wird in Zeile 3 r mit 0 definiert und in Zeile 8 wieder neu definiert. Das waren die entsprechenden Änderungen.

Code: Alles auswählen

01	/** berechne die Gaußsche Summe brute force*/
02 public int littleGauss(int s, int e) {
03		int r=0;
04		// are the numbers positive?
05		if (e > 0) {
06			// calculate
07			while (e != s) {
08				r += s + e;
09				e--;
10			}
11			System.out.println("Der Gaußsche Summe ist " + r);
12		} else {
13			r = 0;
14		}
15		return r;
16	}
(Copy Paste aus dem verlinkten PDF http://www.es.tu-darmstadt.de/fileadmin ... Blatt7.pdf)

Gruß
Karsten

Edit
Hehe - ok dann hat sich das wohl erledigt :)

Re: Übung 7

Verfasst: 28. Jun 2011 17:17
von MuldeR
saller hat geschrieben:Edit
Hehe - ok dann hat sich das wohl erledigt :)
Sorry.

Ich habe aber noch eine Frage zu:
All-c-uses = für JEDE Definitionsstelle (d(var)) EIN definitionsfreier Pfad zu ALLEN ereichbaren berechnenden Benutzungen (c(var))

Da heißt, ich muss für jedes d(var) genau einen Pfad finden, der alle (auf irgend einem Pfad) erreichbaren c(var)'s abdeckt. Wenn es für ein d(var) verschiedene c(var)'s gibt, die über verschiedene Pfade/Testfälle erreichbar sind, aber eben nicht gleichzeitig über einen einzigen Pfad/Testfall, dann ist All-c-uses nicht erfüllbar.

Damit wäre All-c-uses hier nicht erfüllbar, da man für d(r) in Zeile 3 nur entweder einen definitionsfreien Pfad nach Zeile 8 oder nach Zeile 11 findet, aber keinen definitionsfreien Pfad, der beide gleichzeitig abdeckt. Entweder ich betrete die While-Schleife um Zeile 8 abzudecken und überschreibe damit r, womit Zeile 11 nicht mehr definitionsfrei erreicht werden kann, oder aber ich betretet die While-Schleife nicht und habe damit Zeile 11 aber nicht 8 abgedeckt...

Versteh ich das so richtig?

Re: Übung 7

Verfasst: 28. Jun 2011 17:39
von saller
Die Definitionsfreien-Pfade können getrennt voneinander betrachtet werden. Das ist dann abhängig von dem Testfall, in einem wird 3 nach 8 abgedeckt im anderen 3 nach 11. Wichtig ist hier, dass für jede Definitionsstelle, alle ihre c-lesenden Stellen überprüft werden.
Mit einem Pfad ist gemeint, dass nicht alle Pfade von einer Def- zu einem spezifischen c überprüft werden. Das bedeutet, wenn wir mehrere Pfade von der Defintionsstelle zu einer bestimtmen c-lese-Stelle haben, muss nur einer davon überprüft werden. Die ganzen Pfadabdeckungen erschlagen wir ja mit den Kontrollflüssen ;)

Hoffe das Hilft Dir ein wenig,
Gruß
Karsten

Re: Übung 7

Verfasst: 28. Jun 2011 19:17
von MuldeR
saller hat geschrieben:Die Definitionsfreien-Pfade können getrennt voneinander betrachtet werden. Das ist dann abhängig von dem Testfall, in einem wird 3 nach 8 abgedeckt im anderen 3 nach 11. Wichtig ist hier, dass für jede Definitionsstelle, alle ihre c-lesenden Stellen überprüft werden. Mit einem Pfad ist gemeint, dass nicht alle Pfade von einer Def- zu einem spezifischen c überprüft werden.
Ah, so ist das zu verstehen. Danke für die Erläuterung.

Re: Übung 7

Verfasst: 2. Jul 2011 18:03
von infinity_dev
Der Graph bei Aufgabe 2 stimmt immer noch nicht. Es fehlt eine Kante von 8 nach 8, da dort ja d(r) und c(r) gilt und das gesetzte r im nächsten Schleifendurchlauf wieder genutzt werden kann.

Edith hat noch eine Frage zur Aufgabe 3b:
Wählen Sie aus dem Kontextmenü der Pakete „src.ij“ und „src.ij.gui“ die Funktion „use
for Coverage Messurement“ aus.
Wenn ich das für das Package ij mache, dann werden automatisch alle Unterpakete auch markiert. Ist das so beabsichtigt? Oder muss ich alle Unterpakete außer ij.gui wieder demarkieren, sodass nur das Haupt- und das GUI-Package markiert sind?

Re: Übung 7

Verfasst: 3. Jul 2011 20:34
von saller
Es fehlt eine Kante von 8 nach 8
Verdammt - da hast Du recht und dass muss ich auf meine Kappe nehmen :oops: - Euch wird da natürlich kein entsprechender Fehler angerechnet, wenn ihr diese Kante nicht beachtet habt.
Wenn ich das für das Package ij mache, dann werden automatisch alle Unterpakete auch markiert. Ist das so beabsichtigt? Oder muss ich alle Unterpakete außer ij.gui wieder demarkieren, sodass nur das Haupt- und das GUI-Package markiert sind?
Hmmm - bei mir wird entsprechend der Anleitung nur alle Klassen ausgewählt die direkt im Paket enthalten sind, weshalb das gui-Package nochmal einzeln ausgewählt werden muss. CodeCover sollte also nur alle Klassen direkt in ij und ij.gui analysieren. Falls Du jetzt schon mit allen Sub-Packages und entsprechenden Klassen die Überdeckung gemacht hast, brauchst Du diese nicht zu wiederholen. An dem Screenshot sehen wir ja, dass Du mit dem Tool gearbeitet hast.

Gruß
Karsten

Re: Übung 7

Verfasst: 4. Jul 2011 10:09
von oren78
Ich hätte da eine Frage zu der Aufgabe 3.a.)
Geben Sie die Testfallbeschreibung als Lösung dieses Aufgabenpunktes ab.
Was genau ist da mit "Testfallbeschreibung" gemeint? Etwa diese test-session-container XML-Datei ?
Oder sind hier etwa die Stichpunkte unseres Testszenarios gemeint?

und noch 'ne Frage, in der Übung steht oben:
Abgabe: Mittwoch, 07.07.2011, 08.00 Uhr
Warum Mittwoch und nicht wie gewohnt Donnerstag, hast das einen besonderen Grund?

Re: Übung 7

Verfasst: 4. Jul 2011 10:32
von Katrin
Hallo,

müsste es bei Aufgabe 2 nicht auch einen Datenpfad r von 3 nach 13 geben?

Viele Grüße ...

katrin (o:

Re: Übung 7

Verfasst: 4. Jul 2011 10:38
von saller
Hi,
Definieren Sie nun Ihr eigenes Testszenario indem Sie sich an dem beispielhaft vorgegebenen Szenario orientieren. Listen Sie jeden Schritt stichpunktartig auf, so dass eine dritte Person Ihr Szenario genauso abarbeiten könnte wie Sie. Beachten Sie hierbei auch besondere Mausklicks! Geben Sie die Testfallbeschreibung als Lösung dieses Aufgabenpunktes ab.
Die Sätze gehören zusammen - Die Testfallbeschreibung entspricht im Prinzip den Stichpzunkten des Eingabeverhaltens.
Warum Mittwoch
07.07 ist ein Donnerstag und der Mittwoch gehört da nicht hin. Bleibt also alles beim Alten.

Beste Grüße
Karsten

Re: Übung 7

Verfasst: 4. Jul 2011 10:41
von saller
Hallo Katrin,
müsste es bei Aufgabe 2 nicht auch einen Datenpfad r von 3 nach 13 geben?
Nein - da existiert keine Kante. Da r in 3 zwar definiert aber in 13 aber nicht gelesen wird (sondern nur neu definiert). Es "fließen" somit keine Daten zwischen den Knoten.

Gruß
Karsten

Re: Übung 7

Verfasst: 4. Jul 2011 10:54
von oren78
saller hat geschrieben:Die Sätze gehören zusammen - Die Testfallbeschreibung entspricht im Prinzip den Stichpzunkten des Eingabeverhaltens.
Nice, dann wäre das schon mal geklärt...
saller hat geschrieben:07.07 ist ein Donnerstag und der Mittwoch gehört da nicht hin. Bleibt also alles beim Alten.
Na dann \(\rightarrow\) Muchas Gracias ;-)