Archiv

Archiv für die Kategorie ‘Testing’

Remarkable – Rails Anwendungen automatisch testen


Seit über einem Jahr entwickle ich Webanwendungen mit Ruby on Rails. Und seit dieser Zeit schreibe ich Tests für meine Anwendungen. Angefangen von Test::Unit über test/spec bis zu RSpec. Doch selten gingen mir Tests leicht von der Hand. Ständig stelle ich mir die Frage: Wie viel teste ich? Habe ich genug getestet? Teste ich schon Rails Code?

Die verschiedenen Test Frameworks haben ihre Vor- und Nachteile. Test::Unit ist relativ einfach und schnell. test/spec und RSpec hingegen deutlich lesbarer, jedoch auch langsamer. Sie eigenen sich deshalb besser, um die Tests als Dokumentation zu verwenden. Test::Unit und test/spec verwenden für Viewtests den Umweg über die Controller, was sie im Vergleich zu RSpec deutlich langsamer macht. In Rspec testet man jede Schicht des MVC Musters separat. Das Verhalten der jeweils anderen Schichten wird mit Mocks und Stubs simuliert. Integration Tests mit Cucumber testen dann das Zusammenspiel aller Schichten.

Carlos Dandos und José Valims Remarkable ist das mit Abstand großartigste Plugin für Ruby on Rails, was mir seit langem über den Weg gelaufen ist, denn es reduziert Tests auf das nötigste! Man schreibt in unglaublich expressiver Form, was das erwartete Verhalten ist. Das auf RSpec basierende Remarkable testet mit einer Vielzahl von Custom Matchers die Erwartung ab.

Mehr…

canoo webtest – Web-Anwendungen automatisch testen

17. November 2007 14 Kommentare

In der Softwareentwicklung haben sich in den letzten Jahren diverse Praktiken des automatisierten Testens etabliert. Die bekannteste Methode dürfte der Unit Test sein. Dabei wird jede Komponente einer Anwendung in einer wohldefinierten Umgebung einzeln abgetestet. In Java lässt sich diese Art Tests sehr einfach mit JUnit und Ant bewerkstelligen. Sollen aber sogenannte Usecases einer Web-Anwendung überprüft werden, stößt man schnell an die Grenzen des machbaren. Schließlich werden Dienste vorausgesetzt, die nur der JEE-Container ( Tomcat, JBoss) zur Verfügung stellt. Diese Dienste sind beim Testen einer Einheit ausserhalb des Containers nicht zwangsläufig vorhanden. Oft wird aus diesen Gründen das Testen mit echten Personen durchgeführt. Doch steigt mit der Anzahl der Usecases der Testaufwand exponentiell, was dazu führt, dass nicht alle Tests auf jede neue Version angewendet werden. In diesem Artikel werde ich zeigen, wie eine Web-Anwendung mit Hilfe von Canoo Webtest automatisch abgetestet werden kann.

Mehr…