Übersicht über Softwaretests

Beim Softwaretest wird die Software anhand der Anforderungen der Benutzer und der Systemspezifikationen bewertet. Die Tests werden auf Phasenebene im Lebenszyklus der Softwareentwicklung oder auf Modulebene im Programmcode durchgeführt. Das Testen von Software umfasst die Validierung und Verifizierung.

Software-Validierung

Bei der Validierung wird geprüft, ob die Software die Benutzeranforderungen erfüllt. Es wird am Ende des SDLC durchgeführt. Wenn die Software den Anforderungen entspricht, für die sie erstellt wurde, wird sie validiert.

  • Durch die Validierung wird sichergestellt, dass das in der Entwicklung befindliche Produkt den Benutzeranforderungen entspricht.
  • Die Validierung beantwortet die Frage: "Entwickeln wir das Produkt, das alle Anforderungen des Benutzers an diese Software erfüllt?".
  • Die Validierung konzentriert sich auf die Benutzeranforderungen.

Softwareüberprüfung

Bei der Überprüfung wird bestätigt, ob die Software die Geschäftsanforderungen erfüllt, und sie wird unter Einhaltung der richtigen Spezifikationen und Methoden entwickelt.

  • Durch die Überprüfung wird sichergestellt, dass das zu entwickelnde Produkt den Designspezifikationen entspricht.
  • Die Überprüfung beantwortet die Frage: "Entwickeln wir dieses Produkt, indem wir alle Designspezifikationen genau befolgen?"
  • Die Überprüfung konzentriert sich auf das Design und die Systemspezifikationen.

Ziel des Tests sind -

  • Errors- Dies sind tatsächliche Codierungsfehler, die von Entwicklern gemacht wurden. Darüber hinaus gibt es einen Unterschied in der Ausgabe der Software und der gewünschten Ausgabe, wird als Fehler angesehen.

  • Fault- Wenn ein Fehler vorliegt, tritt ein Fehler auf. Ein Fehler, auch als Fehler bezeichnet, ist das Ergebnis eines Fehlers, der zum Ausfall des Systems führen kann.

  • Failure - Ein Fehler soll die Unfähigkeit des Systems sein, die gewünschte Aufgabe auszuführen. Ein Fehler tritt auf, wenn ein Fehler im System vorliegt.

Manuell gegen automatisiertes Testen

Das Testen kann entweder manuell oder mit einem automatisierten Testwerkzeug erfolgen:

  • Manual- Diese Tests werden ohne Hilfe automatisierter Testwerkzeuge durchgeführt. Der Software-Tester bereitet Testfälle für verschiedene Abschnitte und Ebenen des Codes vor, führt die Tests aus und meldet das Ergebnis an den Manager.

    Manuelles Testen ist zeit- und ressourcenintensiv. Der Tester muss bestätigen, ob die richtigen Testfälle verwendet werden. Ein Großteil der Tests umfasst manuelle Tests.

  • AutomatedDieses Testen ist ein Testverfahren, das mit Hilfe automatisierter Testwerkzeuge durchgeführt wird. Die Einschränkungen beim manuellen Testen können mit automatisierten Testwerkzeugen überwunden werden.

Bei einem Test muss überprüft werden, ob eine Webseite in Internet Explorer geöffnet werden kann. Dies kann leicht mit manuellen Tests durchgeführt werden. Um zu überprüfen, ob der Webserver die Last von 1 Million Benutzern aufnehmen kann, ist es unmöglich, manuell zu testen.

Es gibt Software- und Hardwaretools, die dem Tester bei der Durchführung von Lasttests, Stresstests und Regressionstests helfen.

Testansätze

Tests können basierend auf zwei Ansätzen durchgeführt werden -

  • Funktionstests
  • Implementierungstests

Wenn die Funktionalität getestet wird, ohne die tatsächliche Implementierung in Betracht zu ziehen, spricht man von Black-Box-Tests. Die andere Seite ist als White-Box-Test bekannt, bei dem nicht nur die Funktionalität getestet, sondern auch die Art und Weise ihrer Implementierung analysiert wird.

Vollständige Tests sind die am besten gewünschte Methode für einen perfekten Test. Jeder einzelne mögliche Wert im Bereich der Eingangs- und Ausgangswerte wird geprüft. Es ist nicht möglich, jeden einzelnen Wert im realen Szenario zu testen, wenn der Wertebereich groß ist.

Black-Box-Tests

Es wird ausgeführt, um die Funktionalität des Programms zu testen. Es wird auch als "Verhaltenstest" bezeichnet. Der Tester hat in diesem Fall eine Reihe von Eingabewerten und die entsprechenden gewünschten Ergebnisse. Wenn die Ausgabe bei der Eingabe mit den gewünschten Ergebnissen übereinstimmt, wird das Programm mit "OK" getestet und ist ansonsten problematisch.

Bei dieser Testmethode sind dem Tester das Design und die Struktur des Codes nicht bekannt, und Testingenieure und Endbenutzer führen diesen Test mit der Software durch.

Black-Box-Testtechniken:

  • Equivalence class- Die Eingabe ist in ähnliche Klassen unterteilt. Wenn ein Element einer Klasse den Test besteht, wird davon ausgegangen, dass die gesamte Klasse bestanden wurde.

  • Boundary values- Der Eingang ist in höhere und niedrigere Endwerte unterteilt. Wenn diese Werte den Test bestehen, wird davon ausgegangen, dass auch alle dazwischen liegenden Werte bestanden werden können.

  • Cause-effect graphing- Bei beiden vorherigen Methoden wird jeweils nur ein Eingabewert getestet. Ursache (Eingabe) - Wirkung (Ausgabe) ist eine Testtechnik, bei der Kombinationen von Eingabewerten systematisch getestet werden.

  • Pair-wise Testing- Das Verhalten von Software hängt von mehreren Parametern ab. Beim paarweisen Testen werden die mehreren Parameter paarweise auf ihre unterschiedlichen Werte getestet.

  • State-based testing- Das System ändert den Status bei Bereitstellung der Eingabe. Diese Systeme werden anhand ihrer Zustände und Eingaben getestet.

White-Box-Tests

Es wird durchgeführt, um das Programm und seine Implementierung zu testen, um die Codeeffizienz oder -struktur zu verbessern. Es wird auch als "strukturelle" Prüfung bezeichnet.

Bei dieser Testmethode sind dem Tester das Design und die Struktur des Codes bekannt. Programmierer des Codes führen diesen Test am Code durch.

Im Folgenden sind einige White-Box-Testtechniken aufgeführt:

  • Control-flow testing- Der Zweck des Kontrollflusstests besteht darin, Testfälle einzurichten, die alle Aussagen und Verzweigungsbedingungen abdecken. Die Verzweigungsbedingungen werden sowohl auf wahr als auch auf falsch getestet, damit alle Aussagen abgedeckt werden können.

  • Data-flow testing- Diese Testtechnik konzentriert sich auf alle im Programm enthaltenen Datenvariablen. Es wird getestet, wo die Variablen deklariert und definiert wurden und wo sie verwendet oder geändert wurden.

Teststufen

Das Testen selbst kann auf verschiedenen SDLC-Ebenen definiert werden. Der Testprozess läuft parallel zur Softwareentwicklung. Vor dem Sprung auf die nächste Stufe wird eine Stufe getestet, validiert und verifiziert.

Das separate Testen wird nur durchgeführt, um sicherzustellen, dass keine versteckten Fehler oder Probleme in der Software vorhanden sind. Software wird auf verschiedenen Ebenen getestet -

Unit Testing

Während des Codierens führt der Programmierer einige Tests an dieser Programmeinheit durch, um festzustellen, ob sie fehlerfrei ist. Das Testen wird unter einem White-Box-Testansatz durchgeführt. Mithilfe von Unit-Tests können Entwickler entscheiden, ob einzelne Einheiten des Programms gemäß den Anforderungen funktionieren und fehlerfrei sind.

Integrationstests

Selbst wenn die Softwareeinheiten einzeln einwandfrei funktionieren, muss herausgefunden werden, ob die zusammen integrierten Einheiten auch fehlerfrei funktionieren würden. Zum Beispiel Argumentübergabe und Datenaktualisierung usw.

Systemtests

Die Software wird als Produkt kompiliert und anschließend als Ganzes getestet. Dies kann mit einem oder mehreren der folgenden Tests erreicht werden:

  • Functionality testing - Testet alle Funktionen der Software gegen die Anforderung.

  • Performance testing- Dieser Test zeigt, wie effizient die Software ist. Es testet die Effektivität und die durchschnittliche Zeit, die die Software benötigt, um die gewünschte Aufgabe zu erledigen. Leistungstests werden mittels Lasttests und Stresstests durchgeführt, bei denen die Software unter verschiedenen Umgebungsbedingungen einer hohen Benutzer- und Datenlast ausgesetzt ist.

  • Security & Portability - Diese Tests werden durchgeführt, wenn die Software auf verschiedenen Plattformen funktionieren soll und auf die mehrere Personen zugreifen können.

Abnahmetests

Wenn die Software zur Übergabe an den Kunden bereit ist, muss sie die letzte Testphase durchlaufen, in der sie auf Benutzerinteraktion und Reaktion getestet wird. Dies ist wichtig, da die Software möglicherweise abgelehnt wird, auch wenn sie allen Benutzeranforderungen entspricht und die Darstellung oder Funktionsweise des Benutzers nicht gefällt.

  • Alpha testing- Das Entwicklerteam selbst führt Alpha-Tests durch, indem es das System so verwendet, als würde es in einer Arbeitsumgebung verwendet. Sie versuchen herauszufinden, wie Benutzer auf bestimmte Aktionen in der Software reagieren würden und wie das System auf Eingaben reagieren sollte.

  • Beta testing- Nachdem die Software intern getestet wurde, wird sie an die Benutzer übergeben, um sie in ihrer Produktionsumgebung nur zu Testzwecken zu verwenden. Dies ist noch nicht das gelieferte Produkt. Entwickler erwarten, dass Benutzer in dieser Phase winzige Probleme verursachen, die zur Teilnahme übersprungen wurden.

Regressionstests

Jedes Mal, wenn ein Softwareprodukt mit neuem Code, neuem Feature oder neuer Funktionalität aktualisiert wird, wird es gründlich getestet, um festzustellen, ob der hinzugefügte Code negative Auswirkungen hat. Dies wird als Regressionstest bezeichnet.

Dokumentation testen

Testdokumente werden in verschiedenen Phasen erstellt -

Vor dem Testen

Das Testen beginnt mit der Generierung von Testfällen. Folgende Dokumente werden als Referenz benötigt -

  • SRS document - Dokument mit den funktionalen Anforderungen

  • Test Policy document - Hier wird beschrieben, wie weit die Tests vor der Freigabe des Produkts erfolgen sollen.

  • Test Strategy document - Hier werden detaillierte Aspekte des Testteams, der Verantwortungsmatrix und der Rechte / Verantwortlichkeiten des Testmanagers und des Testingenieurs erwähnt.

  • Traceability Matrix document- Dies ist ein SDLC-Dokument, das sich auf den Prozess der Anforderungserfassung bezieht. Wenn neue Anforderungen kommen, werden sie dieser Matrix hinzugefügt. Diese Matrizen helfen Testern, die Quelle der Anforderung zu kennen. Sie können vorwärts und rückwärts verfolgt werden.

Während des Testens

Die folgenden Dokumente sind möglicherweise erforderlich, während der Test gestartet und durchgeführt wird:

  • Test Case document- Dieses Dokument enthält eine Liste der durchzuführenden Tests. Es enthält einen Unit-Testplan, einen Integrationstestplan, einen Systemtestplan und einen Abnahmetestplan.

  • Test description - Dieses Dokument enthält eine detaillierte Beschreibung aller Testfälle und Verfahren zu deren Ausführung.

  • Test case report - Dieses Dokument enthält einen Testfallbericht als Ergebnis des Tests.

  • Test logs - Dieses Dokument enthält Testprotokolle für jeden Testfallbericht.

Nach dem Testen

Die folgenden Dokumente können nach dem Testen erstellt werden:

  • Test summary- Diese Testzusammenfassung ist eine kollektive Analyse aller Testberichte und Protokolle. Es fasst zusammen und schließt, ob die Software startbereit ist. Die Software wird unter dem Versionskontrollsystem veröffentlicht, wenn sie startbereit ist.

Testen vs. Qualitätskontrolle, Qualitätssicherung und Audit

Wir müssen verstehen, dass sich Softwaretests von Softwarequalitätssicherung, Softwarequalitätskontrolle und Softwareprüfung unterscheiden.

  • Software quality assurance- Hierbei handelt es sich um Mittel zur Überwachung des Softwareentwicklungsprozesses, mit denen sichergestellt wird, dass alle Maßnahmen gemäß den Organisationsstandards ergriffen werden. Diese Überwachung wird durchgeführt, um sicherzustellen, dass die richtigen Softwareentwicklungsmethoden befolgt wurden.

  • Software quality control- Dies ist ein System zur Aufrechterhaltung der Qualität von Softwareprodukten. Es kann funktionale und nicht funktionale Aspekte des Softwareprodukts enthalten, die den guten Willen der Organisation verbessern. Dieses System stellt sicher, dass der Kunde ein Qualitätsprodukt für seine Anforderungen erhält und das Produkt als "gebrauchsfertig" zertifiziert ist.

  • Software audit- Dies ist eine Überprüfung des Verfahrens, das von der Organisation zur Entwicklung der Software verwendet wird. Ein vom Entwicklungsteam unabhängiges Auditorenteam untersucht den Softwareprozess, das Verfahren, die Anforderungen und andere Aspekte von SDLC. Der Zweck des Software-Audits besteht darin, zu überprüfen, ob die Software und ihr Entwicklungsprozess den Standards, Regeln und Vorschriften entsprechen.