differences between unit testing
Ein detaillierter Vergleich von Unit-, Integrations- und Funktionstests:
Für jede Softwareanwendung sind sowohl Unit-Tests als auch Integrationstests sehr wichtig, da jede von ihnen einen einzigartigen Prozess zum Testen einer Softwareanwendung verwendet.
Aber einer oder sogar beide können die Funktionsprüfung zu keinem Zeitpunkt ersetzen.
Was du lernen wirst:
- Unit Testing Vs Integration Testing Vs Functional Testing
- Was ist Unit Testing?
- Was ist Integrationstest?
- Unit Testing vs. Integration Testing
- Funktionsprüfung
- Genauer Unterschied
- Fazit
- Literatur-Empfehlungen
Unit Testing Vs Integration Testing Vs Functional Testing
Unit Testing bedeutet, einzelne Module einer Anwendung isoliert zu testen (ohne Interaktion mit Abhängigkeiten), um zu bestätigen, dass der Code die Dinge richtig macht.
Integrationstests bedeutet zu überprüfen, ob verschiedene Module gut funktionieren, wenn sie als Gruppe kombiniert werden.
Funktionsprüfung bedeutet, einen Teil der Funktionalität im System zu testen (kann mit Abhängigkeiten interagieren), um zu bestätigen, dass der Code die richtigen Dinge tut.
Funktionstests beziehen sich auf Integrationstests. Sie bedeuten jedoch Tests, bei denen die Funktionalität der gesamten Anwendung überprüft wird, wobei der gesamte Code zusammen ausgeführt wird. Dies ist fast ein Super-Integrationstest.
Beim Komponententest wird eine einzelne Komponente des Systems überprüft, während beim Funktionstest die Funktionsweise einer Anwendung anhand der in der Systemanforderungsspezifikation beschriebenen beabsichtigten Funktionalität überprüft wird. Zum anderen wird beim Integrationstest die Überprüfung integrierter Module im System in Betracht gezogen.
Und vor allem sollte Ihre Codebasis zur Optimierung des Return on Investment (ROI) so viele Komponententests wie möglich, weniger Integrationstests und die geringste Anzahl von Funktionstests enthalten.
Dies wird am besten in der folgenden Testpyramide veranschaulicht:
Unit-Tests sind einfacher zu schreiben und schneller auszuführen. Der Zeit- und Arbeitsaufwand für die Implementierung und Wartung der Tests steigt von Unit-Tests zu Funktionstests, wie in der obigen Pyramide gezeigt.
wie man automatisierte Testfälle schreibt
Beispiel:
Lassen Sie uns diese drei Arten von Tests anhand eines vereinfachten Beispiels verstehen.
Z.B . Für ein funktionsfähiges Mobiltelefon sind hauptsächlich „Akku“ und „SIM-Karte“ erforderlich.
Unit Testing Beispiel - Der Akku wird auf Lebensdauer, Kapazität und andere Parameter überprüft. Die SIM-Karte wird auf ihre Aktivierung überprüft.
Beispiel für Integrationstests - Akku und SIM-Karte sind integriert, d. H. Zusammengebaut, um das Mobiltelefon zu starten.
Beispiel für Funktionstests - Die Funktionalität eines Mobiltelefons wird hinsichtlich seiner Merkmale und des Batterieverbrauchs sowie der SIM-Karten-Funktionen überprüft.
Wir haben ein Beispiel für Laien gesehen.
Nehmen wir nun ein technisches Beispiel für eine Anmeldeseite:
Fast jede Webanwendung erfordert, dass sich Benutzer / Kunden anmelden. Dazu muss jede Anwendung eine Anmeldeseite haben, die folgende Elemente enthält:
- Benutzername
- Passwort
- Anmelde- / Anmeldeschaltfläche
Für Unit-Tests können die folgenden Testfälle sein:
- Feldlänge - Felder für Benutzername und Passwort.
- Eingabefeldwerte sollten gültig sein.
- Die Anmeldeschaltfläche wird erst aktiviert, nachdem gültige Werte (Format und Längsrichtung) in beide Felder eingegeben wurden.
Für Integrationstests können die folgenden Testfälle sein:
- Der Benutzer sieht die Begrüßungsnachricht, nachdem er gültige Werte eingegeben und die Anmeldeschaltfläche gedrückt hat.
- Der Benutzer sollte nach einer gültigen Eingabe und einem Klick auf die Schaltfläche Anmelden zur Begrüßungs- oder Startseite navigiert werden.
Nachdem die Unit- und Integrationstests abgeschlossen sind, sehen wir uns die zusätzlichen an Testfälle, die für Funktionstests berücksichtigt werden:
- Das erwartete Verhalten wird überprüft, d. H. Der Benutzer kann sich anmelden, indem er auf die Anmeldeschaltfläche klickt, nachdem er einen gültigen Benutzernamen und ein gültiges Kennwort eingegeben hat.
- Gibt es eine Willkommensnachricht, die nach einer erfolgreichen Anmeldung angezeigt werden soll?
- Gibt es eine Fehlermeldung, die bei einem ungültigen Login angezeigt werden sollte?
- Gibt es gespeicherte Site-Cookies für Anmeldefelder?
- Kann sich ein inaktivierter Benutzer anmelden?
- Gibt es einen Link 'Passwort vergessen' für Benutzer, die ihr Passwort vergessen haben?
Es gibt viel mehr solcher Fälle, die einem Funktionstester bei der Durchführung von Funktionstests in den Sinn kommen. Ein Entwickler kann jedoch nicht alle Fälle aufgreifen, während er Unit- und Integrationstestfälle erstellt.
Daher gibt es viele Szenarien, die auch nach Unit- und Integrationstests noch getestet werden müssen.
Es ist jetzt an der Zeit, Unit-, Integrations- und Funktionstests nacheinander zu untersuchen.
Was ist Unit Testing?
Wie der Name schon sagt, beinhaltet diese Stufe das Testen einer „Einheit“.
Hier kann Unit der kleinste Teil einer Anwendung sein, der getestet werden kann, sei es die kleinste einzelne Funktion, Methode usw. Softwareentwickler sind diejenigen, die die Unit-Testfälle schreiben. Ziel ist es, die Anforderungen und das erwartete Verhalten des Geräts zu erfüllen.
Im Folgenden finden Sie einige wichtige Punkte zum Testen von Einheiten und deren Vorteilen:
- Unit-Tests werden vor dem Integrationstest von Softwareentwicklern durchgeführt White-Box-Testtechniken .
- Unit-Tests überprüfen nicht nur das positive Verhalten, d. H. Die korrekte Ausgabe bei gültiger Eingabe, sondern auch die Fehler, die bei ungültiger Eingabe auftreten.
- Das frühzeitige Auffinden von Problemen / Fehlern ist sehr nützlich und reduziert die Gesamtkosten des Projekts. Da Unit-Tests vor der Integration von Code durchgeführt werden, können in dieser Phase festgestellte Probleme sehr einfach gelöst werden, und ihre Auswirkungen sind ebenfalls sehr gering.
- Ein Komponententest testet kleine Codeteile oder einzelne Funktionen, sodass die in diesen Testfällen festgestellten Probleme / Fehler unabhängig sind und sich nicht auf die anderen Testfälle auswirken.
- Ein weiterer wichtiger Vorteil ist, dass die Unit-Testfälle das Testen von Code vereinfachen und erleichtern. So wird es auch zu einem späteren Zeitpunkt einfacher, die Probleme zu beheben, da nur die letzte Änderung im Code getestet werden soll.
- Der Unit-Test spart Zeit und Kosten und ist wiederverwendbar und leicht zu warten.
JUnit (( Java Framework ), PHPUnit (PHP-Framework), NUnit (.Net-Framework) usw. sind beliebte Unit-Test-Tools, die für verschiedene Sprachen verwendet werden.
Was ist Integrationstest?
Beim Integrationstest wird die Integration verschiedener Teile des Systems zusammen getestet. Zuerst werden zwei verschiedene Teile oder Module des Systems integriert, und dann werden Integrationstests durchgeführt.
Ziel von Integrationstests ist es, die Funktionalität, Zuverlässigkeit und Leistung des Systems bei der Integration zu überprüfen.
Integrationstests werden an den Modulen durchgeführt, die zuerst einem Unit-Test unterzogen werden. Anschließend wird durch Integrationstests definiert, ob die Kombination der Module die gewünschte Ausgabe liefert oder nicht.
Integrationstests können entweder von unabhängigen Testern oder auch von Entwicklern durchgeführt werden.
Es gibt 3 verschiedene Arten von Integrationstestansätzen. Lassen Sie uns jeden einzelnen kurz besprechen:
a) Urknall-Integrationsansatz
Bei diesem Ansatz werden alle Module oder Einheiten gleichzeitig integriert und getestet. Dies erfolgt normalerweise, wenn das gesamte System zu einem bestimmten Zeitpunkt für Integrationstests bereit ist.
Bitte verwechseln Sie diesen Ansatz des Integrationstests nicht mit Systemtests. Es wird nur die Integration von Modulen oder Einheiten getestet und nicht das gesamte System wie beim Systemtest.
Der Urknall-Ansatz ist das Wichtigste Vorteil ist, dass alles Integrierte auf einmal getestet wird.
Ein Major Nachteil ist, dass es schwierig wird, die Fehler zu identifizieren.
Beispiel: In der folgenden Abbildung werden die Einheiten 1 bis 6 nach dem Big-Bang-Ansatz integriert und getestet.
b) Top-Down-Ansatz
Die Integration der Einheiten / Module wird Schritt für Schritt von der oberen bis zur unteren Ebene getestet.
Das erste Gerät wird einzeln schriftlich getestet STUBS testen . Danach werden die unteren Ebenen einzeln integriert, bis die letzte Ebene zusammengestellt und getestet wurde.
Der Top-Down-Ansatz ist eine sehr organische Art der Integration, da er mit dem Geschehen in der realen Umgebung übereinstimmt.
Das einzige Besorgnis, Sorge Bei diesem Ansatz wird die Hauptfunktionalität am Ende getestet.
c) Bottom-Up-Ansatz
Einheiten / Module werden Schritt für Schritt von der unteren zur obersten Ebene getestet, bis alle Ebenen von Einheiten / Modulen integriert und als eine Einheit getestet wurden. Stimulatorprogramme aufgerufen FAHRER werden in diesem Ansatz verwendet. Es ist einfacher, Probleme oder Fehler auf den unteren Ebenen zu erkennen.
Der Bürgermeister Nachteil Dieser Ansatz besteht darin, dass die übergeordneten Probleme erst am Ende identifiziert werden können, wenn alle Einheiten integriert wurden.
Unit Testing vs. Integration Testing
Nachdem wir genug über Unit-Tests und Integrationstests diskutiert haben, lassen Sie uns die Unterschiede zwischen den beiden in der folgenden Tabelle kurz erläutern:
Unit Testing | Integrationstests |
---|---|
Wird in der Anfangsphase des Tests durchgeführt und kann dann jederzeit durchgeführt werden | Muss nach dem Unit-Test und vor dem Systemtest durchgeführt werden |
Testet die einzelne Komponente des gesamten Systems, d. H. Testet eine Einheit isoliert. | Testet die Systemkomponenten, die zusammenarbeiten, d. H. Testet die Zusammenarbeit mehrerer Einheiten. |
Schneller auszuführen | Kann langsam laufen |
Keine externe Abhängigkeit. Jede externe Abhängigkeit wird verspottet oder ausgeblendet. | Erfordert die Interaktion mit externen Abhängigkeiten (z. B. Datenbank, Hardware usw.) |
Einfach | Komplex |
Vom Entwickler durchgeführt | Vom Tester durchgeführt |
Es ist eine Art White-Box-Test | Es ist eine Art Black-Box-Test |
Günstige Wartung | Teure Wartung |
Beginnt mit der Modulspezifikation | Beginnt mit der Schnittstellenspezifikation |
Unit-Tests haben einen engen Umfang, da nur geprüft wird, ob jeder kleine Code das tut, was er tun soll. | Es hat einen größeren Anwendungsbereich, da es die gesamte Anwendung abdeckt |
Das Ergebnis von Unit-Tests ist eine detaillierte Sichtbarkeit des Codes | Das Ergebnis von Integrationstests ist die detaillierte Sichtbarkeit der Integrationsstruktur |
Decken Sie die Probleme nur innerhalb der Funktionalität einzelner Module auf. Zeigt keine Integrationsfehler oder systemweite Probleme an. | Decken Sie die Fehler auf, die auftreten, wenn verschiedene Module miteinander interagieren, um das Gesamtsystem zu bilden |
Funktionsprüfung
ZU Black-Box-Testtechnik Wenn die Funktionalität der Anwendung getestet wird, um bei Bereitstellung einer bestimmten Eingabe die gewünschte Ausgabe zu generieren, wird dies als „Funktionstest“ bezeichnet.
In unserer Software-Testprozesse Dazu schreiben wir Testfälle gemäß den Anforderungen und Szenarien. Für jede Funktionalität kann die Anzahl der geschriebenen Testfälle von eins bis viele variieren.
Testfälle bestehen im Wesentlichen aus folgenden Teilen:
- Testzusammenfassung
- Voraussetzungen (falls vorhanden)
- Eingabeschritte für Testfälle
- Testdaten (falls vorhanden)
- Erwartete Ausgabe
- Anmerkungen (falls vorhanden)
'Anforderungsbasiert' und 'Geschäftsszenario-basiert' sind die beiden Formen der Funktionsprüfung, die durchgeführt werden.
Beim anforderungsbasierten Testen werden Testfälle gemäß der Anforderung erstellt und entsprechend getestet. Bei einem auf Geschäftsszenarien basierenden Funktionstest werden Tests durchgeführt, indem alle Szenarien aus geschäftlicher Sicht berücksichtigt werden.
Allerdings ist der Major Nachteil Der Funktionstest ist die wahrscheinliche Redundanz beim Testen und die Möglichkeit, einige logische Fehler zu übersehen.
Genauer Unterschied
Schauen wir uns ihre Unterschiede an.
Hier sind einige der wichtigsten:
Unit Testing | Integrationstests | Funktionsprüfung | |
---|---|---|---|
Definition und Zweck | Kleinste Einheiten oder Module einzeln testen. | Testen der Integration von zwei oder mehr Einheiten / Modulen zur Ausführung von Aufgaben. | Testen des Verhaltens der Anwendung gemäß den Anforderungen. |
Komplexität | Überhaupt nicht komplex, da es die kleinsten Codes enthält. | Etwas komplexer als Unit-Tests. | Komplexer im Vergleich zu Unit- und Integrationstests. |
Testtechniken | White-Box-Testtechnik. | White-Box- und Black-Box-Testtechnik. Gray-Box-Test | Black-Box-Testtechnik. |
Große Aufmerksamkeit | Einzelne Module oder Einheiten. | Integration von Modulen oder Einheiten. | Gesamte Anwendungsfunktionalität. |
Fehler / Probleme abgedeckt | Unit-Tests finden Probleme, die in Modulen häufig auftreten können. | Integrationstests stellen Probleme fest, die beim Integrieren verschiedener Module auftreten können. | Funktionstests stellen Probleme fest, bei denen eine Anwendung ihre Funktionalität nicht ausführen kann. Dies schließt auch einige szenariobasierte Probleme ein. |
Ausgabe Flucht | Keine Chance zu entkommen. | Geringere Wahrscheinlichkeit, dass Probleme auftreten. | Es gibt immer mehr Möglichkeiten, Probleme zu vermeiden, da die Liste der auszuführenden Tests immer unendlich ist. |
Lesen Sie auch => Was ist Funktionstest?
Was ist der Befehl grep unter Unix?
Fazit
Alle diese drei Testtypen sind korreliert.
Um eine vollständige Abdeckung zu erreichen, sind Unit-Tests für die Pfade / Codezeilen sowie Funktions- und Integrationstests erforderlich, um sicherzustellen, dass die „Einheiten“ kohärent zusammenarbeiten.
Ich hoffe, dieser Artikel hätte Ihnen eine klare Vorstellung von Unit-, Integrations- und Funktionstests mit ihren Unterschieden gegeben, obwohl diese Testformen noch viel mehr bieten !!
Literatur-Empfehlungen
- Beste Software-Test-Tools 2021 (QA Test Automation Tools)
- Spock für Integration und Funktionstests mit Selen
- Funktionstests gegen nichtfunktionale Tests
- Testen von Primer eBook Download
- Top 10 Integrationstest-Tools zum Schreiben von Integrationstests
- Hauptunterschiede zwischen Black-Box-Tests und White-Box-Tests
- Vollständiger Leitfaden für Funktionstests mit seinen Typen und Beispielen
- Funktionstests vs. Leistungstests: Sollte dies gleichzeitig durchgeführt werden?