810 Stimmen

Was sind Unit-Tests, Integrationstests, Smoke-Tests und Regressionstests?

Was sind Unit-Tests, Integrationstests, Smoke-Tests und Regressionstests? Was sind die Unterschiede zwischen ihnen und welche Tools kann ich für jedes von ihnen verwenden?

Ich verwende zum Beispiel JUnit y NUnit para Unit-Tests y Integrationsprüfung . Gibt es Werkzeuge für die letzten beiden, Rauchprüfung o Regressionstests ?

3 Stimmen

2 Stimmen

Andere haben bereits gut geantwortet, aber ich möchte hinzufügen, dass ich persönlich denke, dass Smoke Test und Regression Test überflüssig sind. Sie tun das Gleiche: Sie testen, um sicherzustellen, dass Änderungen am System nichts kaputt machen.

16 Stimmen

Ich denke, sie unterscheiden sich deutlich von Regressionstests. Ich denke, es handelt sich um absichtlich "leichtgewichtige" Schnelltests, die zu Beginn durchgeführt werden, um Zeit zu sparen, denn wenn einer dieser Tests fehlschlägt, weiß man, dass es sich nicht lohnt, sich mit weiteren Tests zu beschäftigen. Sie können auch vor der Bereitstellung (wir führen ein Upgrade von v1 auf v1.1 durch, also prüfen Sie, ob v1 installiert ist) und nach der Bereitstellung Rauch-Tests durchführen.

13voto

malini Punkte 147

Einheitstest Unit Testing: Das Testen eines einzelnen Moduls oder einer unabhängigen Komponente in einer Anwendung wird als Unit Testing bezeichnet. Die Unit-Tests werden von den Entwicklern durchgeführt.

Integrationstest Kombination aller Module und Testen der Anwendung, um zu überprüfen, ob die Kommunikation und der Datenfluss zwischen den Modulen ordnungsgemäß funktionieren oder nicht. Diese Tests werden auch von den Entwicklern durchgeführt.

Rauchtest Bei einem Smoke-Test wird die Anwendung in einer flachen und breiten Weise geprüft. Beim Smoke-Test wird die Hauptfunktionalität der Anwendung überprüft. Wenn ein Problem in der Anwendung auftritt, wird es dem Entwicklerteam gemeldet, das den Fehler behebt und ihn an das Testteam zurückgibt. Nun prüft das Testteam alle Module, um sicherzustellen, dass sich Änderungen in einem Modul auch auf die anderen Module auswirken oder nicht. Bei der Rauchprüfung die Testfälle sind in einem Skript zusammengefasst.

Regressionstests die wiederholte Ausführung der gleichen Testfälle, um sicherzustellen, dass das unveränderte Modul keinen Fehler verursacht. Regressionstests gehören zu den funktionalen Tests.

0 Stimmen

Das ist die Antwort auf den Titel, nicht aber auf die Frage nach den Werkzeugen für die letzten beiden Testarten, für Smoke-Tests oder Regressionstests. Außerdem wiederholt er frühere Antworten - er könnte durch die Beantwortung der Frage nach den Werkzeugen einzigartig werden.

8voto

Nikita G Punkte 87

REGRESSIONSTESTS

"Ein Regressionstest führt frühere Tests mit der geänderten Software erneut durch, um sicherzustellen, dass die in der aktuellen Software vorgenommenen Änderungen die Funktionalität der bestehenden Software nicht beeinträchtigen."

18 Stimmen

Woher nehmen Sie das Zitat?

4 Stimmen

Nach Angaben von diese Seite Dieses Zitat stammt aus der Wikipedia-Artikel "Softwaretest" obwohl es scheint, dass der Passus irgendwann seit 2010 geändert wurde.

0 Stimmen

Wie auch immer, WP ist keine gültige Quelle. Quellen, auf die dort verwiesen wird, können gültig sein. Es gibt keine gültigen Quellen, auf die in WP verwiesen wird, weder in den Artikeln noch auf den Diskussionsseiten, die die Behauptung stützen würden, dass das "Nicht" irgendeinen Unterschied macht. Ich habe die Textausschnitte in den Ergebnislisten der Suche in Google Books für beide Seiten verglichen "regression test" y "non-regression test" . Es ist das Gleiche.

7voto

Raj Subrameyer Punkte 374

Ich wollte nur hinzufügen und etwas mehr Kontext dazu geben, warum wir diese Teststufen haben und was sie wirklich bedeuten, mit Beispielen

Mike Cohn hat in seinem Buch "Succeeding with Agile" die "Testing Pyramid" als Ansatz für automatisierte Tests in Projekten entwickelt. Es gibt verschiedene Interpretationen dieses Modells. Das Modell erklärt, welche Art von automatisierten Tests erstellt werden müssen, wie schnell sie Rückmeldung über die zu testende Anwendung geben können und wer diese Tests schreibt. Grundsätzlich gibt es 3 Stufen automatisierter Tests, die für jedes Projekt benötigt werden, und zwar folgende.

Einheitstest- Diese testen die kleinste Komponente Ihrer Softwareanwendung. Dabei kann es sich buchstäblich um eine Funktion in einem Code handeln, die auf der Grundlage einiger Eingaben einen Wert errechnet. Diese Funktion ist Teil mehrerer anderer Funktionen der Hardware/Software-Codebasis, aus der die Anwendung besteht.

Ein Beispiel: Nehmen wir eine webbasierte Taschenrechneranwendung. Die kleinsten Komponenten dieser Anwendung, die einem Unit-Test unterzogen werden müssen, könnten eine Funktion sein, die eine Addition durchführt, eine andere, die eine Subtraktion durchführt, und so weiter. All diese kleinen Funktionen zusammengenommen ergeben die Taschenrechneranwendung.

Historisch gesehen schreibt der Entwickler diese Tests, da sie in der Regel in der gleichen Programmiersprache wie die Softwareanwendung geschrieben werden. Zu diesem Zweck werden Unit Testing Frameworks wie JUnit und NUnit (für Java), MSTest (für C# und .NET) und Jasmine/Mocha (für JavaScript) verwendet.

Der größte Vorteil von Unit-Tests ist, dass sie sehr schnell unter der Benutzeroberfläche ablaufen und wir schnelles Feedback über die Anwendung erhalten können. Dies sollte mehr als 50 % Ihrer automatisierten Tests ausmachen.

API/Integrationstests- Diese testen verschiedene Komponenten des Softwaresystems gemeinsam. Die Komponenten können Datenbanken, APIs (Application Programming Interface), Tools und Dienste von Drittanbietern zusammen mit der Anwendung testen.

In unserem obigen Beispiel für einen Taschenrechner kann die Webanwendung eine Datenbank verwenden, um Werte zu speichern, APIs verwenden, um einige serverseitige Validierungen durchzuführen, und ein Tool/Dienst eines Drittanbieters verwenden, um die Ergebnisse in der Cloud zu veröffentlichen, damit sie auf verschiedenen Plattformen verfügbar sind.

In der Vergangenheit hat ein Entwickler oder ein technischer QA diese Tests mit verschiedenen Tools wie Postman, SoapUI, JMeter und anderen Tools wie Testim geschrieben.

Diese laufen viel schneller ab als UI-Tests, da sie immer noch unter der Haube ablaufen, können aber etwas mehr Zeit in Anspruch nehmen als Unit-Tests, da sie die Kommunikation zwischen verschiedenen unabhängigen Komponenten des Systems überprüfen und sicherstellen müssen, dass sie nahtlos integriert sind. Dies sollte mehr als 30 % der automatisierten Tests ausmachen.

UI-Tests. Schließlich gibt es noch Tests, die die Benutzeroberfläche der Anwendung überprüfen. Diese Tests werden in der Regel geschrieben, um die End-to-End-Flows durch die Anwendung zu testen.

Ein Beispiel: In der Taschenrechneranwendung könnte ein End-to-End-Flow wie folgt aussehen: Öffnen des Browsers -> Eingabe der URL der Taschenrechneranwendung -> Anmelden mit Benutzername/Passwort -> Öffnen der Taschenrechneranwendung -> Ausführen einiger Operationen mit dem Taschenrechner -> Überprüfen der Ergebnisse auf der Benutzeroberfläche -> Abmelden von der Anwendung. Dies könnte ein End-to-End-Flow sein, der sich gut für eine UI-Automatisierung eignen würde.

In der Vergangenheit haben technische QAs oder manuelle Tester UI-Tests geschrieben. Sie verwenden Open-Source-Frameworks wie Selenium oder UI-Testplattformen wie Testim, um die Tests zu erstellen, auszuführen und zu pflegen. Diese Tests geben mehr visuelles Feedback, da Sie anhand von Screenshots, Protokollen und Testberichten sehen können, wie die Tests ablaufen und welche Unterschiede zwischen den erwarteten und den tatsächlichen Ergebnissen bestehen.

Die größte Einschränkung von UI-Tests ist, dass sie im Vergleich zu Tests auf Unit- und API-Ebene relativ langsam sind. Daher sollten sie nur 10-20 % der gesamten automatisierten Tests ausmachen.

Die nächsten beiden Arten von Tests können je nach Projekt variieren, aber die Idee ist

Rauch-Tests

Dabei kann es sich um eine Kombination der oben genannten 3 Prüfungsstufen handeln. Die Idee ist, sie bei jedem Code-Check-in durchzuführen und sicherzustellen, dass die kritischen Funktionen des Systems immer noch wie erwartet funktionieren, nachdem die neuen Codeänderungen zusammengeführt wurden. Sie müssen in der Regel 5 - 10 Minuten laufen, um schnelleres Feedback zu Fehlern zu erhalten.

Regressionstests

Sie werden in der Regel mindestens einmal am Tag durchgeführt und decken verschiedene Funktionen des Systems ab. Sie stellen sicher, dass die Anwendung weiterhin wie erwartet funktioniert. Sie sind detaillierter als die Smoke-Tests und decken mehr Szenarien der Anwendung ab, auch die unkritischen.

0 Stimmen

Diese Antwort könnte durch die Beantwortung der Frage nach Werkzeugen für Rauchprüfung o Regressionstests .

5voto

Madhivanan Punkte 129
  • Integrationstests: Integrationstests sind die Integration eines weiteren Elements
  • Rauchtest: Smoke-Tests werden auch als Build-Versionstests bezeichnet. Smoke-Testing ist der anfängliche Testprozess, mit dem überprüft wird, ob die zu testende Software für weitere Tests bereit/stabil ist.
  • Regressionstests: Regressionstests sind wiederholt Prüfung. Ob neue Software in ein anderes Modul eingearbeitet wird oder nicht.
  • Einheitstests: Es ist ein White-Box-Test. Nur Entwickler hineingezogen werden

0 Stimmen

Das beantwortet die Überschrift, aber nicht die Frage nach den Werkzeugen für die letzten beiden Testarten, für Smoke Testing oder Regression Testing. Außerdem wiederholt er frühere Antworten - er könnte durch die Beantwortung der Frage nach den Werkzeugen einzigartig werden.

5voto

Dave Punkte 3904

Einheitliche Prüfung ist auf den kleinstmöglichen Teil der Umsetzung gerichtet. In Java bedeutet dies, dass Sie eine einzelne Klasse testen. Wenn die Klasse von anderen Klassen abhängt, werden diese vorgetäuscht.

Wenn Ihr Test mehr als eine Klasse aufruft, ist es ein Integrationstest .

Vollständige Testsuiten können viel Zeit in Anspruch nehmen, daher führen viele Teams nach einer Änderung einige schnell durchzuführende Tests durch, um signifikante Fehler zu erkennen. Zum Beispiel haben Sie die URIs zu wichtigen Ressourcen beschädigt. Diese sind die Rauchversuche .

Regressionstests werden bei jedem Build ausgeführt und ermöglichen ein effektives Refactoring, indem sie die Fehler aufspüren. Jede Art von Test kann ein Regressionstest sein, aber ich finde, Unit-Tests sind am hilfreichsten, um die Fehlerquelle zu finden.

0 Stimmen

Das beantwortet die Überschrift, aber nicht die Frage nach den Werkzeugen für die letzten beiden Testarten, für Smoke Testing oder Regression Testing. Außerdem wiederholt er frühere Antworten - er könnte durch die Beantwortung der Frage nach den Werkzeugen einzigartig werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X