In JavaScript ist Unit-Test ein Test auf Korrektheit von Programmmodulen (der kleinsten Einheit des Software-Designs). Ziel ist es, Programmmodule zu isolieren und zu beweisen, dass diese einzelnen Module korrekt sind. Unit-Tests stellen sicher, dass Probleme frühzeitig im Entwicklungsprozess entdeckt werden, und ermöglichen es Programmierern, einfach zu überprüfen, ob Codeausschnitte noch ordnungsgemäß funktionieren.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
In der Computerprogrammierung ist Unit Test (auch Modultest genannt) ein Test zur Korrektheitsprüfung von Programmmodulen (der kleinsten Einheit des Softwaredesigns). Eine Programmeinheit ist die kleinste testbare Komponente einer Anwendung. Bei der prozeduralen Programmierung ist eine Einheit ein einzelnes Programm, eine einzelne Funktion, ein einzelner Prozess usw.; bei der objektorientierten Programmierung ist die kleinste Einheit eine Methode, einschließlich Methoden in Basisklassen (Superklassen), abstrakten Klassen oder abgeleiteten Klassen (Unterklassen).
Jeder ideale Testfall ist unabhängig von anderen Fällen; um Module während des Tests zu isolieren, werden häufig Testwestenprogramme wie Stubs, Mocks oder Fakes verwendet. Unit-Tests werden in der Regel von Softwareentwicklern geschrieben, um sicherzustellen, dass der von ihnen geschriebene Code den Softwareanforderungen entspricht und den Entwicklungszielen entspricht.
Das Ziel des Unit-Tests besteht darin, Programmmodule zu isolieren und zu beweisen, dass diese einzelnen Module korrekt sind. Unit-Tests stellen sicher, dass Probleme frühzeitig im Entwicklungsprozess entdeckt werden, sodass das Programm „früher stirbt“. Wir sollten Unit-Tests für alle Funktionen und Methoden bereits in der frühen Entwicklungsphase schreiben. Mithilfe lesbarer Unit-Tests können Programmierer leicht überprüfen, ob Codefragmente noch ordnungsgemäß funktionieren. Gut gestaltete Unit-Testfälle decken alle Pfade zu Programm-Unit-Verzweigungen und Schleifenbedingungen ab. Bei diesem Bottom-up-Testpfad wird zunächst das Programmmodul und dann die Modulsammlung getestet. Sobald durch eine Änderung ein Fehler auftritt, kann dieser mithilfe von Unit-Tests schnell lokalisiert und behoben werden.
Unit-Tests sind in der Back-End-Entwicklung sehr beliebt und beliebt, wie beispielsweise JUnit für JAVA-Entwickler, werden jedoch selten in der Front-End-Entwicklung eingesetzt. Der Hauptgrund dafür ist, dass Unit-Tests besser zum Testen von Logikcode geeignet sind, was für Back-End-Programmiersprachen wie JAVA sehr praktisch ist. Die Front-End-Entwicklung erfordert jedoch häufig den Umgang mit der Benutzeroberfläche, und dies ist bei UI-bezogenen Codes nicht der Fall Unit-Tests sind jedoch in der Tat sehr mühsam und viel schwieriger als logischer Code. Dies hat dazu geführt, dass Unit-Tests in der Front-End-Entwicklung nicht populär geworden sind.
Mit der Popularität von Unit-Tests, insbesondere der Förderung der agilen Entwicklung, sind jedoch viele hervorragende JavaScript-Unit-Test-Frameworks entstanden, wie z. B. QUnit, Jasmine usw. Alle diese Frameworks können Javascript-Code grundsätzlich gut testen. Natürlich ist das Testen des UI-Codes auch schwieriger, aber wir können einen Teil des UI-Codes testen, indem wir unseren Testcode sorgfältig erstellen. Allerdings hat nicht jedes Framework seine eigenen Fachgebiete. Hier sind einige repräsentative Frameworks zur Einführung ausgewählt.
l QUnit-Framework
a) Einführung
QUnit ist ein vom jQuery-Team entwickeltes JavaScript-Unit-Test-Tool. Derzeit wird der gesamte JQuery-Code mit QUnit getestet, und auch natives JavaScript kann QUnit verwenden.
Ursprünglich hat John Resig QUnit als Teil von jQuery entworfen. Im Jahr 2008 hatte QUnit einen eigenen Namen, eine eigene Homepage und eine eigene API-Dokumentation und begann, anderen die Nutzung für Unit-Tests zu ermöglichen. Allerdings basierte QUnit damals noch auf jQuery. Erst 2009 konnte QUnit völlig unabhängig laufen.
b) Vorteile
Es ist sehr bequem zu verwenden, mit schönem Aussehen und vollständigen Testfunktionen (einschließlich asynchroner Tests);
Es ist sehr einfach und leicht zu verwenden.
Keine Notwendigkeit sich auf irgendetwas anderes zu verlassen Ein Softwarepaket oder Framework kann verwendet werden, solange QUnit selbst nur eine JS-Datei und eine CSS-Datei hat. Natürlich kann es bei Bedarf in andere Frameworks wie jQuery integriert werden Unterstützt nicht nur Tests im Browser, sondern auch Tests in Rhino und Node.js sowie andere Backend-Tests.
c) Nachteile
Es gibt keine gute Automatisierungsunterstützung. Es ist schwierig, es mit Tools wie Ant, Maven oder automatischem Build zu integrieren. Es wird hauptsächlich zum Testen in Browsern verwendet.
l Jasmine Framework a) Einführung
Jasmine ist ein bekanntes JavaScript-Unit-Test-Framework. Es ist ein unabhängiges verhaltensgesteuertes Entwicklungsframework mit klarer und leicht verständlicher Syntax.
Behavior-Driven Development (BDD): Es handelt sich um eine agile Softwareentwicklungstechnologie, die die Zusammenarbeit zwischen Entwicklern, Qualitätssicherung und nicht-technischem Personal oder Geschäftsteilnehmern in Softwareprojekten fördert. BDD wurde ursprünglich 2003 von Dan North benannt. Es umfasst extreme Programmierpraktiken wie Akzeptanz und Kundentestfahrten als Reaktion auf die testgetriebene Entwicklung. In den letzten Jahren hat es sich stark weiterentwickelt.
Der Fokus von BDD liegt darauf, durch Diskussionen mit Stakeholdern ein klares Verständnis des erwarteten Softwareverhaltens zu erlangen. Es erweitert den testgetriebenen Entwicklungsansatz, indem Testfälle in natürlicher Sprache geschrieben werden, die auch für Nicht-Programmierer lesbar sind. Verhaltensgesteuerte Entwickler beschreiben den Zweck ihres Codes in einer Mischung aus Muttersprache und einer einheitlichen Sprache in der Domäne. Dies ermöglicht es Entwicklern, sich auf die Art und Weise zu konzentrieren, wie der Code geschrieben werden soll, statt auf technische Details, und minimiert außerdem die Notwendigkeit, die technische Sprache von Code-Autoren von Geschäftskunden, Benutzern, Stakeholdern, Projektmanagern usw. zu trennen zwischen den Sprachen weiter.
BDD-Praktiken umfassen:
l Festlegung der langfristigen Ziele, die verschiedene Stakeholder erreichen möchten
l Verwendung von Feature-Injection-Methoden, um die Funktionen abzubilden, die zum Erreichen dieser Ziele erforderlich sind
l Verwendung eines Outside-in-Softwareentwicklungsansatzes, Beteiligte Stakeholder werden in den Implementierungsprozess integriert
l Verwenden Sie Beispiele, um das Verhalten der Anwendung oder jeder Codeeinheit zu beschreiben
l Geben Sie schnelles Feedback und führen Sie Regressionstests durch, indem Sie diese Beispiele automatisch ausführen
l Verwenden Sie „ „sollte“ zur Beschreibung das Verhalten der Software, um die Verantwortlichkeiten des Codes zu klären und Fragen zur Funktionalität der Software zu beantworten
l Verwenden Sie „sicherstellen“, um die Verantwortlichkeiten der Software zu beschreiben und die Wirksamkeit des Codes selbst sicherzustellen Dienstprogramm, das von anderen Elementcodes bereitgestellt wird.
l Verwenden Sie Mocks als Ersatz für verwandte Codemodule, die noch nicht geschrieben wurden.
BDD-Feature-Injection: Ein Unternehmen kann mehrere unterschiedliche Visionen haben, die geschäftliche Vorteile bringen, in der Regel einschließlich der Erwirtschaftung von Gewinnen, der Einsparung von Geld oder des Schutzes von Geld . Sobald das Entwicklungsteam feststellt, dass eine Vision unter den aktuellen Bedingungen die beste ist, benötigt es zusätzliche Hilfe, um diese Vision erfolgreich umzusetzen.
Dann identifizieren Sie die Hauptakteure der Vision und beziehen Sie weitere Stakeholder mit ein. Jeder Stakeholder definiert, was er erreichen muss, um die Vision zu erreichen. Beispielsweise kann die Rechtsabteilung verlangen, dass bestimmte Vorschriften eingehalten werden. Der Marketingleiter möchte möglicherweise an einer Benutzergemeinschaft teilnehmen, die die Software verwenden wird. Sicherheitsexperten müssen sicherstellen, dass die Software nicht anfällig für SQL-Injection-Angriffe ist.
Durch diese Ziele wird der ungefähre Satz an Themen oder Funktionen definiert, die zum Erreichen dieser Ziele erforderlich sind. Zum Beispiel „Benutzern erlauben, Beitragswerte zu sortieren“ oder „Transaktionsüberwachung“. Aus diesen Themen lassen sich die Benutzerfunktionalität sowie erste Details der Benutzeroberfläche ermitteln.
b) Vorteile
Es handelt sich um ein Testframework, das auf verhaltensgesteuerter Entwicklung basiert. Seine Syntax kommt der natürlichen Sprache sehr nahe, ist einfach, klar und leicht zu verstehen.
Es kann für automatisierte Tests problemlos in Ant, Maven usw. integriert werden. Es kann auch problemlos in kontinuierliche Integrationstools wie Jenkins integriert werden und XML-Dokumente mit Testergebnissen generieren.
Es verfügt über eine umfangreiche API und unterstützt Benutzer auch bei der Erweiterung seiner API, was nur wenige andere Frameworks können.
Einfach und benutzerfreundlich, importieren Sie einfach zwei JS-Dateien.
Unterstützt nicht nur Tests im Browser, sondern auch Back-End-Tests wie Rhino und node.js.
Es unterstützt speziell die Ruby-Sprache und kann problemlos in Ruby-Projekte integriert werden
c) Nachteile
Die Testoberfläche im Browser ist nicht so schön und detailliert wie QUnit.
l JsTestDriver
a) Einführung
JsTestDriver ist ein JavaScript-Unit-Test-Tool, das sich leicht in kontinuierliche Build-Systeme integrieren lässt und Tests auf mehreren Browsern ausführen kann, um eine Entwicklung im TDD-Stil einfach zu erreichen. Nachdem JsTestDriver im Projekt konfiguriert wurde, kann JsTestDriver genau wie beim Junit-Testen von Java-Dateien die JS-Datei direkt ausführen, um Unit-Tests durchzuführen. Das JsTestDriver-Framework selbst ist ein JAVA-JAR-Paket, das lokal ausgeführt werden und einen Port überwachen muss.
b) Vorteile
Sie können mehrere Browser gleichzeitig testen. Die Verwendungsmethode besteht darin, beim Starten des Dienstes die Pfade mehrerer Browser als Parameter zu übergeben. Kann in Browsern auf mehreren Computern ausgeführt werden, einschließlich Mobilgeräten.
Tests laufen schnell, da die Ergebnisse nicht zum DOM hinzugefügt werden müssen, um sie zu rendern. Sie können in beliebig vielen Browsern gleichzeitig ausgeführt werden und die unveränderten Dateien werden vom Browser aus dem Cache gezogen.
Es ist keine HTML-Anhangsdatei erforderlich. Geben Sie einfach ein oder mehrere Skripte und Testskripte an, und der Testläufer erstellt bei der Ausführung eine leere Datei.
Es kann für automatisierte Tests problemlos in Ant, Maven usw. integriert werden. Es kann auch problemlos in kontinuierliche Integrationstools wie Jenkins integriert werden und XML-Dokumente mit Testergebnissen generieren.
Es gibt Eclipse- und IntelliJ-Plug-Ins, die ähnlich wie JUnit in diesen beiden IDEs problemlos getestet werden können.
Unterstützt andere Test-Frameworks und kann Testcodes testen, die von anderen Test-Frameworks geschrieben wurden. Es gibt beispielsweise entsprechende Plug-Ins, die QUnit- und Jasmine-Testcodes in JsTestDriver-Testcodes konvertieren können.
c) Nachteile
kann nicht im Browser getestet werden und kann nur über automatisierte Tools oder die Konsole ausgeführt werden. Die generierten Ergebnisse sind nicht intuitiv genug.
Die Installation und Verwendung ist etwas mühsam und hängt von der JAVA-Umgebung ab.
l FireUnit
a) Einführung
FireUnit ist ein Unit-Testing-Framework, das auf Firebugs Javascript basiert. Um es einfach auszudrücken: FireUnit fügt Firebug ein Registerkartenfeld hinzu und stellt einige einfache JavaScript-APIs zum Aufzeichnen und Anzeigen von Tests bereit.
b) Vorteile
Einfach und leicht zu bedienen
c) Nachteile
Der Testcode ist oft im Quellcode geschrieben, die Kopplung jedoch stark und schwer zu reinigen.
Läuft nur in Firefox Next
[Verwandte Empfehlungen: Javascript-Lerntutorial]
Das obige ist der detaillierte Inhalt vonWozu dienen JavaScript-Unit-Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!