2010-12-27 6 views
1

Ich entwickle ein Projekt mit CodeIgniter und schreibe Komponententests und Webtests in SimpleTest. Ich habe festgestellt, dass meine Tests nicht deterministisch sind, d. H. Sie produzieren zeitlich unterschiedliche Ausgaben. Ich meine die Testfälle, die streng deterministisch sein sollten, sich nicht auf zufällige Variablen etc. verlassen.SimpleTest WebTestCases, die sich gegenseitig beeinflussen, nicht deterministische Ausgabe

Die Tests sehen aus, als ob sie sich gegenseitig beeinflussen. Ziemlich oft, wenn alles in Ordnung ist, habe ich sagen wir 100 bestandene Tests, aber wenn ich eine neue Testmethode schreibe, die fehlschlägt, dann scheitern auch einige andere Tests. Aber oft nach der Korrektur des Problems in meinem fehlerhaften Testfall und Wiederholung der gesamten Testsuite 2-3 mal ganze Suite gibt einen Pass wieder.

Dies geschieht im Allgemeinen mit WebTestCases.

Haben Sie eine Idee, was könnte das Problem sein?

ich ändern keine Klassenvariablen, die usw. geteilt werden

Ich habe Blick auf den Code von Simple (mehr oder weniger, es ist groß ganze Strömung schnell zu analysieren) und es sieht aus wie die Instanz des Browsers wird vor dem Start verschiedener Tests neu erstellt.

Die seltsamste Sache ist, dass nach dem erneuten Ausführen einige Fehler verschwinden und schließlich alle. Ist da etwas Caching involviert?

Ich bin dankbar für Hinweise, da es wirklich nicht viel Dokumentation/Blogeinträge/Forum Beiträge über SimpleTest im Web gibt, mit Ausnahme seiner API auf der Website.

Antwort

0

(edit: bewegt, um die Antwort als separate post)

Huh, habe ich recht gründliche Untersuchung und es scheint, dass es ein Fehler in Simple Bibliothek ist.

Sie verwenden fsockopen zum Öffnen der Verbindung, dann senden Sie eine Anfrage über fwrite, und dann falsch abrufen Antwort vom Socket. Was ich meine: Es kann passieren, dass wir 0 Byte vom Socket lesen, aber wir sind nicht fertig, wie wir fälschlicherweise annehmen, denn der Server kann beschäftigt sein und Daten später senden, während wir das Lesen vorzeitig beendet haben. Auf diese Weise haben wir die vollständige Antwort nicht gelesen, und wir testen nur gegen partielle Antworten, wodurch sie fehlschlagen.

0

Things es sein könnte:

  • Caching - sind Sie schlechte Ergebnisse Cachen irgendwo in der Kette?
  • Missverständnis - Sind Sie sicher, dass Sie die richtigen Dinge testen?
  • Bad Daten - Wenn Sie dies auf oben eine Datenbank testen, und das Scheitern die Daten in der Datenbank beschädigt, Sie Ergebnisse wie Sie Erwähnung finden könnten.
+0

Nichts von denen, aber danke für Anregungen. Ich habe eine Bearbeitung mit dem, was ich herausgefunden habe, gepostet. –

+0

Ich sehe ... Dies ist einer der vielen Gründe, warum ich lieber keine Testsuiten verwende. – DampeS8N