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


732

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

Zum Beispiel verwende ich JUnit und NUnit für Unit-Tests und Integrationstests . Gibt es Werkzeuge für die letzten beiden, Rauch- oder Regressionstests ?



1
Andere haben bereits gut geantwortet, aber ich möchte hinzufügen, dass ich persönlich denke, dass Rauchtest und Regressionstest überflüssig sind. Sie machen dasselbe: Testen Sie, ob Änderungen am System nichts kaputt gemacht haben.
Randolpho

15
Ich denke, sie unterscheiden sich stark von Regressionstests. Ich denke, es handelt sich absichtlich um "leichte" Schnelltests, die zu Beginn durchgeführt werden, um Zeit zu sparen, denn wenn einer dieser Tests fehlschlägt, wissen Sie, dass es sich nicht lohnt, sich mit zusätzlichen Tests zu beschäftigen. zB Kann der Client eine Verbindung zur Datenbank herstellen, ist .net installiert, ist die richtige Version installiert ... Möglicherweise haben Sie auch eine Vorbereitstellung (wir aktualisieren von Version 1 auf Version 1.1, überprüfen Sie also, ob Version 1 installiert ist) und nach der Bereitstellung Einsatz Rauchprüfungen.
AndyM

Rauchtests sind wie von AndyM beschrieben. Sie sind aber auch eine Art Regressionstest.
Kevin Mcdonnell

Antworten:


1044
  • Komponententest : Geben Sie einen Punkt des Vertrags für eine einzelne Methode einer Klasse an und testen Sie ihn. Dies sollte einen sehr engen und genau definierten Umfang haben. Komplexe Abhängigkeiten und Interaktionen mit der Außenwelt werden gestoppt oder verspottet .

  • Integrationstest : Testen Sie die korrekte Interaktion mehrerer Subsysteme. Dort gibt es ein ganzes Spektrum, vom Testen der Integration zwischen zwei Klassen bis zum Testen der Integration in die Produktionsumgebung.

  • Rauchtest (auch als Sanity Check bezeichnet) : Ein einfacher Integrationstest, bei dem nur überprüft wird, ob das zu testende System beim Aufrufen normal zurückkehrt und nicht explodiert.

    • Rauchprüfung ist sowohl eine Analogie zur Elektronik, bei der der erste Test beim Einschalten eines Stromkreises erfolgt (wenn er raucht, ist er schlecht!) ...
    • ... und anscheinend mit Sanitäranlagen , bei denen ein Rohrsystem buchstäblich mit Rauch gefüllt und dann visuell überprüft wird. Wenn etwas raucht, ist das System undicht.
  • Regressionstest : Ein Test, der geschrieben wurde, als ein Fehler behoben wurde. Es stellt sicher, dass dieser spezielle Fehler nicht erneut auftritt. Der vollständige Name lautet "Nicht-Regressionstest". Es kann auch ein Test sein, der vor dem Ändern einer Anwendung durchgeführt wird, um sicherzustellen, dass die Anwendung das gleiche Ergebnis liefert.

Dazu werde ich hinzufügen:

  • Abnahmetest : Testen Sie, ob eine Funktion oder ein Anwendungsfall korrekt implementiert ist. Es ähnelt einem Integrationstest, konzentriert sich jedoch eher auf den Anwendungsfall als auf die beteiligten Komponenten.

  • Systemtest : Testet ein System als Black Box. Abhängigkeiten von anderen Systemen werden während des Tests häufig verspottet oder gestoppt (andernfalls wäre es eher ein Integrationstest).

  • Pre-Flight-Check : Tests, die in einer produktionsähnlichen Umgebung wiederholt werden, um das Syndrom „Builds on my Machine“ zu lindern. Oft wird dies durch einen Akzeptanz- oder Rauchtest in einer produktionsähnlichen Umgebung realisiert.


250
Die Rauchprüfung ist ein Jahrhundert älter als die Elektronik und stammt aus dem Sanitärbereich, als ein Rohrsystem mit einem tatsächlichen Rauch gefüllt und dann visuell überprüft wurde. Wenn es rauchte, war es undicht.
SnakE

2
Regressionstests werden auch für Funktionsänderungen verwendet, nicht nur für Fehlerkorrekturen. Nikitas Antwort unten ist eine umfassendere Definition.
BobRodes

25
@AndyM Der Hintergrund von 'Rauchtest' ist ungenau. IIRC stammt aus Rohrleitungen, bei denen Rauch in das Rohrsystem gepumpt wird, nachdem es gebaut wurde (und bevor es an die Wasserversorgung angeschlossen wird). Wenn Rauch austritt, sind die Rohre nicht richtig abgedichtet. Dies ist weniger schädlich, als das Wasser tatsächlich fließen zu lassen und zu prüfen, ob Pfützen auftreten (dabei möglicherweise Wände / Mauerwerk beschädigen). Es ist eine grobe Annäherung, dass das System nicht katastrophal ausfallen wird. Ein Entwicklungsprozess kann sein: "Build" bestanden? => "Rauchtest" bestanden? => "Abnahmetest" wurde an QA-Team zur detaillierten Prüfung übergeben =>.
Cristian Diaconescu

4
Ich glaube, Sie haben einen Fehler gemacht, als Sie sagten, dass ein "Regressionstest" wirklich eine Abkürzung für "Nicht-Regressionstest" ist? Ich bin skeptisch, zum Teil, weil das einfach nicht intuitiv und verwirrend ist (obwohl es viele Begriffe gibt), aber auch Wikipedia hat zwei separate Artikel zu Regressionstests und Nicht-Regressionstests. In dem Artikel über Regressionstests heißt es sogar: Im Gegensatz zu Nicht-Regressionstests ... mit denen überprüft werden soll, ob die Änderung nach Einführung oder Aktualisierung einer bestimmten Softwareanwendung den beabsichtigten Effekt hatte.
Brian C

2
@ddaa Sanity-Tests und Rauchtests sind nicht dasselbe. Sanity-Tests werden durchgeführt, nachdem der Build den Smoke-Test abgeschlossen hat und vom QA-Team für weitere Tests akzeptiert wurde. Sanity-Tests überprüfen die wichtigsten Funktionen mit genaueren Details.
Bharat

105
  • Unit Test : Ein automatischer Test zum Testen der internen Funktionsweise einer Klasse. Es sollte ein eigenständiger Test sein, der sich nicht auf andere Ressourcen bezieht.
  • Integrationstest : Ein automatischer Test, der in einer Umgebung durchgeführt wird, ähnlich wie Unit-Tests, jedoch mit externen Ressourcen (Datenbank, Festplattenzugriff).
  • Regressionstest : Nachdem Sie neue Funktionen oder Fehlerbehebungen implementiert haben, testen Sie erneut Szenarien, die in der Vergangenheit funktioniert haben. Hier behandeln Sie die Möglichkeit, dass Ihre neuen Funktionen vorhandene Funktionen beschädigen.
  • Rauchtest : Erste Tests, anhand derer Tester schließen können, ob sie den Test fortsetzen werden.

2
Die Definition des Regressionstests ist nicht genau so, wie sie ist. @ddaa definiert es richtig.
Robert Koritnik

Die Definition des Integrationstests ist definitiv unscharf. In der Antwort hier zum Beispiel wird stackoverflow.com/a/4904533/32453 eher als Testen mehrerer Interaktionen Ihres Codes definiert, wobei nicht unbedingt eine echte Datenbank (externe Ressource) erforderlich ist ... obwohl einige Leute dies so definieren, wie Sie es beschrieben haben ... ahh Terminologie. (Ich bevorzuge etwas die frühere Definition, FWIW, die mehrere Interaktionen testet.)
Rogerdpack


Das beantwortet den Titel, aber nicht den über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests .
Peter Mortensen

90

Jeder hat leicht unterschiedliche Definitionen und es gibt oft Grauzonen. Jedoch:

  • Unit Test: Funktioniert das ein bisschen (so isoliert wie möglich)?
  • Integrationstest: Arbeiten diese zwei (oder mehr) Komponenten zusammen?
  • Rauchtest: Hängt dieses ganze System (so nah wie möglich an einem Produktionssystem) einigermaßen gut zusammen? (dh sind wir ziemlich sicher, dass es kein schwarzes Loch schafft?)
  • Regressionstest: Haben wir versehentlich Fehler behoben, die wir zuvor behoben hatten?

Wie platzieren Sie Ihre Integrationstests in Bezug auf Unit-Tests? Wenn myprj sich das Hauptprojektverzeichnis befindet und mypkgsich unter befindet myprj, befinden sich die Komponententests unter myprj/tests/test_module1.pyund mein Paket unter myprj/mypkg. Dies funktioniert hervorragend für Unit-Tests, aber ich frage mich, ob es eine Konvention gibt, die ich befolgen sollte, wo sich die Integrationstests befinden sollten.
Alpha_989

1
@ alpha_989: Ich weiß nicht, wie die Konvention für Python aussehen würde. In .NET habe ich derzeit den Produktionscode, Unit-Tests und Integrationstests in drei separaten Projekten, Peers voneinander - aber es gibt auch viele Alternativen.
Jon Skeet

OK danke. Ich konnte eine andere Standardempfehlung finden als ein anderes Python-Projekt. aber ich werde dir folgen ..
alpha_989


@miladsalimi: Bitte fügen Sie keine nicht verwandten Kommentare hinzu, nur um die Aufmerksamkeit auf eine andere Frage zu lenken. Ich sehe, dass Sie das bei vier anderen Posts getan haben - bitte nicht.
Jon Skeet

51

Eine neue Testkategorie, auf die ich gerade aufmerksam geworden bin, ist der Kanarientest . Ein Kanarientest ist ein automatisierter, zerstörungsfreier Test, der regelmäßig in einer Live- Umgebung durchgeführt wird. Wenn er jemals fehlschlägt, ist etwas wirklich Schlimmes passiert.

Beispiele könnten sein:

  • Sind Daten, die nur in der Entwicklung / im Test verfügbar sein sollten, live erschienen ?
  • Wurde ein Hintergrundprozess nicht ausgeführt?
  • Kann sich ein Benutzer anmelden?

2
Kann die Site überhaupt gepingt werden? Passenderweise gibt es einen Dienst namens Binary Canary.
Dan Dascalescu

15
Der Name stammt aus dem Kohlebergbau: Nehmen Sie Kanarienvogel "down t'pit" mit. Wenn es schnupft, raus schnell. Kanarienvögel reagieren sehr empfindlich auf geringe Konzentrationen schädlicher Gase und würden absterben, bevor die Konzentrationen für den Menschen toxisch werden. Wenn ein kanarischer Test fehlschlägt, beheben Sie ihn schnell, da es nur eine Frage der Zeit ist, bis LIVE fehlschlägt.
Robino

1
Die Art und Weise, wie wir bei meinem Job kanarische Tests verwenden, besteht darin, zunächst einige Kunden auf eine neue Version umzustellen, anstatt alle auf einmal. Wenn die ersten Kunden überleben, können wir den Rest hinzufügen. Diese ersten sind die Kanarienvögel.
00prometheus

2
@ 00prometheus, das ist Beta-Test.
GregNash

1
@HarveyLin, obwohl ein kanarischer Test notwendigerweise ein Test ist, der eine Katastrophe verhindert, wird er natürlich nicht nur auf diese Weise verwendet. Als Faustregel gilt jedoch "Test, dass dies funktioniert, weil es kritisch ist". Natürlich hat jeder Test fast das gleiche Ziel, aber das Konzept ist sehr spezifisch. In Ihrem Fall würde ich nicht alle Tests als kanarische zählen.
Charles Roberto Canato

12

Antwort von einer der besten Websites für Softwaretesttechniken:

Arten von Softwaretests - vollständige Liste hier klicken

Geben Sie hier die Bildbeschreibung ein

Es ist eine ziemlich lange Beschreibung, und ich werde sie hier nicht einfügen. Sie kann jedoch für jemanden hilfreich sein, der alle Testtechniken kennenlernen möchte.


10

Komponententest: Überprüfen, ob eine bestimmte Komponente (dh eine Klasse) Funktionen wie geplant erstellt oder geändert hat. Dieser Test kann manuell oder automatisiert sein, bewegt sich jedoch nicht über die Grenze der Komponente hinaus.

Integrationstest: Überprüfen, ob das Zusammenspiel bestimmter Komponenten wie geplant funktioniert. Integrationstests können auf Einheits- oder Systemebene durchgeführt werden. Diese Tests können manuell oder automatisiert sein.

Regressionstest: Überprüfen, ob neue Fehler nicht in vorhandenen Code eingefügt werden. Diese Tests können manuell oder automatisiert sein.

Abhängig von Ihrer SDLC ( Wasserfall , RUP , Agilität usw.) können bestimmte Tests in „Phasen“ oder alle mehr oder weniger gleichzeitig durchgeführt werden. Beispielsweise können Unit-Tests auf Entwickler beschränkt sein, die den Code dann Testern für Integrations- und Regressionstests übergeben. Bei einem anderen Ansatz können Entwickler jedoch Unit-Tests sowie Integrations- und Regressionstests durchführen (unter Verwendung eines TDD- Ansatzes zusammen mit kontinuierlicher Integration und automatisierten Unit- und Regressionstests).

Der Werkzeugsatz hängt weitgehend von der Codebasis ab, es gibt jedoch viele Open Source-Werkzeuge für Unit-Tests (JUnit). HPs (Mercury) QTP oder Borlands Silk Test sind beide Tools für automatisierte Integrations- und Regressionstests.


Dies ist eine der wenigen Antworten, die etwas über Werkzeuge enthält.
Peter Mortensen

8

Unit-Test : Das Testen eines einzelnen Moduls oder einer unabhängigen Komponente in einer Anwendung wird als Unit-Test bezeichnet. Der Unit-Test wird vom Entwickler durchgeführt.

Integrationstest : Kombinieren Sie alle Module und testen Sie die Anwendung, um zu überprüfen, ob die Kommunikation und der Datenfluss zwischen den Modulen ordnungsgemäß funktionieren oder nicht. Diese Tests wurden auch von Entwicklern durchgeführt.

Rauchtest Bei einem Rauchtest prüfen sie die Anwendung flach und breit. Bei Rauchtests überprüfen sie die Hauptfunktionalität der Anwendung. Wenn die Anwendung ein Blockerproblem aufweist, werden sie dem Entwicklerteam gemeldet, und das Entwicklerteam wird das Problem beheben, den Fehler beheben und es dem Testteam zurückgeben. Jetzt überprüft das Testteam alle Module, um sicherzustellen, dass sich die in einem Modul vorgenommenen Änderungen auf das andere Modul auswirken oder nicht. Bei Rauchtests werden die Testfälle per Skript ausgeführt.

Regressionstests , bei denen dieselben Testfälle wiederholt ausgeführt werden, um sicherzustellen, dass das unveränderte Modul keinen Fehler verursacht. Regressionstests fallen unter Funktionstests


Das beantwortet den Titel, aber nicht den über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests. Es werden auch frühere Antworten wiederholt - es könnte durch Beantwortung der Frage nach Werkzeugen einzigartig gemacht werden.
Peter Mortensen

7

REGRESSIONSTESTS-

"Bei einem Regressionstest werden frühere Tests für die geänderte Software erneut ausgeführt, um sicherzustellen, dass die in der aktuellen Software vorgenommenen Änderungen die Funktionalität der vorhandenen Software nicht beeinträchtigen."


18
Woher zitierst du?
Daryl

4
Laut dieser Seite stammt dieses Zitat aus dem Wikipedia-Artikel "Softwaretests", obwohl es den Anschein hat, dass die Passage seit 2010
irgendwann

Wie auch immer, WP ist keine gültige Quelle. Quellen, auf die dort verwiesen wird, sind möglicherweise gültig. 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" einen Unterschied macht. Ich habe die Textausschnitte in den Ergebnislisten der Suche in Google Books für "regression test"und verglichen "non-regression test". Es ist das gleiche.
Rainald62

Das beantwortet (einen Teil) des Titels, aber nicht das über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests. Es werden auch frühere Antworten wiederholt - es könnte durch Beantwortung der Frage nach Werkzeugen einzigartig gemacht werden.
Peter Mortensen

7

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

Mike Cohn hat in seinem Buch „Erfolg mit Agilität“ die „Testpyramide“ entwickelt, um automatisierte Tests in Projekten anzugehen. Es gibt verschiedene Interpretationen dieses Modells. Das Modell erklärt, welche Art von automatisierten Tests erstellt werden müssen, wie schnell sie Feedback zur zu testenden Anwendung geben können und wer diese Tests schreibt. Grundsätzlich sind für jedes Projekt drei Ebenen automatisierter Tests erforderlich, die wie folgt lauten.

Komponententests - Diese testen die kleinste Komponente Ihrer Softwareanwendung. Dies könnte buchstäblich eine Funktion in einem Code sein, der einen Wert basierend auf einigen Eingaben berechnet. Diese Funktion ist Teil mehrerer anderer Funktionen der Hardware- / Software-Codebasis, aus der die Anwendung besteht.

Zum Beispiel - Nehmen wir eine webbasierte Taschenrechneranwendung. Die kleinsten Komponenten dieser Anwendung, die einem Unit-Test unterzogen werden müssen, können eine Funktion sein, die eine Addition ausführt, eine andere, die eine Subtraktion ausführt, und so weiter. Alle diese kleinen Funktionen zusammen bilden die Taschenrechneranwendung.

In der Vergangenheit schreibt der Entwickler diese Tests, da sie normalerweise in derselben Programmiersprache wie die Softwareanwendung geschrieben sind. Zu diesem Zweck werden Unit-Test-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 besteht darin, dass sie unter der Benutzeroberfläche sehr schnell ausgeführt werden und wir schnelles Feedback zur Anwendung erhalten können. Dies sollte mehr als 50% Ihrer automatisierten Tests umfassen.

API / Integrationstests - Diese testen verschiedene Komponenten des Softwaresystems zusammen. Die Komponenten können Testdatenbanken, APIs (Application Programming Interface), Tools und Dienste von Drittanbietern sowie die Anwendung umfassen.

Beispiel: In unserem obigen Taschenrechnerbeispiel verwendet die Webanwendung möglicherweise eine Datenbank zum Speichern von Werten, verwendet APIs, um einige serverseitige Überprüfungen durchzuführen, und verwendet möglicherweise ein Tool / einen Dienst eines Drittanbieters, um Ergebnisse in der Cloud zu veröffentlichen, um sie für verschiedene Zwecke verfügbar zu machen Plattformen.

In der Vergangenheit hat ein Entwickler oder eine technische Qualitätssicherung diese Tests mit verschiedenen Tools wie Postman, SoapUI, JMeter und anderen Tools wie Testim geschrieben.

Diese werden viel schneller ausgeführt als UI-Tests, da sie immer noch unter der Haube ausgeführt werden. Sie benötigen jedoch möglicherweise etwas mehr Zeit als Unit-Tests, da die Kommunikation zwischen verschiedenen unabhängigen Komponenten des Systems überprüft und eine nahtlose Integration sichergestellt werden muss. Dies sollte mehr als 30% der automatisierten Tests umfassen.

UI-Tests - Schließlich haben wir Tests, die die UI der Anwendung validieren. Diese Tests werden normalerweise geschrieben, um End-to-End-Flüsse durch die Anwendung zu testen.

Beispiel: In der Taschenrechneranwendung kann ein End-to-End-Ablauf darin bestehen, den Browser zu öffnen -> die URL der Taschenrechneranwendung einzugeben -> sich mit Benutzername / Passwort anzumelden -> die Taschenrechneranwendung zu öffnen -> einige Vorgänge am Taschenrechner auszuführen -> Überprüfen dieser Ergebnisse über die Benutzeroberfläche -> Abmelden von der Anwendung. Dies könnte ein End-to-End-Ablauf sein, der ein guter Kandidat für die Automatisierung der Benutzeroberfläche wäre.

In der Vergangenheit schreiben technische QS oder manuelle Tester UI-Tests. Sie verwenden Open Source-Frameworks wie Selenium oder UI-Testplattformen wie Testim, um die Tests zu erstellen, auszuführen und zu warten. Diese Tests geben mehr visuelles Feedback, da Sie anhand von Screenshots, Protokollen und Testberichten sehen können, wie die Tests ausgeführt werden und wie unterschiedlich die erwarteten und tatsächlichen Ergebnisse sind.

Die größte Einschränkung von UI-Tests besteht darin, dass sie im Vergleich zu Tests auf Einheiten- und API-Ebene relativ langsam sind. Es sollte also 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:

Rauchtests

Dies kann eine Kombination der oben genannten 3 Teststufen sein. Die Idee ist, es bei jedem Code-Check-in auszuführen und sicherzustellen, dass die kritischen Funktionen des Systems weiterhin wie erwartet funktionieren. nachdem die neuen Codeänderungen zusammengeführt wurden. Sie müssen normalerweise 5 bis 10 Minuten laufen, um eine schnellere Rückmeldung zu Fehlern zu erhalten

Regressionstests

Sie werden in der Regel mindestens einmal täglich ausgeführt und decken verschiedene Funktionen des Systems ab. Sie stellen sicher, dass die Anwendung weiterhin wie erwartet funktioniert. Sie sind detaillierter als die Rauchtests und decken mehr Szenarien der Anwendung ab, einschließlich der unkritischen.


Diese Antwort könnte verbessert werden, indem die Frage nach Tools für Rauch- oder Regressionstests beantwortet wird .
Peter Mortensen

5

Unit-Tests richten sich auf den kleinstmöglichen Teil der Implementierung. In Java bedeutet dies, dass Sie eine einzelne Klasse testen. Wenn die Klasse von anderen Klassen abhängt, werden diese gefälscht.

Wenn Ihr Test mehr als eine Klasse aufruft, handelt es sich um einen Integrationstest .

Die Ausführung vollständiger Testsuiten kann lange dauern. Daher führen viele Teams nach einer Änderung einige schnelle Tests durch, um signifikante Brüche zu erkennen. Beispielsweise haben Sie die URIs in wichtige Ressourcen aufgeteilt. Dies sind die Rauchtests .

Regressionstests werden für jeden Build ausgeführt und ermöglichen es Ihnen, effektiv umzugestalten, indem Sie abfangen, was Sie brechen. Jede Art von Test kann ein Regressionstest sein, aber ich finde, dass Unit-Tests am hilfreichsten sind, um die Fehlerquelle zu finden.


Das beantwortet den Titel, aber nicht den über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests. Es werden auch frühere Antworten wiederholt - es könnte durch Beantwortung der Frage nach Werkzeugen einzigartig gemacht werden.
Peter Mortensen

4
  • Integrationstest: Integrationstest ist das Integrieren eines weiteren Elements
  • Rauchtest: Der Rauchtest wird auch als Build-Versionstest bezeichnet. Rauchtest ist der erste Testprozess, mit dem überprüft wird, ob die zu testende Software für weitere Tests bereit / stabil ist.
  • Regressionstests: Regressionstests sind wiederholte Tests. Ob neue Software in einem anderen Modul ausgeführt wird oder nicht.
  • Unit-Test: Es handelt sich um einen White-Box-Test. Nur Entwickler sind daran beteiligt

Das beantwortet den Titel, aber nicht den über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests. Es werden auch frühere Antworten wiederholt - es könnte durch Beantwortung der Frage nach Werkzeugen einzigartig gemacht werden.
Peter Mortensen

2

Unit-Tests: Entwickler führen diese nach der Entwicklung immer durch, um Probleme auf der Testseite zu ermitteln, bevor sie Anforderungen für die Qualitätssicherung vorbereiten.

Integrationstest: Dies bedeutet, dass der Tester die Überprüfung von Modul zu Submodul überprüfen muss, wenn einige Daten- / Funktionsausgaben an ein Modul an ein anderes Modul gesendet werden. Oder in Ihrem System, wenn Sie ein Tool eines Drittanbieters verwenden, das Ihre Systemdaten für die Integration verwendet.

Rauchtest: Der Tester wurde durchgeführt, um das System für Tests auf hoher Ebene zu verifizieren und den Show Stopper-Fehler herauszufinden, bevor Änderungen oder Code live gehen.

Regressionstests: Der Tester führte eine Regression zur Überprüfung der vorhandenen Funktionalität aufgrund von Änderungen durch, die im System für neue Erweiterungen oder Änderungen im System implementiert wurden.


Müssen wir den Test nicht erstellen, bevor wir die eigentliche Entwicklung durchführen können?
Vin Shahrdar

@ VinShahrdar, sprichst du über Unit-Tests?
Krunal

Ja. Normalerweise erstelle ich meine Komponententests, bevor ich Produktionscode schreibe. So solltest du es machen, richtig?
Vin Shahrdar

1
Ja. Aber Unit-Tests werden auch vor der Qualitätssicherung durchgeführt, mit der der Entwickler konfrontiert ist. Vor der Bereitstellung von Code auf dem QA-Server führen
Entwickler

2

Unit Testing

Unit-Tests werden normalerweise von Entwicklern durchgeführt, während Tester teilweise in dieser Art von Tests entwickelt werden, bei denen die Tests Unit für Unit durchgeführt werden. In Java können mit JUnit- Testfällen auch getestet werden, ob der geschriebene Code perfekt gestaltet ist oder nicht.

Integrationstests:

Diese Art des Testens ist nach dem Komponententest möglich, wenn alle / einige Komponenten integriert sind. Durch diese Art von Tests wird sichergestellt, dass sich Komponenten bei der Integration gegenseitig auf ihre Arbeitsfähigkeiten oder -funktionen auswirken.

Rauchprüfung

Diese Art von Tests wird zuletzt durchgeführt, wenn das System erfolgreich integriert und betriebsbereit auf dem Produktionsserver ist.

Diese Art des Testens stellt sicher, dass alle wichtigen Funktionen von Anfang bis Ende einwandfrei funktionieren und das System für die Bereitstellung auf dem Produktionsserver bereit ist.

Regressionstests

Diese Art des Testens ist wichtig, um zu testen, ob keine unbeabsichtigten / unerwünschten Fehler im System vorhanden sind, wenn der Entwickler einige Probleme behoben hat. Diese Tests stellen auch sicher, dass alle Fehler erfolgreich behoben wurden und daher keine weiteren Probleme auftreten.


Das beantwortet den Titel, aber nicht den über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests. Es werden auch frühere Antworten wiederholt - es könnte durch Beantwortung der Frage nach Werkzeugen einzigartig gemacht werden.
Peter Mortensen

2

Rauch- und Gesundheitstests werden beide nach einem Software-Build durchgeführt, um festzustellen, ob mit dem Testen begonnen werden soll. Vernunft kann nach Rauchprüfung ausgeführt werden oder nicht. Sie können einzeln oder gleichzeitig ausgeführt werden - die Vernunft erfolgt unmittelbar nach dem Rauchen.

Da die Prüfung der geistigen Gesundheit gründlicher ist und mehr Zeit in Anspruch nimmt, lohnt es sich in den meisten Fällen, automatisiert zu werden.

Die Rauchprüfung dauert in der Regel nicht länger als 5 bis 30 Minuten. Es ist allgemeiner: Es überprüft eine kleine Anzahl von Kernfunktionen des gesamten Systems, um sicherzustellen, dass die Stabilität der Software für weitere Tests gut genug ist und dass keine Probleme vorliegen, die den Lauf der geplanten Testfälle blockieren.

Sanity-Tests sind detaillierter als Rauch und können je nach Umfang des Neubaus zwischen 15 Minuten und einem ganzen Tag dauern. Es handelt sich um eine speziellere Art von Abnahmetests, die nach Fortschreiten oder erneuten Tests durchgeführt werden. Es überprüft die Kernfunktionen bestimmter neuer Funktionen und / oder Fehlerkorrekturen zusammen mit einigen eng verwandten Funktionen, um zu überprüfen, ob sie hinsichtlich der erforderlichen Betriebslogik funktionieren, bevor Regressionstests in größerem Maßstab ausgeführt werden können.


Dies führt etwas aus, aber nicht über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests . Es könnte durch Beantwortung der Frage nach Werkzeugen einzigartig gemacht werden.
Peter Mortensen

1

Es gibt bereits einige gute Antworten, aber ich möchte sie weiter verfeinern:

Unit-Tests sind hier die einzige Form von White-Box-Tests. Die anderen sind Black-Box-Tests. White-Box-Tests bedeuten, dass Sie die Eingabe kennen. Sie kennen das Innenleben des Mechanismus und können ihn überprüfen, und Sie kennen die Ausgabe. Beim Black-Box-Test wissen Sie nur, was die Eingabe ist und wie die Ausgabe sein sollte.

Unit-Tests sind hier also eindeutig die einzigen White-Box-Tests.

  • Unit-Test testet bestimmte Codeteile. Normalerweise Methoden.
  • Integrationstests testen, ob sich Ihre neue Feature-Software in alles andere integrieren lässt.
  • Regressionstests. Dies ist ein Test, der durchgeführt wird, um sicherzustellen, dass Sie nichts kaputt gemacht haben. Alles, was früher funktionierte, sollte noch funktionieren.
  • Rauchtests werden als Schnelltests durchgeführt, um sicherzustellen, dass alles in Ordnung ist, bevor Sie sich auf die intensiveren Tests einlassen.

5
Unit-Tests sind nicht unbedingt White-Box. Einige der besten Unit-Tests, die ich gesehen habe, sind im Wesentlichen Beispiele aus den Anforderungen, in denen die erwarteten Ergebnisse unabhängig von Implementierungskonzepten angegeben werden.
joel.neely

1
Darüber hinaus sind Ihre Komponententests in Ihren Regressionstests enthalten, daher sind Regressionstests weder White- noch Black-Box-Tests. Ich würde sogar sagen, dass selbst Integrations- und Rauchtests entweder White- oder Blackbox-Tests sein können.
Lieven Keersmaekers

1
Dem müsste ich nicht zustimmen. Das Testen einer Entwurfsmusterimplementierung ist eine Form des Integrationstests und ein White-Box-Test.
Hazok

Das beantwortet den Titel, aber nicht den über Werkzeuge für die letzten beiden Arten von Tests, für Rauchtests oder Regressionstests . Es werden auch frühere Antworten wiederholt - es könnte durch Beantwortung der Frage nach Werkzeugen einzigartig gemacht werden.
Peter Mortensen

1

Rauchtests wurden hier bereits erklärt und sind einfach. Regressionstests fallen unter Integrationstests.

Automatisierte Tests können in nur zwei unterteilt werden.

Unit-Tests und Integrationstests (das ist alles, was zählt)

Ich würde den Ausdruck "langer Test" (LT) für alle Tests wie Integrationstests, Funktionstests, Regressionstests, UI-Tests usw. und Unit-Tests als "kurzen Test" bezeichnen.

Ein LT-Beispiel könnte sein, automatisch eine Webseite zu laden, sich beim Konto anzumelden und ein Buch zu kaufen. Wenn der Test bestanden wird, ist es wahrscheinlicher, dass er auf der Live-Site auf die gleiche Weise ausgeführt wird (daher die Referenz „Besserer Schlaf“). Long = Abstand zwischen Webseite (Start) und Datenbank (Ende).

Und dies ist ein großartiger Artikel, in dem die Vorteile von Integrationstests (langer Test) gegenüber Unit-Tests erläutert werden .


1

Regressionstest - Ist eine Art von Software - Tests , wo wir versuchen , Abdeckung oder die Fehler überprüfen um fix . Die Funktionalität rund um die Fehlerbehebung sollte aufgrund der bereitgestellten Korrektur nicht geändert werden. In einem solchen Prozess gefundene Probleme werden als Regressionsprobleme bezeichnet .

Rauchtest: Wird eine Art Test durchgeführt, um zu entscheiden, ob der Build / die Software für weitere QS-Tests akzeptiert werden soll.

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.