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.
3 Stimmen
Verwandt: stackoverflow.com/questions/437897/
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.
0 Stimmen
Die Rauchtests sind wie von AndyM beschrieben. Aber sie sind auch eine Art von Regressionstest.
2 Stimmen
Verwandt: stackoverflow.com/questions/4904096/
0 Stimmen
Verwandt: softwareengineering.stackexchange.com/q/48237/83380
1 Stimmen
Sieht so aus, als hätten Sie vergessen, nach Canary-Tests, A/B-Tests, Penetrationstests, Failover-Tests, Health Checks, HA/DR-Tests und so weiter zu fragen ...