Ich würde gerne versuchen, TDD in unseren Webanwendungen zu implementieren, um Regressionen zu reduzieren und die Release-Qualität zu verbessern, bin aber nicht überzeugt, wie gut automatisierte Tests mit etwas so Flauschigem wie Webanwendungen funktionieren können.
Ich habe über TDD und Unit-Tests gelesen und versucht, aber die Beispiele sind "solide" und ziemlich einfache Funktionen wie Währungsumrechner und so weiter.
Gibt es Ressourcen, die beim Unit-Testing von Content-Management- und Publikationssystemen helfen können? Wie wäre es mit Unit-Tests eines Einkaufswagens / Geschäfts (physische und Online-Produkte)? Ajax?
Wenn ich nach "Web Test Driven Development" google, bekomme ich nur alte Artikel von vor einigen Jahren, die entweder dieselben Beispiele für rechnerähnliche Funktionen enthalten oder Diskussionen darüber, warum TDD besser ist als alles andere (ohne Beispiele).
quelle
Antworten:
Großer Haftungsausschluss: Ich habe keine Webanwendungen erstellt oder getestet. Das Folgende sind nur einige Informationen, die ich in meinen zufälligen Schritten in der Informationssphäre aufgesogen habe.
Erstellen Sie Ihre Webanwendung so, dass Geschäftsregeln isoliert getestet werden können. Wenn Sie feststellen, dass Sie Geschäftsregeln über die Benutzeroberfläche testen, ist es möglicherweise an der Zeit, über eine Neugestaltung nachzudenken.
Ersetzen Sie beim Testen der Benutzeroberfläche Ihre Geschäftsregeln durch Scheinimplementierungen, die vorhersehbar reagieren.
Die beiden oben genannten Regeln stammen aus dem Vortrag von Bob Martin auf der RailsConf 2010 . Der Vortrag handelt nicht von TDD und der Abschnitt, in dem er Tests erwähnt, ist kurz und liegt irgendwo in der Mitte.
Es gibt Tools wie JsUnit , JSSpec , YUI Test zum Testen von JavaScript und Selen und Watir zum Testen der Benutzeroberfläche.
Das Pragmatic Bookshelf enthält einige Bücher zum Testen von Webanwendungen. Eine Liste der mit Testing getaggten Bücher finden Sie unter http://www.pragprog.com/categories/design . Die Web-App-Testbücher von Pragmatic Bookshelf konzentrieren sich hauptsächlich auf Ruby und Rails, sollten jedoch allgemein anwendbar sein.
quelle
Test-Driven JavaScript Development ist ein wirklich schönes Buch von Christian Johansen, dem Entwickler von Sinon.js und Buster.js , das Themen abdeckt wie (von der Website entnommen):
Derzeit verwenden wir Sinon.js mit Mocha, sind aber bereit, auf Buster.js umzusteigen, da die Funktionen wirklich gut sind!
quelle
Bei einem Projekt, an dem ich kürzlich gearbeitet habe, hatte der Hauptentwickler beschlossen, Unity zu verwenden, damit das Verspotten und TDD in einer großen Webanwendung vereinfacht wurden. Ich gehe davon aus, dass die Verwendung von Unity häufig von TDD als Webanwendung begleitet wird.
Die Untersuchung von Unit-Testing-CMS führt wahrscheinlich zu einer Sackgasse, da es einfach keinen Grund gibt, sich über etwas lustig zu machen. Ich sehe nicht, was getestet werden kann, ohne den http-Verkehr auf den Seiten zu verspotten - und zu diesem Zeitpunkt hat der Test wenig Wert.
Ich denke, eine nützliche Faustregel für Webanwendungen ist, dass sie wahrscheinlich Unit-Tests unterzogen werden können, wenn sie zur Reduzierung der Komplexität einen Schein verwenden können.
So können Sie in einer Webanwendung Ihre Datenbank verspotten, um verschiedene Teile Ihrer Datenzugriffsebene oder Ihres Datenzugriffsmodells zu testen. Sie können Benutzereingaben verspotten, um die Ansicht oder Benutzeroberfläche usw. zu testen.
quelle
Ich habe ein Buch über TDD für die Webentwicklung mit Python + Django geschrieben. Es deckt TDD sowohl mit End-to-End- / Funktionstests (Selen) als auch mit "Unit" -Tests auf niedrigerer Ebene ab. Ich beschreibe auch moderne Entwicklungspraktiken wie das Integrieren von Git in Ihren Workflow, das Bereitstellen auf einem Server und das Automatisieren und Testen, die kontinuierliche Integration, das Verspotten und Testen der Isolation und vieles mehr:
http://www.obeythetestinggoat.com/
(oder http://shop.oreilly.com/product/0636920051091.do )
quelle