Im Folgenden gebe ich einen Überblick über die Grundlagen des Testens von Software, die für das ISTQB von Wichtigkeit sind (Prüfungsstoff) und daher alle angehenden ISTQB Certified Tester für den Erwerb des ISTQB Zertifikats kennen sollten. Zum Selbststudium verweise ich auf das ISTQB Glossar.
Fehler innerhalb von Software können je nach deren Einsatz zu Millionenschäden führen. Viele Programmierer unterschätzen die Fehlerquellen und testen nicht systematisch. Es sind daher methodisch geschulte ISTQB Certified Tester erforderlich, die systematisch alle Fehler aufdecken
Gründe für Fehler innerhalb von Software sind vielseitig, daher sollen ein paar Beispiele genannt werden:
a) die Software ist komplex und sehr unfangreich
b) es sind mehrere Entwickler beteiligt (Kommunikationsprobleme...)
c) das Lastenheft bzw. die System- und Softwarespezifikation sind unvollständig und ungenau formuliert
d) Umfang der Entwicklung wurde unterschätzt
Definition Fehler: Fehler bezeichnen die Nichterfüllung von spezifizierten Anforderungen, d.h. die Abweichung zwischen Soll (festgelegte und theoretische Zustände) und Ist (beobachtete und ermittelter Zustände). Im Gegensatz dazu ist ein Mangel die nicht angemessene Erfüllung einer Anforderung bzw. berechtigten Erwartung. Weiterhin sind hier noch die Definitionen zu Fehlhandlung, Innerer Fehler/Fehlerzustand und Äußerer Fehler/Fehlerwirkung von Bedeutung.
Durch Softwaretests werden Fehlerwirkungen entdeckt und diese können beseitigt werden (durch Debugging). Dadurch steigt die Softwarequalität, welche sich gem. ISO / IEC 9126 durch die Qualitätsmerkmale Funktionalität, Benutzbarkeit, Zuverlässigkeit, Effizienz, Übertragbarkeit und Änderbarkeit gekennzeichnet ist. Das Merkmal Funktionalität lässt sich weiter aufteilen in Angemessenheit, Richtigkeit, Interoperabilität, Ordnungsmäßigkeit und Sicherheit (ARIOS).
Die zuvor genannten Qualitätsmerkmale können auch dazu verwendet werden, die Anforderungen zu kategorisieren. Hier wird zwischen funktionalen (Funktionalität)u nd nicht-funktionalen Anforderungen (Benutzbarkeit, Zuverlässigkeit, Effizienz, Übertragbarkeit und Änderbarkeit) unterschieden. Die funktionalen Anforderungen beschreiben das „Was?“ und die nicht-funktionalen Anforderungen beschreiben „Wie?“ ein System arbeitet. Dabei gibt es für jede nicht-funktionale Anforderung eine geeignete Testmethode.
Softwaretests dienen als analysische QS-Maßnahmen. Diese ist von konstruktiver QS zu unterscheiden. Erstere dient dem finden von Fehlern, zweitere der Fehlervermeidung. Weitere Ausführungen zur Unterscheidung analytische und konstruktive QS findet man in einem anderen Artikel. Softwaretests erfüllen folgenden Zweck:
a) Messung von Qualität und Steigerung von Qualität in Software
b) Minimierung von Risiken bzgl. des Einsatzes der Software im Echtbetrieb
c) Schaffen Vertrauen in die Software