Arten von Softwaretests

Arten von Softwaretests
Die Strategie zum Testen jedes Softwareprodukts ist unterschiedlich. Wir müssen die Geschäftsziele und/oder den Zweck der Software berücksichtigen, bevor wir die Softwareteststrategie entwickeln. Zum Beispiel hat Software, die in einem Flugzeug, das die Motor- und Flugsicherheit steuert. Für die Flugzeugsoftware ist es sehr wichtig, dass absolut alles definiert und verifiziert ist. Schnelle neue Merkmalentwicklung und -änderung haben keine Priorität. Für die virale Videoplattform braucht das Geschäft Innovation, Geschwindigkeit und schnelle Verbesserung, die viel wichtiger sind als die garantierte Validierung des Systems. Jeder Kontext ist unterschiedlich und es gibt viele verschiedene Praktiken für Softwaretests. Der Aufbau der Teststrategie besteht aus einer Mischung der geeigneten Testtypen aus der Liste der möglichen Testtypen, die nachstehend kategorisiert sind. In diesem Artikel werden wir verschiedene Arten von Softwaretests auflisten.

Unit -Tests

Unit -Tests werden unabhängig voneinander auf eine individuelle Funktion, Klasse oder Modul durchgeführt, als eine vollständig funktionierende Software zu testen. Verwenden eines Frameworks für Unit -Tests können der Programmierer Testfälle mit Eingang und erwartete Ausgabe erstellen. Wenn Hunderte, Tausende oder Zehntausende von Unit -Testfällen für ein großes Softwareprojekt sicherstellen, stellt sicher, dass alle einzelnen Einheiten wie erwartet funktionieren, wenn Sie den Code weiterhin ändern. Wenn ein Gerät mit Testfällen geändert wird, sollten die Testfälle für dieses Modul untersucht werden und feststellen, ob neue Testfälle erforderlich sind, der Ausgang geändert oder die aktuellen Testfälle als nicht mehr relevant entfernt werden können. Das Erstellen eines großen Volumens an Unit -Tests ist der einfachste Weg, um eine hohe Testfallabdeckung für eine Softwarcode -Basis zu erreichen, wird jedoch nicht sichergestellt, dass das Endprodukt wie erwartet als System funktioniert.

Funktionsprüfung

Funktionstests sind die häufigste Form des Tests. Wenn Menschen sich auf Softwaretests ohne detaillierte beziehen, bedeuten sie häufig Funktionstests. Funktionstests werden die Hauptfunktionen der Software wie erwartet überprüft. Ein Testplan könnte geschrieben werden, um alle getesteten Funktionstestfälle zu beschreiben, die den Hauptmerkmalen und Funktionen der Software entsprechen. Primärfunktionalitätstests werden sein “Glücklicher Weg “ Tests, die nicht versuchen, die Software zu brechen oder in herausfordernden Szenarien zu verwenden. Dies sollte das absolute minimale Test für jedes Softwareprojekt sein.

Integrationstests

Nach dem Test- und Funktionstests in Einheiten kann es mehrere Module oder das gesamte System geben, das noch nicht als Ganzes getestet wurde. Oder es könnte Komponenten geben, die weitgehend unabhängig sind, aber gelegentlich zusammen verwendet werden. Jedes Mal, wenn Komponenten oder Module unabhängig voneinander, jedoch nicht als ganzes System getestet werden, sollte die Integrationstests durchgeführt werden.

Belastbarkeitstest

Denken Sie an Stresstests, wie Sie ein Space Shuttle oder Flugzeug testen. Was bedeutet es, Ihre Software oder Ihr System unter "Stress" zu stecken?? Stress ist nichts weiter als eine intensive Belastung eines bestimmten Typs, der Ihr System am wahrscheinlichsten brechen wird. Dies könnte dem „Lasttest“ ähnlich sein, um Ihr System unter hoher Parallelität zu stellen, wobei viele Benutzer auf das System zugreifen. Aber es könnte auch bei anderen Vektoren auftreten, ein System zu betonen. Zum Beispiel Firmware auf einer Hardwarekomponente ausführen. Stress ist einzigartig für alle Arten von Software, und Systeme und Entwerfen von Stresstests sollten berücksichtigt werden, welche natürlichen oder unnatürlichen Ursachen Ihre Software oder Ihr System am wahrscheinlichsten betonen.

Lastprüfung

Lasttests ist eine spezifische Art von Spannungstests, wie oben erläutert, wobei eine große Anzahl gleichzeitiger Benutzerverbindungen und Zugriffe automatisiert werden, um die Simulation des Effekts einer großen Anzahl authentischer Benutzer zu generieren, die gleichzeitig auf Ihr Softwaresystem zugreifen. Ziel ist es, herauszufinden, wie viele Benutzer gleichzeitig auf Ihr System zugreifen können, ohne dass Ihr Software -System brechen kann. Wenn Ihr System den normalen Verkehr von 10.000 Benutzern problemlos bewältigen kann, was wird passieren, wenn Ihre Website oder Software viral wird und 1 Million Benutzer erhält? Wird das unerwartet "BELASTUNG" Brechen Sie Ihre Website oder Ihr System? Lasttests simulieren dies, sodass Sie mit der zukünftigen Zunahme der Benutzer vertraut sind, da Sie wissen, dass Ihr System die erhöhte Last bewältigen kann.

Leistungstest

Menschen können völlig frustriert und verzweifelt werden, wenn die Software ihre Leistungsanforderungen nicht erfüllt. Leistung bedeutet im Allgemeinen, wie schnell wichtige Funktionen erfüllt werden können. Je komplexer und dynamischer die Funktionen in einem System verfügbar sind, desto wichtiger und nicht offensichtlicher wird es, ihre Leistung zu testen. Nehmen wir ein grundlegendes Beispiel: Windows oder Linux-Betriebssystem. Ein Betriebssystem ist ein hochkomplexes Softwareprodukt, und die Durchführung von Leistungstests in seinem System kann die Geschwindigkeit und das Zeitpunkt von Funktionen wie Bootup, Installation einer App, der Suche nach einer Datei, Ausführen von Berechnungen auf einer GPU und/oder einer anderen von beinhalten Die Millionen von Aktionen, die ausgeführt werden können. Bei der Auswahl der Leistungstestfälle sollte darauf geachtet werden, die wichtigen und wahrscheinlich getesteten Leistungsfunktionen zu gewährleisten und wahrscheinlich zu fördern.

Skalierbarkeitstest

Das Testen auf Ihrem Laptop ist gut, aber nicht wirklich gut genug, wenn Sie ein soziales Netzwerk, ein E -Mail -System oder eine Supercomputersoftware erstellen. Wenn Ihre Software auf 1000 Servern bereitgestellt werden soll und alle im Einklang funktionieren, werden die Tests, die Sie lokal auf einem System durchführen. In Wirklichkeit werden Ihre Tests wahrscheinlich nie in der Lage sein, vor der Produktion in vollem Umfang zu laufen, da es viel zu teuer und nicht praktisch wäre, ein Testsystem mit 1000 Servern zu erstellen, die Millionen von Dollar kosten. Daher erfolgt die Skalierbarkeitstests auf mehreren Servern, aber normalerweise nicht die gesamte Anzahl von Produktionsservern, um einige der Defekte aufzudecken, die möglicherweise als Ihre Systeme auf größerer Infrastruktur verwendet werden.

Statische Analysetests

Eine statische Analyse wird getestet, die durch die Überprüfung des Softwarecodes durchgeführt werden, ohne ihn tatsächlich auszuführen. Um eine statische Analyse durchzuführen, würden Sie im Allgemeinen ein Tool verwenden. Es gibt viele, ein berühmtes Werkzeug ist die Deckung. Die statische Analyse ist vor der Veröffentlichung Ihrer Software leicht auszuführen und kann viele Qualitätsprobleme in Ihrem Code finden, die vor Ihrer Veröffentlichung behoben werden können. Speicherfehler, Datentyp -Handhabungsfehler, Nullzeiger -Derferen, nicht initialisierte Variablen und viele weitere Defekte finden sich. Sprachen wie C und C ++ profitieren stark von der statischen Analyse, da die Sprachen den Programmierern im Austausch gegen große Leistung eine große Freiheit bieten. Dies kann jedoch auch großartige Fehler und Fehler erzeugen, die mit statischen Analyse -Tests gefunden werden können.

Fehlerinjektionstest

Einige Fehlerbedingungen sind sehr schwer zu simulieren oder auszulösen. Daher kann die Software so konzipiert werden. Der Zweck von Fehlerinjektionstests besteht darin, zu sehen, wie die Software diese unerwarteten Fehler umgeht. Reagiert es anmutig auf die Situation, stürzt es ab oder erzeugt es unerwartete und unvorhersehbare problematische Ergebnisse?? Angenommen, wir haben ein Bankensystem, und es gibt ein Modul zum intern. Dieser Übertragungsvorgang wird jedoch erst aufgerufen, nachdem das System bereits überprüft hat, ob diese Konten vor dem Aufrufen des Übertragungsvorgangs vorhanden sind. Obwohl wir davon ausgehen, dass beide Konten vorhanden sind, verfügt der Übertragungsvorgang über einen Fehlerfall, in dem ein Ziel oder ein Quellkonto nicht vorhanden ist und dass es einen Fehler werfen kann. Da wir unter normalen Umständen diesen Fehler aufgrund der Vorprüfung der Eingaben nie erhalten, um das Systemverhalten zu überprüfen, wenn die Übertragung aufgrund eines nicht existierenden Kontos ausfällt für eine Übertragung und Prüfung, wie der Rest des Systems in diesem Fall reagiert. Es ist sehr wichtig, dass der Fehlereinspritzcode nur in Testszenarien verfügbar ist und nicht für die Produktion freigegeben wird, wo er Chaos erzeugen kann.

Speicherüberschreitende Tests

Bei Verwendung von Sprachen wie C oder C ++ hat der Programmierer eine große Verantwortung, den Speicher direkt anzusprechen, und dies kann zu tödlichen Fehler in der Software führen, wenn Fehler gemacht werden. Wenn beispielsweise ein Zeiger null und lerferenziert ist, stürzt die Software zum Absturz. Wenn einem Objekt Speicher zugewiesen wird und dann eine Zeichenfolge über den Speicherraum des Objekts kopiert wird, kann das Verweisen auf das Objekt einen Absturz oder sogar ein nicht spezifiziertes falsches Verhalten verursachen. Daher ist es wichtig, mit einem Tool zu versuchen, Fehlerzugriffsfehler in Software zu fangen, die Sprachen wie C oder C ++ verwendet, die diese potenziellen Probleme haben könnten. Zu den Tools, die diese Art von Tests durchführen können, gehören Open Source Valgrind oder proprietäre Tools wie Purifyplus. Diese Tools können den Tag speichern, an dem nicht klar ist. Super, richtig?

Grenzfalltests

Es ist einfach, Fehler bei der Codierung zu machen, wenn Sie eine Grenze genannt werden. Eine automatisierte Kassiermaschine für Bank -Banken sagt beispielsweise, dass Sie maximal 300 US -Dollar abheben können. Stellen Sie sich also vor, der Coder hat den folgenden Code natürlich geschrieben, wenn er diese Anforderung erstellt:

If (Amt < 300)
startenwithdrawl ()

anders
Fehler („Sie können %s abheben“, AMT);

Können Sie den Fehler erkennen?? Der Benutzer, der versucht, 300 US -Dollar abzuheben, erhält einen Fehler, da er nicht weniger als 300 US -Dollar beträgt. Dies ist ein Fehler. Daher wird Grenztests auf natürliche Weise durchgeführt. Die Anforderungengrenzen stellen dann sicher, dass die Software auf beiden Seiten der Grenze und der Grenze ordnungsgemäß funktioniert.

Fuzz -Test

Die Hochgeschwindigkeitserzeugung von Eingaben für Software kann so viele mögliche Eingabekombinationen erzeugen, auch wenn diese Eingabekombinationen totaler Unsinn sind und niemals von einem echten Benutzer geliefert werden würden. Diese Art von Fuzz -Tests kann Fehler und Sicherheitsanfälligkeiten finden,.

Versuchsforschung

Schließen Sie Ihre Augen und visualisieren Sie, was das Wort „erforschen“ bedeutet. Sie beobachten und untersuchen ein System, um herauszufinden, wie es wirklich funktioniert. Stellen Sie sich vor. Sie müssen Ihre Neuankömmlinge untersuchen, um herauszufinden, wie es funktioniert und wie sie zusammengestellt wird. Mit diesem Geist können Sie ein Erkundungstester werden. Sie haben keinen gut definierten Testplan von Testfällen. Sie werden Ihre Software untersuchen und untersuchen, die nach Dingen sucht, die Sie zum wunderbaren Wort sagen lassen: „Interessant!”. Beim Lernen suchen Sie weiter und finden Wege, die Software zu brechen, an die die Designer nie gedacht haben. Erfahren Sie mehr darüber in dem Buch mit dem Titel "Explore It".

Penetrationstests

In der Welt der Softwaresicherheit ist Penetrationstests eines der wichtigsten Testmittel zum Testen. Alle Systeme, ob biologisch, physisch oder Software. Diese Grenzen sollen nur bestimmte Nachrichten, Personen oder Komponenten ermöglichen, das System einzugeben. Berücksichtigen wir konkret ein Online -Banking -System, das die Benutzerauthentifizierung zum Eingeben der Website verwendet. Wenn die Website ohne ordnungsgemäße Authentifizierung in das Backend eingetragen werden kann, wäre dies eine Penetration, gegen die geschützt werden muss. Ziel der Penetrationstests ist es, bekannte und experimentelle Techniken zur Umgehung der normalen Sicherheitsgrenze eines Softwaresystems oder einer Website zu umgehen. Penetrationstests beinhalten häufig die Überprüfung aller Ports, die zuhören und versuchen, ein System über einen offenen Anschluss zu betreten. Weitere gängige Techniken sind SQL -Injektion oder Passwort -Cracking.

Regressionstests

Nachdem Sie eine Arbeitssoftware haben, die vor Ort bereitgestellt wird, ist es wichtig, zu verhindern, dass Fehler in Funktionen eingeführt werden, die bereits funktionierten. Der Zweck der Softwareentwicklung besteht darin, die Fähigkeit Ihres Produkts zu erhöhen, Fehler einzuführen oder alte Funktionen zu beenden, was als Regression bezeichnet wird. Regression ist ein Fehler oder Defekt, der eingeführt wurde, als zuvor die Fähigkeit wie erwartet funktioniert hat. Nichts kann den Ruf Ihrer Software oder Marke schneller ruinieren, als Regressionsfehler in Ihre Software einzuführen und echte Benutzer nach einer Version diese Fehler zu finden.

Regressionstestfälle und Testpläne sollten auf die Kernfunktionen aufgebaut werden, die weiter arbeiten müssen, um sicherzustellen, dass Benutzer eine gute Erfahrung mit Ihrer Anwendung haben. Alle Kernfunktionen Ihrer Software, die Benutzer erwarten, auf eine bestimmte Weise zu arbeiten. Dies kann zwischen 50 und 50.000 Testfällen liegen, die die Kernfunktionalität Ihrer Software oder Anwendung abdecken.

Quellcode -Bisektestetest

In der Software wurde ein Fehler eingeführt, aber es ist nicht offensichtlich, welche Version der Version den neuen Fehler eingeführt hat. Stellen Sie sich vor, es gab 50 Software -Commits aus der letzten bekannten Zeit, in der die Software ohne den Fehler arbeitete, bis jetzt…

Lokalisierungstests

Stellen Sie sich eine Wetteranwendung vor, die das aktuelle und projizierte Wetter an Ihrem Standort sowie eine Beschreibung der Wetterbedingungen zeigt. Der erste Teil der Lokalisierungstests besteht darin, sicherzustellen, dass die richtige Sprache, das richtige Alphabet und die Zeichen ordnungsgemäß angezeigt werden, abhängig von der Geolokalisierung des Benutzers. Die App im Vereinigten Königreich sollte in englischer Sprache mit lateinischen Charakteren angezeigt werden. Die gleiche App in China sollte in chinesischen Charakteren in der chinesischen Sprache angezeigt werden. Die ausführlichere Lokalisierungstests durchgeführt und die größere Auswahl an Menschen aus verschiedenen Geolokationen werden mit der Anwendung verbinden.

Zugänglichkeitstest

Einige der Bürger in unserer Gemeinde haben Behinderungen und können daher Probleme haben, die zu erstellte Software zu verwenden. Daher wird die Tests durch Zugänglichkeit durchgeführt, um sicherzustellen, dass Bevölkerungsgruppen mit Behinderungen weiterhin auf die Funktionalität des Systems zugreifen können. Wenn wir beispielsweise annehmen, dass 1% der Bevölkerung farbinter ist und unsere Software -Schnittstelle davon ausgeht, dass Benutzer zwischen Rot und Grün unterscheiden können, aber diese Farbblinden können den Unterschied nicht erkennen können. Daher verfügt eine gut-software-Oberfläche über zusätzliche Hinweise über die Farbe hinaus, um eine Bedeutung anzuzeigen. Weitere Szenarien neben Farbblindheitstests würden ebenfalls in die Software -Zugänglichkeitstests enthalten, wie z. B. vollständige visuelle Blindheit, Taubheit und viele andere Szenarien. Ein gutes Softwareprodukt sollte durch einen maximalen Prozentsatz potenzieller Benutzer zugänglich sein.

Upgrade -Tests

Einfache Apps auf einem Telefon, Betriebssysteme wie Ubuntu, Windows oder Linux Mint sowie Software, die nukleare U -Boote ausführt, benötigen häufige Upgrades. Der Prozess des Upgrades selbst könnte Fehler und Defekte einführen, die bei einer frischen Installation nicht vorhanden sind, da der Stand der Umgebung unterschiedlich war und der Prozess der Einführung der neuen Software zusätzlich zu den alten Fehler einführen könnte, hätte Fehler einführen können. Nehmen wir ein einfaches Beispiel, wir haben einen Laptop, der Ubuntu 18 läuft.04, und wir wollen auf Ubuntu 20 aktualisieren.04. Dies ist ein anderer Prozess bei der Installation des Betriebssystems als die direkte Reinigung der Festplatte und die Installation von Ubuntu 20 direkt.04. Nachdem die Software installiert wurde oder ihre Ableitungsfunktionen. Wir sollten also zunächst in Betracht ziehen, das Upgrade selbst unter vielen verschiedenen Fällen und Szenarien zu testen, um sicherzustellen, dass das Upgrade bis zur Fertigstellung funktioniert. Und dann müssen wir auch in Betracht ziehen, das tatsächliche Systempost -Upgrade zu testen, um sicherzustellen, dass die Software wie erwartet festgelegt und funktioniert. Wir würden nicht alle Testfälle eines frisch installierten Systems wiederholen, was Zeitverschwendung wäre, aber wir werden uns sorgfältig mit unserem Wissen über das System überlegen, was während eines Upgrades brechen könnte, und strategisch Testfälle für diese Funktionen hinzufügen.

Black Box & White Box Tests

Black Box und White Box sind weniger spezifische Testmethoden und mehr Kategorisierungsarten von Testtypen. Im Wesentlichen sind Black -Box -Tests, bei denen angenommen wird, dass der Tester nichts über die innere Arbeit der Software weiß und einen Testplan und Testfälle erstellt, die das System nur von außen betrachten, um seine Funktion zu überprüfen. White -Box -Tests werden von Softwarearchitekten durchgeführt, die die internen Funktionsweise eines Softwaresystems verstehen und die Fälle mit Wissen darüber gestalten, was, sollten, sollten, sollten und wahrscheinlich brechen sollten und wahrscheinlich zu brechen sollten. Sowohl schwarze als auch weiße Box -Tests finden wahrscheinlich verschiedene Arten von Defekten.

Blogs und Artikel über Softwaretests

Softwaretests sind ein dynamisches Feld und viele interessante Veröffentlichungen und Artikel, die die Community über hochmodernes Denken über Softwaretests aktualisieren. Wir alle können von diesem Wissen profitieren. Hier ist ein Beispiel interessanter Artikel aus verschiedenen Blog -Quellen, denen Sie möglicherweise folgen möchten:

  • 7 Tipps, die Sie vor dem Testen ohne Anforderungen befolgen sollten; http: // www.Testjournals.com/
  • 60 beste Automatisierungstestwerkzeuge: Der ultimative Listenhandbuch; https: // testguild.com/
  • Open Source -Datenbank -Test -Tools; https: // www.SoftwaretestingMagazin.com/
  • Eine 100 -prozentige Abdeckung der Unit -Tests reicht nicht aus. https: // www.Stickyminds.com/
  • Flaky Tests bei Google und wie wir sie mindern; https: // testing.GoogleBlog.com/
  • Was ist Regressionstests? ; https: // test.io/blog/
  • 5 wichtige Software -Testschritte, die jeder Ingenieur ausführen sollte; https: // techbeacon.com/

Produkte für Softwaretests

Die Mehrheit der wertvollen Testaufgaben kann automatisiert werden. Es sollte daher keine Überraschung sein, dass die Verwendung von Tools und Produkten zur Durchführung der unzähligen Aufgaben der Software -Qualitätssicherung eine gute Idee ist. Im Folgenden werden wir einige wichtige und sehr wertvolle Softwaretools für Softwaretests auflisten, die Sie untersuchen können, und feststellen, ob sie helfen können.

Jung

Zum Testen von Java-basierter Software bietet JUNIT eine umfassende Testsuite für Einheiten- und Funktionstests des Code.

Selen

Zum Testen von Webanwendungen bietet Selen die Möglichkeit, Interaktionen mit Webbrowsern zu automatisieren, einschließlich Cross-Browser-Kompatibilitätstests. Dies ist eine führende Testinfrastruktur für die Automatisierung von Webtests.

Gurke

Ein verhaltensgetriebenes Test-Framework ermöglicht es Geschäftsbenutzern, Produktmanagern und Entwicklern, die erwartete Funktionalität in der natürlichen Sprache zu erklären und dieses Verhalten in Testfällen dann zu definieren. Dies macht mehr lesbare Testfälle und löschliche Zuordnungen auf die erwartete Benutzerfunktionalität durch.

Reinigen

Suchen Sie zur Laufzeit Speicherlecks und Speicherversorger, indem Sie Ihre Software mit der eingebetteten Purify Plus -Instrumentierung ausführen, die Ihre Speicherverwendung verfolgt und auf Fehler in Ihrem Code hinweist, die ohne Instrumentierung nicht einfach zu finden sind.

Valgrind

Open-Source-Tools, mit denen Ihre Software ausgeführt wird und Sie mit ihr interagieren und gleichzeitig auf einen Fehlerbericht über Codierungsfehler wie Speicherlecks und Verfälle hinweisen können. Es ist nicht erforderlich, den Kompilierungsprozess neu zu kompilieren oder Instrumentierung hinzuzufügen, da Valgrind die Intelligenz hat, Ihren Maschinencode dynamisch zu verstehen und Instrumente nahtlos zu injizieren, um Codierungsfehler zu finden und Ihnen bei der Verbesserung Ihres Codes zu helfen.

Deckung

Statische Analyse -Tool, mit der Codierungsfehler in Ihrer Software festgelegt werden, bevor Sie Ihren Code überhaupt kompilieren und ausführen. Deckung kann Sicherheitslücken, Verstöße gegen Codierungskonventionen sowie Fehler und Mängel, die Ihr Compiler nicht finden wird, finden. Dead Code finden Sie. Es ist wichtig, Ihren Code mit statischer Analyse zu reinigen, bevor er ihn zur Produktion freigibt.

JMeter

Ein Open-Source-Framework für Leistungstests, der an Java-basierten Entwicklern orientiert wird, daher der J im Namen. Website-Tests sind eine der wichtigsten Anwendungsfälle für JMeter sowie Leistungstests von Datenbanken, Mail-Systemen und vielen anderen serverbasierten Anwendungen.

Metasploit

Für Sicherheits- und Penetrationstests ist Metasploit ein generisches Rahmen mit Tausenden von Merkmalen und Funktionen. Verwenden Sie die Interaktionskonsole, um auf vorcodierte Exploits zuzugreifen, und versuchen Sie, die Sicherheit Ihrer Anwendung zu überprüfen.

Akademische Forschung zu Softwaretests

  • Forschungsgruppe der Universität Sheffield Testing
  • Softwareverifizierung und Validierungslabor der Universität von Kentucky
  • Software -Testgruppe der North Dakota State University Testing
  • Systemtesting intelligentes Labor; Tschechische Technische Universität Prag
  • NASA: Jon McBride -Software -Test und -forschung (JSTAR)
  • McMaster University; Software -Qualitätsforschungslabor
  • Ontario Tech University; Software -Qualitätsforschungslabor
  • Die Universität von Texas @ Dallas; Stqa

Abschluss

Die Rolle der Software in der Gesellschaft wächst weiter und gleichzeitig wird die Software der Welt komplexer. Damit die Welt funktioniert, müssen wir Methoden und Strategien zum Testen und Validieren der von uns erstellten Software haben, die die Funktionen ausführen sollen, die sie ausführen sollen. Für jedes komplexe Softwaresystem sollte eine Teststrategie und ein Testplan vorhanden sein.