Ist Verifizierung und Validierung Teil des Testprozesses?

9

Basierend auf vielen Quellen glaube ich nicht, dass die einfache Definition, die das Ziel des Testens ist, darin besteht, so viele Fehler wie möglich zu finden - wir testen, um sicherzustellen, dass es funktioniert oder nicht. ZB folgen die Ziele des Testens von ISTQB:

  1. Stellen Sie fest, dass (Softwareprodukte) bestimmte Anforderungen erfüllen (ich denke, seine Überprüfung)

  2. Zeigen Sie, dass (Softwareprodukte) zweckmäßig sind (ich denke, das ist Validierung)

  3. Fehler erkennen

    Ich würde zustimmen, dass das Testen Verifizierung, Validierung und Fehlererkennung ist. Ist das korrekt?

John V.
quelle
1
Das erste, was in den Testbüchern steht, ist, dass "Testen nicht der Prozess ist, um zu zeigen, dass die Software korrekt funktioniert. Es ist der Prozess, Fehler zu finden". Und dann bringen die Bücher zahlreiche Gründe mit, solche Tests zu definieren. Die Überprüfung ist also eher der Prozess, bei dem festgestellt wird, wo die Software die Anforderungen nicht erfüllt.
SuperM
Die Überprüfung stellt laut Definition sicher, dass die Anforderungen erfüllt wurden. Tatsächlich definieren Bücher das Testen als einen Prozess zum Messen der Qualität von Software. Wenn Sie also überprüfen, ob das System funktioniert (positiv), um festzustellen, ob es funktioniert, werden keine Tests durchgeführt, da Sie nicht nach Fehlern suchen. :) Auf der Wikipedia: Testtechniken umfassen, ohne darauf beschränkt zu sein, den Prozess der Ausführung eines Programms oder einer Anwendung mit der Absicht, Softwarefehler zu finden
John V
Ich denke, der beste Weg, um die Grenzen des Worttests zu identifizieren, besteht darin, eine Hypothese zu testen. In diesem Fall versuchen Sie zu testen, dass die Hypothese keine Irrtümer oder Ungenauigkeiten enthält. Dies ist nicht dasselbe wie die Überprüfung ihrer Nützlichkeit Bei der Überprüfung der Anwendbarkeit handelt es sich lediglich um die Identifizierung des gesamten Verhaltensbereichs, unabhängig vom Zweck.
Jimmy Hoffa
Haben Sie einen "nette Frage" Bonus :)
Andrew

Antworten:

1

Ich denke du hast es genau richtig gemacht.

  1. Verifikation und Validierung sind verschiedene Dinge und in der Tat ziemlich gut definiert. Obwohl mir das Dokument nicht sehr gefällt, ist ISO 9000ff für die Qualitätssicherung von hoher Relevanz und definiert Verifizierung als Vergleich eines Produkts mit seinen Anforderungen und Validierung als Überprüfung, ob es tatsächlich den Anforderungen des Kunden / Benutzers entspricht, und wir alle wissen, dass dies unterschiedlich sein kann .

  2. Beides kann durch Testen erfolgen. Die Überprüfung würde zu Tests führen, die für Formularanforderungen generiert wurden. Die Validierung führt zu Tests, die von Tests ohne direkten Bezug zu den Anforderungen durchgeführt werden. Ich denke, dies wird oft als exploratives Testen bezeichnet. Offensichtlich muss dies von Personen durchgeführt werden, die die tatsächlichen Bedürfnisse der Benutzer wirklich verstehen. Daher sind Alpha- und Betatests durch echte Benutzer offensichtliche Optionen.

  3. Auf theoretischer Basis könnte man argumentieren, dass alles, was von den ersten beiden abgedeckt wird, kein Fehler ist und es daher keinen Sinn macht, Fehler als separates Ziel zu finden. Aber ich denke, es gibt Dinge, die Sie nicht wirklich überprüfen oder validieren können. Zum Beispiel Sicherheit: Wie können Sie überprüfen oder überprüfen, ob ein Softwaresystem vor Angriffen geschützt ist? Stattdessen versuchen Sie, Schwachstellen zu finden. Diese Suche überprüft oder validiert nichts, wenn Probleme nicht gefunden werden, findet jedoch Fehler, wenn sie erfolgreich ist.

Jens Schauder
quelle
Das Problem ist, dass viele Quellen erwähnen, dass die Überprüfung nur statisch und die Validierung dynamisch ist. Es ist sehr verwirrt. Was wäre dann ein Funktionstest? Ich würde sagen, seine dynamische Überprüfung ..
John V
1
Welche Quellen verwenden diese Definition von Verifikation und Validierung? Andererseits kenne ich keine klare und allgemein vereinbarte Definition von irgendetwas, das mit -test endet. Ich weiß also nicht genau, was ein Funktionstest für Sie ist.
Jens Schauder
Nun, z. B. beschränkt ISO 12207 das Testen nur als Validierungsprozess.
John V
3

Aus Wikipedia: "... Mit anderen Worten, die Validierung stellt sicher, dass das Produkt tatsächlich den Anforderungen des Benutzers entspricht und dass die Spezifikationen überhaupt korrekt waren , während die Überprüfung sicherstellt, dass das Produkt gemäß den Anforderungen und Designspezifikationen hergestellt wurde Durch die Validierung wird sichergestellt, dass "Sie das Richtige gebaut haben". Durch die Überprüfung wird sichergestellt, dass "Sie das Richtige gebaut haben". Durch die Validierung wird bestätigt, dass das bereitgestellte Produkt den beabsichtigten Verwendungszweck erfüllt. "

Sie können die Benutzeranforderungen nicht testen und anhand des Codes überprüfen, ob die Spezifikationen korrekt waren. Die Validierung erfolgt also nicht durch Testen.

Die Überprüfung setzt voraus, dass Ihre Anforderungen und Ihr Design korrekt sind, sodass Sie es testen können, indem Sie Code schreiben (Testen).

Mert Akcakaya
quelle
Ich würde nicht zustimmen - Testen ist nicht nur Testen von Code, es gibt auch Dokumentationstests usw. Übrigens, Wikipedia sagt auch: Softwaretests können als der Prozess der Validierung und Überprüfung eines Softwareprogramms / einer Anwendung / eines Produkts angegeben werden Programm durch seine Ausführung und Untersuchung, ob dies das ist, was der Benutzer wollte oder nicht.
John V
Eigentlich hast du recht. Der Testprozess umfasst auch das Akzeptieren von Tests, aber ich habe über Unit-, Integrations- und Systemtests gesprochen. Wenn wir über den gesamten Testprozess nachdenken, erfolgt die Überprüfung und Validierung durch Testen.
Mert Akcakaya
1

Für die reale Welt bedeutet Testen die Überprüfung und Validierung der Software, die den Anforderungen der Software entspricht (geschäftlich / funktional / nicht funktional). Ziel ist es festzustellen, ob die Software für den Zweck geeignet ist. Jedes Verhalten, das nicht den Anforderungen der Anwendung entspricht, ist ein Fehler, dessen Schweregrad abgewogen werden muss, bevor festgestellt werden kann, ob die Software für den Zweck geeignet ist.

Fehler mit niedrigem Schweregrad sind wahrscheinlich kein Hindernis für die Weitergabe der Software an einen Produktionsbetrieb. Bei einem hohen Schweregrad muss möglicherweise ein Fix erstellt werden. In der realen Welt weist jede Software Fehler auf, einige sind Codierungsprobleme und andere beruhen auf fehlenden Anforderungen - die möglicherweise nicht getestet werden, da Sie keine unbekannten Anforderungen testen können.

Adam f
quelle
1

Es gibt viele Definitionen für Verifizierung und Validierung. Viele Leute verwenden sogar das V & V-Tag, um beide in einer einzigen Aktivität zu gruppieren. Ziel ist es sicherzustellen, dass Software die richtigen Dinge macht und die Dinge richtig macht. Auf dieser Ebene ist es nicht unbedingt erforderlich, ob die Einhaltung der Anforderungen überprüft oder versucht wird, Fehler zu finden.

Testen ist eine von vielen Techniken zur Verifizierung und Validierung, nicht umgekehrt. Die Codeüberprüfung ist eine andere und die formale Überprüfung mit mathematischen Beweisen eine weitere.

Dennoch sollten Tests mit dem Ziel durchgeführt werden, Fehler zu finden, und nicht mit dem Ziel, die Einhaltung der Anforderungen zu überprüfen.

Der Hauptunterschied liegt im Kopf des Testers. Es ist weitaus einfacher, einen Testfall zu erstellen, der zeigt, dass die Software wie beabsichtigt funktioniert (Überprüfung der Konformität), als einen Testfall zu erstellen, der zeigt, dass Software fehlschlägt (Fehler finden).

Ein großartiger Tester ist begeistert davon, Software zu brechen und nicht auf sichere Weise zu trainieren.

Mouviciel
quelle
Danke, aber testen wir nicht auch, um zu zeigen, dass die Anforderungen erfüllt sind? Wir stellen sicher, dass die Software funktioniert (Spezifikationen erfüllen) und versuchen dann, Fehler zu finden. Es geht also nicht nur darum, Fehler zu finden. Ich erinnere mich an ein Buch, in dem es heißt, dass das Hauptziel des Testens darin besteht, die Qualität zu messen und nicht nach Fehlern zu suchen. Was Ihren ersten Punkt betrifft, so wird auch die Codeüberprüfung, der mathematische Beweis usw. getestet und als statisch bezeichnet.
John V
Im Gegensatz zu den Anforderungen liegen Mängel oder Mängel vor. Die Art des Jobs ist identisch. Es ist nur ein Unterschied in der Denkweise des Testers zur Verbesserung seiner Effizienz. Was meinen ersten Punkt betrifft, gibt es viele Definitionen aller Begriffe, die bei der Softwarevalidierung verwendet werden (und ein erster Schritt beim Beitritt zu einem Team besteht darin, den lokalen Dialekt in diesem Team zu erhalten), aber die Mehrheit der Menschen stimmt zu, dass das Testen nur eine Dynamik ist Technik. statisches Testen ist ein Oxymoron oder bezieht sich auf eine andere Technik, nicht weit von der Überprüfung entfernt, bei der der Code im Kopf des "Testers" und nicht von einem Computer ausgeführt wird.
Mouviciel
Mouviciel: Oxymoron? Ich glaube nicht, statisches Testen bedeutet, ohne Ausführung auf mögliche Fehler zu prüfen, was durchaus möglich ist (Anforderungsprobleme, Konstruktionsfehler ...). Es ist nicht dasselbe, Anforderungen zu überprüfen und auf Fehler zu prüfen: Sie sollten testen, ob ein Feld den Wert int32 enthalten kann. Das testet, dass es funktioniert. Dann können Sie versuchen, höhere Werte einzugeben, dh auf Fehler zu testen.
John V
1

Sehen wir uns das aus praktischer Sicht an. Zum Testen müssen Sie Testfälle definieren. In der Regel definieren Sie Testfälle entlang der angegebenen Anforderungen und sie sollten sowohl "Happy Day" -Fälle als auch "Edge Cases" abdecken - insbesondere letztere werden häufig mit der Absicht definiert, die Software zu beschädigen. Wenn einige Ihrer Tests fehlschlagen, werden Fehler angezeigt. Wenn Sie für jede Anforderung eine angemessene Anzahl von Testfällen haben und alle Tests bestanden haben, haben Sie möglicherweise nicht vollständig bewiesen, dass alle Anforderungen erfüllt sind, aber Sie haben die Wahrscheinlichkeit dafür verbessert und daher einige Überprüfungen durchgeführt.

Für diesen Teil der Frage kann das Auffinden von Fehlern und die Überprüfung nur zwei Seiten desselben Prozesses sein:

  • Tests schlagen fehl: Mängel festgestellt

  • Tests bestanden: Überprüfung durchgeführt (zumindest bis zu einem gewissen Grad, wenn Sie genügend und die richtigen Tests bereitstellen)

In Bezug auf die Validierung: Wie @Mert hervorhob, kann die Validierung durch Abnahmetests erfolgen, jedoch nicht durch andere Testformen. Daher führt das Testen im Allgemeinen zu keiner Validierung, nur wenn es von einigen potenziellen Benutzern als Abnahmetest durchgeführt wird.

Doc Brown
quelle
0

Es hängt alles von Ihrer Definition von "Verifikation" ab. Beispielsweise wird die formale Überprüfung normalerweise nicht von einem QS-Team durchgeführt, sondern liegt in der Verantwortung der Entwickler. Fast niemand führt aufgrund der damit verbundenen hohen Kosten (Wissenslücke und benötigte Ressourcen) eine formale Überprüfung durch.

Joeri Sebrechts
quelle
0

Softwaretests sind nicht mit QS identisch. Das hast du richtig erkannt. Das Testen von Software umfasst insgesamt viele Phasen (Rauch, Einheit, Regression, Integration, Benutzerakzeptanz usw.).

Daher ist es das Ziel der Qualitätssicherung (Qualitätssicherungsspezialist - vor Jahren auch als Tester bezeichnet) sicherzustellen, dass Software den Anforderungen entspricht. Es wird jedoch nicht nur getestet . Die Qualitätssicherung stellt sicher, dass geeignete Prozesse zur Durchführung der Qualitätsprüfung des betreffenden Produkts vorhanden sind oder zumindest in die Entwurfsphase des Projekts einbezogen werden.

Idealerweise erwarten Sie daher, dass Ihre Qualitätssicherung die Anwendung anhand der Anforderungen überprüft und nicht nur versucht, sie zu testen, indem Sie die Software beschädigen und Fehler finden.

Yusubov
quelle
QA testet NICHT nur. QA befasst sich mit der Qualität von Entwicklungsprozessen ..
John V
Die Qualitätssicherung überprüft die Anwendung anhand der Anforderungen.
Yusubov