2009-05-19 8 views
0

Ich schreibe eine Webanwendung, die eine Art Zeitplan enthält. Nach einer bestimmten Aktion wird der Zeitplan aktualisiert und wenn der Benutzer die Seite an diesem Tag besucht, passiert etwas.Wie testen Sie funktional, dass etwas zu gegebener Zeit passieren soll?

Haben Sie Ideen, wie Sie einen funktionalen (Akzeptanz-) Test für diese Art von Funktionalität schreiben können?

Ich schreibe diese Ende-zu-Ende-Tests mit Selen. Die einzige Idee, die ich habe, ist die Möglichkeit, den Server zu zwingen, ein bestimmtes Datum zu verwenden, indem man eine URL wie /set-fixed-time?time=..., dann nach dem Testbesuch /set-real-time besucht.

Auf dem Server würde ich ein benutzerdefiniertes Objekt verwenden, um die aktuelle Zeit zu erhalten, und dieses Objekt würde ausgetauscht werden, wenn eine der URLs besucht wird.

Antwort

2

Ich denke, es ist in Ordnung für Entwickler testen, aber Akzeptanztest sollte ohne Mock durchgeführt werden (Sie könnten einen Fehler in Ihrem Mock-Code haben). Wenn es 3 Tage warten muss, sollte der Akzeptanztest diese Baumtage abwarten oder sie könnten durch Ändern der Serverzeit umgangen werden. Ich denke, es ist eine schlechte Idee, die Türen nur zum Testen zu verlassen (ein Tester könnte es von Hand testen und dann in Echtzeit einstellen).

+0

Gute Punkte, danke. Und ich könnte einfach vergessen, den Zeitanbieter anstelle der Systemzeit zu verwenden. Ich würde diese/set - * - Zeit-Dienste in der Produktionsumgebung deaktiviert. –

0

Ich stimme dem Affen zu, das wird am besten von den Entwicklern gehandhabt.

Sie könnten auch einen Hybrid versuchen. Es gibt keinen Grund, dass alle Ihre Akzeptanztests auf einer unveränderten Simulation der Produktionsstätte ausgeführt werden müssen oder nur die Webschnittstelle verwenden dürfen oder als Admin nicht geändert werden können oder Code nicht ausführen können. Sie müssen auch nicht die Zeit des gesamten Servers ändern, die global ist und wahrscheinlich unbeabsichtigte Konsequenzen haben wird. Sie können stattdessen ändern, wenn der Benutzer zuletzt aktualisiert wurde.

Sie können Selenium von einem Programm aus steuern, so dass ein hybrider Selen- und Codetest Code verwenden kann, um die Daten eines Benutzers "wann war das letzte Mal die aktualisierten" einzustellen und dann die Selenium-Tests auszuführen, um das Ergebnis zu überprüfen. Probieren Sie es aus, wenn es nie ausgeführt wurde, kurz bevor die Zeit abläuft, genau dann, wenn die Zeit abläuft und kurz danach.