Übung 5.1

key
Neuling
Neuling
Beiträge: 6
Registriert: 19. Okt 2009 08:55

Übung 5.1

Beitrag von key »

In FlascardSeries schmeißt die Funktion removeListDataListener eine IndexOutOfBounceExeption, wenn ein man ein Element löschen will, das sich nicht in der Liste befindet. Da kein Index übergeben wurde halte ich diese Exeption für unangemessen. Außerdem scheint die recht unabsichtlich zu entstehen. Wenn die for-Schleife komplett durchgelaufen ist, ist der Index nämlich zu groß und beim arraycopy raucht es.

Enrico
Windoof-User
Windoof-User
Beiträge: 39
Registriert: 20. Sep 2009 18:36

Re: Übung 5.1

Beitrag von Enrico »

Hey,

ich poste jetzt meine Frage einfach mal hier dazu - wir
sind ehrlich gesagt ein wenig ratlos was wir jetzt genau machen
sollen - die Aufgabenstellung gibt vor, dass wir Testfälle
schreiben sollen.

Die Frage ist nun welche und für was ? Oder
habe ich / wir einfach nur was übersehen ? Es
muss ja irgendeine Vorgabe geben ...

Danke !

Grüße

Streber
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 4. Mai 2008 13:48

Re: Übung 5.1

Beitrag von Streber »

Hi,

wir sollen zu den Klassen "Flashcard" und "FlashcardSeries" Testfälle schreiben (dazu den Sourceordner von der 4.Übung in die 5. (ins src-Ordner) reinkopieren).

Aber meine Frage wäre, wie kann ich die Methoden zu ListDataListener testen?
Dazu müsste ich z.B. der Methode add-/removeListDataListener einen ListDateListener übergeben, wie erzeugt/initialisiert man so etwas?
Oder wie genau kann ich den Array ListDataListener testen, ob der das Richtige gibt (getListDataListener) usw.

Kann mir da jmd ein Tipp geben?

Ausserdem bin ich auch der Meinung das die Methode removeList.... nicht richtig implementiert ist, denn wenn er das Element nicht findet ist der Index = getListDataListener().length

Vielen Dank im Voraus ;)

Johannes
Neuling
Neuling
Beiträge: 10
Registriert: 22. Nov 2010 10:27

Re: Übung 5.1

Beitrag von Johannes »

Hey,

ListDataListener ist ein Interface. Daraus kannst du ein Objekt erzeugen, indem du folgendes Konstrukt schreibst:

ListDataListener listener = new ListDataListener() {
-->Code<--
};

add und remove kannst du dann testen, indem du ein Objekt vom ListDataListener addest, schaust ob es drin ist, dann mit remove wieder löschst und schaust, ob es nicht mehr drin ist. (Das ist nur ein Beispiel für einen Testfall ;-)).

Viele Grüße
Johannes

Johannes
Neuling
Neuling
Beiträge: 10
Registriert: 22. Nov 2010 10:27

Re: Übung 5.1

Beitrag von Johannes »

Enrico hat geschrieben:Hey,

ich poste jetzt meine Frage einfach mal hier dazu - wir
sind ehrlich gesagt ein wenig ratlos was wir jetzt genau machen
sollen - die Aufgabenstellung gibt vor, dass wir Testfälle
schreiben sollen.

Die Frage ist nun welche und für was ? Oder
habe ich / wir einfach nur was übersehen ? Es
muss ja irgendeine Vorgabe geben ...

Danke !

Grüße
Hey,
was für Vorgaben meinst du genau? So in etwa wie in GDI 1? ;-) Leider gibt es das nicht mehr, dass man vorgeschrieben bekommt, was man genau machen soll.

Basic Block Coverage wird dadurch erreicht, dass du mit deinen Testfällen jede Zeile der FlashCardSeries und der FlashCard mind. einmal ausführst. Gut ist es, wenn ihr zu jeder Methode mind. einen Test schreibt. Damit habt ihr zwar noch lange nicht die ganze Klasse getestet, aber das ist bei der 5.1 wenn ich mich richtig erinnere auch nicht gefordert.
Ich hoffe ich konnte helfen ;-).
Viele Grüße
Johannes

Enrico
Windoof-User
Windoof-User
Beiträge: 39
Registriert: 20. Sep 2009 18:36

Re: Übung 5.1

Beitrag von Enrico »

Guten Morgen,

danke für deine Antwort, es hat ein wenig gedauert, bis ich das gerafft habe :)

Grüße

Johannes
Neuling
Neuling
Beiträge: 10
Registriert: 22. Nov 2010 10:27

Re: Übung 5.1

Beitrag von Johannes »

key hat geschrieben:In FlascardSeries schmeißt die Funktion removeListDataListener eine IndexOutOfBounceExeption, wenn ein man ein Element löschen will, das sich nicht in der Liste befindet. Da kein Index übergeben wurde halte ich diese Exeption für unangemessen. Außerdem scheint die recht unabsichtlich zu entstehen. Wenn die for-Schleife komplett durchgelaufen ist, ist der Index nämlich zu groß und beim arraycopy raucht es.
Hey,
wenn sich die Methode so verhält, teste doch einfach darauf, ob die Exception geworfen wird. Ob die Methode nun sinnvoll implementiert ist oder nicht, ist in dem Fall eigentlich egal ;-)
Viele Grüße
Johannes

eichberg
Dozentin/Dozent
Beiträge: 448
Registriert: 25. Sep 2007 12:12
Kontaktdaten:

Re: Übung 5.1

Beitrag von eichberg »

key hat geschrieben:In FlascardSeries schmeißt die Funktion removeListDataListener eine IndexOutOfBounceExeption, wenn ein man ein Element löschen will, das sich nicht in der Liste befindet.
Korrekt. Welchen Sinn sollte es machen das Löschen von "ListDataListener"s zu unterstützen, die vorher nicht registriert wurden? Es ist liegt in diesem Fall eindeutig ein Programmierfehler vor und es kommt zu einer Exception, die für das schnelle Finden und Lösen eines entsprechenden Problems ausreichen sollte. Natürlich könnte man Code hinzufügen, der diesen Fall abfängt und eine andere RuntimeException generiert (z.B. IllegalArgumentException) - aber ist es sinnvoll diesen Code zu schreiben?

jack_90
Mausschubser
Mausschubser
Beiträge: 75
Registriert: 29. Sep 2009 22:38
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 5.1

Beitrag von jack_90 »

Ist es überhaupt notwendig bei Basic Block Coverage zu testen, ob die Methode ihre Funktion erfüllt?
"Basic block coverage is achieved if all basic blocks of a method are executed" (aus Foliensatz 9, Folie 41)
Es müsste also reichen jede Code-Zeile zumindestens einmal ausgeführt zu haben.
Oder ist mit "execute" ein Test auf Funktionalität gemeint?
EiSE Tutor WS 12/13

franzose
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 146
Registriert: 9. Okt 2009 00:08

Re: Übung 5.1

Beitrag von franzose »

soweit ich weiss beschreiben die Coverages, was Du alles mit Deinen Tests wenigstens abgedeckt hast bzw. bieten eine Moeglichkeit zur Klassifizierung. Dass es sich hierbei nach wie vor um Tests handeln soll, halte ich fuer selbstverstaendlich, sonst wurde ja lediglich der Code durchgegangen ohne auf die Funtionalitaet Ruecksicht zu nehmen.

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Re: Übung 5.1

Beitrag von ChRiZz88 »

ist es irgendwie wichtig, wie viele tests man benötigt um diese 100% basic block coverage zu erzeugen?

Oder ist es besser, dies mit möglichst wenig tests zu machen? (besser = mehr punkte)

Grüße

eichberg
Dozentin/Dozent
Beiträge: 448
Registriert: 25. Sep 2007 12:12
Kontaktdaten:

Re: Übung 5.1

Beitrag von eichberg »

Wie in der Vorlesung gesagt: Testen muss effizient sein. Wenn ein bestimmtes Ziel vorgegeben wird, dann gilt es dieses Ziel mit minimalem (Zeit-)Aufwand zu erreichen. Minimaler Aufwand bedeutet im Allgemeinen nicht, dass ich mich stundenlang auf die Suche nach einer Testsuite mit möglichst wenigen Testfällen mache.

Denken Sie daran, dass es in der einen Aufgabe darum geht zu zeigen, dass Sie Basic Block Coverage (ala ECL Emma) korrekt verstanden haben. Wie weiterhin in der Vorlesung gesagt, ist dies aber nur eine vernünftige Grundlage - von einer vernünftigen/sinvollen Testsuite sind Sie dann in aller Regel immer noch weit entfernt.

Antworten

Zurück zu „Archiv“