Ressourcen für testgetriebene Entwicklung in Webanwendungen? [geschlossen]


15

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).


1
Die verfügbaren Tools hängen von der Sprache ab. welche sprache (n) verwendest du
Alb

Ich verstehe das - aber ich suchte mehr nach Diskussionsartikeln und Essays als nach spezifischen Werkzeugen. Ich weiß, welche Tools verfügbar sind, würde aber gerne erfahren, wie ich sie am besten für Front-End-Anwendungen einsetzen kann.
HorusKol

Antworten:


2

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.


Ein Hauptproblem beim Webdesign ist das Testen von CSS - eine neue CSS-Regel kann unbeabsichtigte Konsequenzen haben, jedoch nur auf einer Seite mit bestimmten Inhalten ... Können Sie das testen?
HorusKol

Gute Frage. Ich würde vorschlagen, dass dies Teil Ihrer UI-Tests ist. Sie entwickeln Ihre Tests so, dass sie die verschiedenen Seiteninhalte enthalten, die Sie erwarten (und einige, die Sie nicht erwarten), und schreiben Ihre Akzeptanzen entsprechend auf. Wenn Sie dann neue CSS-Regeln einführen, sollten Ihre UI-Tests alle Regressionen hervorheben. Möglicherweise ist dieser Vorgang zu zeitaufwändig und Sie können besser bedient werden, indem Sie nur jemanden QS-Tests auf der Website durchführen lassen und Probleme melden.
Anthony Cramp

3

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):

  • Grundlegendes zu Unit-Tests und TDD
  • Auswahl des richtigen Unit-Test-Frameworks
  • Bauen sauberer APIs, modularisiertes und robustes JavaScript
  • Kontinuierliche Verbesserung des Codes durch Refactoring
  • Fünf praktische TDD-Sitzungen: Ajax, DOM-Manipulation, Node.js und mehr
  • Testversion von JavaScript für Entwickler, die mit der Sprache nicht vertraut sind

Derzeit verwenden wir Sinon.js mit Mocha, sind aber bereit, auf Buster.js umzusteigen, da die Funktionen wirklich gut sind!


1

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.


0

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 )


Die Verbindung ist unterbrochen
Keldon Alleyne
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.