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:
Stellen Sie fest, dass (Softwareprodukte) bestimmte Anforderungen erfüllen (ich denke, seine Überprüfung)
Zeigen Sie, dass (Softwareprodukte) zweckmäßig sind (ich denke, das ist Validierung)
Fehler erkennen
Ich würde zustimmen, dass das Testen Verifizierung, Validierung und Fehlererkennung ist. Ist das korrekt?
testing
theory
verification
John V.
quelle
quelle
Antworten:
Ich denke du hast es genau richtig gemacht.
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 .
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.
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.
quelle
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).
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle