Unterschied zwischen Abnahmetest und Funktionstest?

147

Was ist der wirkliche Unterschied zwischen Abnahmetests und Funktionstests?

Was sind die Highlights oder Ziele von jedem? Überall, wo ich lese, sind sie sich mehrdeutig ähnlich.

JavaRocky
quelle

Antworten:

172

In meiner Welt verwenden wir die Begriffe wie folgt:

Funktionstests : Dies ist eine Verifizierungsaktivität . Haben wir ein richtig funktionierendes Produkt gebaut? Entspricht die Software den Geschäftsanforderungen?

Für diese Art von Tests haben wir Testfälle, die alle möglichen Szenarien abdecken, die wir uns vorstellen können, auch wenn es unwahrscheinlich ist, dass dieses Szenario "in der realen Welt" existiert. Bei dieser Art von Tests streben wir eine maximale Codeabdeckung an. Wir verwenden jede Testumgebung, die wir zu diesem Zeitpunkt nutzen können. Es muss kein "Produktions" -Kaliber sein, solange es verwendbar ist.

Abnahmetest : Dies ist eine Validierungsaktivität . Haben wir das Richtige gebaut? Braucht der Kunde das wirklich?

Dies erfolgt in der Regel in Zusammenarbeit mit dem Kunden oder durch einen internen Kundenvertreter (Product Owner). Für diese Art von Tests verwenden wir Testfälle, die die typischen Szenarien abdecken, unter denen wir die Verwendung der Software erwarten. Dieser Test muss in einer "produktionsähnlichen" Umgebung auf Hardware durchgeführt werden, die der von einem Kunden verwendeten Hardware entspricht oder dieser entspricht. Dies ist, wenn wir unsere "Fähigkeiten" testen:

  • Zuverlässigkeit, Verfügbarkeit : Validiert durch einen Stresstest.

  • Skalierbarkeit : Validiert durch einen Belastungstest.

  • Benutzerfreundlichkeit : Validiert durch Inspektion und Demonstration gegenüber dem Kunden. Ist die Benutzeroberfläche nach ihren Wünschen konfiguriert? Haben wir das Kundenbranding an den richtigen Stellen platziert? Haben wir alle Felder / Bildschirme, nach denen sie gefragt haben?

  • Sicherheit (auch bekannt als Sicherheit, nur um zu passen) : Validiert durch Demonstration. Manchmal beauftragt ein Kunde eine externe Firma mit der Durchführung eines Sicherheitsaudits und / oder Intrusionstests.

  • Wartbarkeit : Validiert durch Demonstration, wie wir Software-Updates / Patches bereitstellen.

  • Konfigurierbarkeit : Validiert durch Demonstration, wie der Kunde das System an seine Bedürfnisse anpassen kann.

Dies ist keineswegs Standard, und ich glaube nicht, dass es eine "Standard" -Definition gibt, wie die widersprüchlichen Antworten hier zeigen. Das Wichtigste für Ihr Unternehmen ist, dass Sie diese Begriffe genau definieren und sich an sie halten.

Patrick Manschette
quelle
plus 1 für die nette Antwort und "aka, Securability, nur um zu passen" :). Lustige Sache :) SO Team hat nicht berücksichtigt, dass in der realen Welt jemand das + -Zeichen durch das reale Wort ersetzen kann, wie ich es getan habe. Sie erlauben also nicht, +1 als erstes Wort im Kommentar einzugeben, aber sie erlauben "plus 1" :). Also funktionell konnten sie dies nicht richtig testen :). Myabe sie haben gerade Akzeptanztests versucht :)
Geo C.
71

Ich mag die Antwort von Patrick Cuff. Was ich hinzufügen möchte, ist die Unterscheidung zwischen einem Testlevel und einem Testtyp, der für mich ein Augenöffner war.

Teststufen

Die Teststufe ist am Beispiel des V-Modells leicht zu erklären : Geben Sie hier die Bildbeschreibung ein Jede Teststufe hat ihre entsprechende Entwicklungsstufe . Es hat eine typische Zeitcharakteristik, sie werden in einer bestimmten Phase des Entwicklungslebenszyklus ausgeführt.

  1. Komponenten- / Einheitentest => Überprüfung des detaillierten Designs
  2. Komponenten- / Einheitenintegrationstest => Überprüfung des globalen Designs
  3. Systemtests => Überprüfung der Systemanforderungen
  4. Systemintegrationstest => Überprüfung der Systemanforderungen
  5. Abnahmetest => Validierung der Benutzeranforderungen

Testtypen

Ein Testtyp ist ein Merkmal, er konzentriert sich auf ein bestimmtes Testziel. Testtypen betonen Ihre Qualitätsaspekte, die auch als technische oder nicht funktionale Aspekte bezeichnet werden. Testtypen können auf jeder Testebene ausgeführt werden . Ich verwende gerne die in ISO / IEC 25010: 2011 genannten Qualitätsmerkmale als Testtypen .

  1. Funktionsprüfung
  2. Zuverlässigkeitsprüfung
  3. Leistungstest
  4. Funktionsfähigkeitsprüfung
  5. Sicherheitstests
  6. Kompatibilitätstests
  7. Wartbarkeitstests
  8. Übertragbarkeitstest

Um es zu vervollständigen. Es gibt auch so genannte Regressionstests . Dies ist eine zusätzliche Klassifizierung neben Teststufe und Testtyp . Ein Regressionstest ist ein Test, den Sie wiederholen möchten, da er etwas Kritisches in Ihrem Produkt berührt. Es ist in der Tat eine Teilmenge von Tests, die Sie für jede Teststufe definiert haben . Wenn Ihr Produkt einen kleinen Fehler behebt, hat man nicht immer die Zeit, alle Tests zu wiederholen. Regressionstests sind eine Antwort darauf.

Nick V.
quelle
2
Dies ist die beste Antwort auf diese Frage und "Unterscheidung zwischen einem
Testlevel
23

Der Unterschied besteht zwischen dem Testen des Problems und der Lösung. Software ist eine Lösung für ein Problem, beide können getestet werden.

Der Funktionstest bestätigt, dass die Software eine Funktion innerhalb der Grenzen der Problemlösung ausführt. Dies ist ein wesentlicher Bestandteil der Softwareentwicklung, vergleichbar mit den Tests, die an Massenprodukten durchgeführt werden, bevor diese das Werk verlassen. Ein Funktionstest überprüft, ob das Produkt tatsächlich so funktioniert, wie Sie (der Entwickler) glauben.

Abnahmetests bestätigen, dass das Produkt das zu lösende Problem tatsächlich löst. Dies kann am besten vom Benutzer (Kunden) durchgeführt werden, beispielsweise durch Ausführen seiner Aufgaben, bei denen die Software hilft. Wenn die Software diesen Test in der realen Welt besteht, wird akzeptiert, dass die vorherige Lösung ersetzt wird. Dieser Abnahmetest kann manchmal nur in der Produktion ordnungsgemäß durchgeführt werden, insbesondere wenn Sie anonyme Kunden haben (z. B. eine Website). Daher wird eine neue Funktion erst nach Tagen oder Wochen der Nutzung akzeptiert.

Funktionstests - Testen Sie das Produkt und stellen Sie sicher, dass es die von Ihnen entworfenen oder gebauten Eigenschaften aufweist (Funktionen, Geschwindigkeit, Fehler, Konsistenz usw.).

Abnahmetests - Testen Sie das Produkt in seinem Kontext. Dies erfordert (Simulation) menschlicher Interaktion. Testen Sie, ob es den gewünschten Effekt auf die ursprünglichen Probleme hat.

Machiel
quelle
9

Die Antwort ist Meinung. Ich habe in vielen Projekten gearbeitet und war Testmanager und Issuemanager. Alle Rollen und Beschreibungen in verschiedenen Büchern sind unterschiedlich. Hier ist meine Variation:

Funktionstests: Nehmen Sie die Geschäftsanforderungen und testen Sie alles gut und gründlich unter funktionalen Gesichtspunkten.

Abnahmeprüfung: Der "zahlende" Kunde führt die von ihm gewünschten Prüfungen durch, damit er das gelieferte Produkt annehmen kann. Es hängt vom Kunden ab, aber normalerweise sind die Tests nicht so gründlich wie die Funktionstests, insbesondere wenn es sich um ein internes Projekt handelt, da die Stakeholder die in früheren Testphasen durchgeführten Testergebnisse überprüfen und ihnen vertrauen.

Wie gesagt, das ist mein Standpunkt und meine Erfahrung. Die Funktionsprüfung ist systematisch und die Abnahmeprüfung ist eher die Geschäftsabteilung, die die Sache testet.

hol
quelle
Ich mag diese Antwort :) Sie sind so ziemlich das Gleiche.
Anbanm
1
UAT wird ja letztendlich vom "zahlenden" Kunden durchgeführt. Es wird jedoch meistens zuerst von einer QS-Person durchgeführt, die "gut" darin ist, das System zu testen und zu "versuchen", es zu brechen und nach all den "kleinen" Dingen zu suchen, bevor der "zahlende" Kunde es in die Hände bekommt. Die Selen-Automatisierung zum Wiederholen langwieriger Dinge kann auch zusammen mit echten UAT-Tests durch einen QS-Tester verwendet werden, jedoch niemals, um echte Tests zu wiederholen, um alle erwarteten Funktionen mit allen erwarteten Browsern zu testen. UAT ist ziemlich selbsterklärend. Ich denke, die meisten Beschreibungen der Funktionstests scheinen Roboter und Wörterbuch zu sein.
Tom Stickel
Wie gesagt, dies ist meine Erfahrung, wie die Begriffe interpretiert werden.
hol
Das ist gut. Als ich diese vage Definition bemerkte ... musste ich nur kommentieren: "Funktionstests: Nehmen Sie die Geschäftsanforderungen und testen Sie alles gut und gründlich unter funktionalen Gesichtspunkten."
Tom Stickel
Haha, ja, jetzt verstehe ich dich. Okay, das ist etwas, worüber man ein ganzes Buch schreiben könnte. Ich wollte in dem Moment, in dem ich es schrieb, nicht zu sehr darauf eingehen.
hol
8
  1. Publikum. Funktionstests sollen sicherstellen, dass Mitglieder des Teams, das die Software erstellt, das tun, was sie erwarten. Abnahmetests sollen dem Verbraucher versichern, dass sie seine Bedürfnisse erfüllen.

  2. Umfang. Funktionstests testen jeweils nur die Funktionalität einer Komponente. Abnahmetests decken alle Aspekte des Produkts ab, die für den Verbraucher wichtig genug sind, um vor dem Akzeptieren der Software getestet zu werden (dh alles, was die Zeit oder das Geld wert ist, die zum Testen erforderlich sind, um die Akzeptanz zu bestimmen).

Software kann Funktionstests, Integrationstests und Systemtests bestehen. Nur um Abnahmetests nicht zu bestehen, wenn der Kunde feststellt, dass die Funktionen einfach nicht seinen Anforderungen entsprechen. Dies würde normalerweise bedeuten, dass jemand die Spezifikation vermasselt hat. Software kann auch einige Funktionstests nicht bestehen, besteht jedoch die Abnahmetests, da der Kunde bereit ist, einige Funktionsfehler zu beheben, solange die Software die Kernaufgaben, die sie benötigt, akzeptabel gut erledigt (Beta-Software wird häufig von einer Untergruppe von Benutzern zuvor akzeptiert ist voll funktionsfähig).

Ethel Evans
quelle
2

Funktionstests: Anwendung von Testdaten, die aus den angegebenen funktionalen Anforderungen abgeleitet wurden, ohne Rücksicht auf die endgültige Programmstruktur. Wird auch als Black-Box-Test bezeichnet.

Abnahmetests: Formale Tests, die durchgeführt werden, um festzustellen, ob ein System seine Akzeptanzkriterien erfüllt oder nicht - ermöglichen es einem Endbenutzer, zu bestimmen, ob das System akzeptiert werden soll oder nicht.

Prashant Vadher
quelle
1

Meiner Ansicht nach besteht der Hauptunterschied darin, wer sagt, ob die Tests erfolgreich sind oder nicht.

Ein Funktionstest testet, ob das System vordefinierte Anforderungen erfüllt. Es wird von den für die Entwicklung des Systems verantwortlichen Personen durchgeführt und überprüft.

Ein Abnahmetest wird von den Benutzern abgemeldet. Im Idealfall sagen die Benutzer, was sie testen möchten, aber in der Praxis ist es wahrscheinlich ein Sonnenuntergang eines Funktionstests, da die Benutzer nicht genügend Zeit investieren. Beachten Sie, dass diese Ansicht von den Geschäftsbenutzern stammt, die ich mit anderen Benutzergruppen beschäftige, z. B. Luftfahrt und andere sicherheitskritische Elemente, die diesen Unterschied möglicherweise nicht aufweisen.

mmmmmm
quelle
Durch Abnahmetests wird festgestellt, ob ein System die Abnahmekriterien eines bestimmten Anwendungsfalls oder aller denkbaren Anwendungsfälle erfüllt. Es wird normalerweise von einem Experten durchgeführt, um festzustellen, ob das System akzeptabel ist oder nicht. In der Luftfahrt ist ein Testpilot ein Flieger, der neue Flugzeuge durch Schleudern bestimmter Manöver testet. Top-Piloten, Navigatoren und Ingenieure führen Flugtests durch und liefern am Ende der Testmissionen Bewertungs- und Zertifizierungsdaten.
jjpcondor
1

Abnahmetests :

... ist ein Black-Box-Test, der an einem System (z. B. Software, viele hergestellte mechanische Teile oder Chargen chemischer Produkte) vor seiner Auslieferung durchgeführt wird.

Dies sagt jedoch weiter:

Es wird auch als Funktionstest, Black-Box-Test, Freigabeabnahme, QS-Test, Anwendungstest, Konfidenztest, Abschlusstest, Validierungstest oder Werksabnahmetest bezeichnet

mit einem "Zitat benötigt" Zeichen.

Funktionstests (die tatsächlich zu Systemtests umleiten):

auf einem vollständigen, integrierten System durchgeführt, um die Übereinstimmung des Systems mit den festgelegten Anforderungen zu bewerten. Systemtests fallen in den Bereich der Black-Box-Tests und sollten daher keine Kenntnisse über das innere Design des Codes oder der Logik erfordern.

Nach dieser Definition sind sie also ziemlich dasselbe.

Nach meiner Erfahrung sind Abnahmetests normalerweise eine Teilmenge der Funktionstests und werden vom Kunden im formellen Abmeldeprozess verwendet, während Funktions- / Systemtests von der Entwickler- / QS-Abteilung durchgeführt werden.

ChrisF
quelle
0

Die Beziehung zwischen beiden: Der Abnahmetest umfasst normalerweise Funktionstests, kann jedoch zusätzliche Tests umfassen. Überprüfen Sie beispielsweise die Kennzeichnungs- / Dokumentationsanforderungen.

Funktionstests werden durchgeführt, wenn das zu testende Produkt in eine Testumgebung gebracht wird, die (im Rahmen des Tests) eine Vielzahl von Stimulationen hervorrufen kann, die die Zielumgebung normalerweise oder sogar darüber hinaus erzeugt, während die Reaktion des zu testenden Geräts untersucht wird.

Für ein physisches Produkt (keine Software) gibt es zwei Hauptarten von Abnahmetests : Designtests und Herstellungstests. Bei Designtests wird normalerweise eine große Anzahl von Produktmustern verwendet, die den Herstellungstest bestanden haben. Verschiedene Verbraucher können das Design auf unterschiedliche Weise testen.

Abnahmetests werden als Verifizierung bezeichnet, wenn das Design anhand der Produktspezifikation getestet wird, und Abnahmetests werden als Validierung bezeichnet, wenn das Produkt in der realen Umgebung des Verbrauchers platziert wird.

ali65
quelle
0

Abnahmetests sind nur vom Kunden durchgeführte Tests und umfassen andere Arten von Tests:

  • Funktionstest: "Diese Taste funktioniert nicht"
  • Nichtfunktionale Tests: "Diese Seite funktioniert, ist aber zu langsam."

Für Funktionstests im Vergleich zu nichtfunktionalen Tests (deren Subtypen) - siehe meine Antwort auf diese SO-Frage .

Andrejs
quelle
-1

Sie sind das gleiche.

Abnahmetests werden auf dem fertigen System so identisch wie möglich mit der tatsächlichen Produktions- / Bereitstellungsumgebung durchgeführt, bevor das System bereitgestellt oder bereitgestellt wird.

Sie können Abnahmetests automatisiert oder manuell durchführen.

jmz
quelle
1
Während die Automatisierung mit Selen und Watin (oder Watir) usw. eine sehr wertvolle erste Verteidigungslinie darstellt, gibt es nichts Schöneres als eine geschulte QS-Person, die darauf aus ist, das System zu brechen. Die Automatisierung ist großartig, aber mit der modernen Entwicklung von AJAX und Javascript-Framework und das Ändern der Ausgabe auf einer Seite, um alles zu automatisieren, ist ein Alptraum, der
Tom Stickel