fefrei / prog2tests

Automatically exported from code.google.com/p/prog2tests
0 stars 0 forks source link

CnfContentBewiedTest => Abhängig von der Testreihenfolge? #32

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hallo.

Kann es sein, dass die Tests in "CnfContentBewiedTest" extrem abhängig davon 
sind, in welcher Reihenfolge die Tests laufen?
Denn jedesmal wenn man die Tests laufen lässt, dann tauchen sie ja im 
Testfenster in einer unterschiedlichen Reihenfolge auf (jedenfalls bei mir).
Jetzt ist es so, dass manchmal keine Tests fehlschlagen und manchmal 4 Tests 
fehlschlagen. Und wenn ich dann die Tests, die fehlschlagen, einfach einzeln 
laufen lasse, dann schlagen sie mal fehl und mal funktionieren sie.
Deshalb kam bei mir jetzt der Verdacht auf, dass die Tests vielleicht abhängig 
von der Reihenfolge sind, in der sie ausgeführt werden.

Ich kann mir da auch ehrlich gesagt keinen Reim drauf bilden. Normalerweise 
sollten ja immer die gleichen Ergebnisse bei den Tests rauskommen.

Original issue reported on code.google.com by k.hoff...@gmail.com on 8 Jul 2012 at 9:35

GoogleCodeExporter commented 9 years ago
1. Die Reihenfolge der Tests spielt keine Rolle, wenn "Bewied" im Dateinamen 
enthalten ist. Besonders nicht bei CnfContent.

2. Im Projekt müssen HashSets benutzt werden. Diese verhalten sich 
nicht-deterministisch.

=> Du benutzt eine nicht-deterministische Datenstruktur
=> Deine Implementierung reagiert in manchen Fällen falsch, aber nicht allen
=> Die Tests verlaufen nicht-deterministisch, da nur manchmal, aber nicht immer 
ein solcher "Fall" vom HashSet gewählt wird.
=> Manchmal funktioniert es, manchmal nicht.

Dieses Problem wirst Du mit *allen* Tests haben, die:
- mehr als eine Clause
- mehr als ein Literal
- mehr als eine Variable
- oder eine Kombination der obigen Punkte
benutzen, um Deine Implementierung zu testen.
=> Das sind fast alle.
=> Die Nightlies müssten, mit etwas Pech, ebenfalls nicht-deterministisch sein.

Da der StackTraceBewiedTest ganz besonders darunter leidet, habe ich dort eine 
Schleife eingebaut.
Den CnfContent kann ich leider nicht ganz so einfach "durchschleifen" lassen.

Einziger Tipp den ich geben kann: Wenn Du Fehler suchst, lass es mehrfach 
laufen.
Wenn Du debuggen willst, setze einen Breakpoint kurz vor der entsprechenden 
Meldung, und klicke auf "DEBUG". Dann kannst Du Dir die momentanen Zustände 
Deiner sowie meiner Variablen anschauen (auch rekursiv).

Gruß
Ben

Original comment by Nichmen...@gmail.com on 8 Jul 2012 at 9:48

GoogleCodeExporter commented 9 years ago
Closing, missing response from starter

Original comment by Nichmen...@gmail.com on 9 Jul 2012 at 8:47