Umfangreiche Testmanagement Lösung für komplexe Herausforderungen.
Software Testing früher und heute. Teil 1️⃣: “Kurzer Rückblick”
Wie alles begann: Kurzer Rückblick in die Geschichte des Software Testings
📖 In seinem Werk “The Art of Software Testing” deutet Glenford J. Myers den Begriff Software Testing so: “Software Testing is the process of running a program with the intention of finding errors.”
“Software Testing ist das Ausführen eines Programms mit der Absicht, Fehler [darin] zu finden.” Diese Definition des Begriffs “Software Testing” gab Myers bereits 1979. In unserem ersten Blogbeitrag unserer Reihe "Software Testing früher und heute" geben wir einen kurzen Überblick über das Software Testing und seine Entwicklung seit den 1950er Jahren.
Das Software Testing hat sich natürlich nicht an einem einzigen Tag entwickelt; Viel Zeit und Schweiß brachten das Testing dorthin, wo es heute steht. Testing-Gurus wie Hetzel und Dave Halprin teilen die Entwicklungsgeschichte des Software Testings in fünf bedeutende Epochen ein:
1️⃣ Debugging
Dieser Zeitabschnitt begann in den frühen 1950er Jahren, als man noch kaum einen Unterschied zwischen dem Testing und Debugging machte. Der Fokus lag ausschließlich auf der Fehlerbehebung. Damals schrieben Entwickler Codes, analysierten sie beim Auftreten eines Fehlers und debuggten sie dann an den entsprechenden Stellen. Es gab weder ein Testkonzept noch Tester. (Dennoch gelang es schließlich Charles L. Baker 1957 in seinem Review zum Werk "Digital Computer Programming" von Dan McCracken das Testen vom Debuggen ein für allemal zu trennen.)
2️⃣ Demonstration:
Nun wusste man also ganz genau, wie sich das Testen vom Debugging unterschied und im Zeitraum von 1957 bis 1978 wurde das Testen schließlich zu einem völlig unabhängigen Prozess. In dieser Zeit bestand das Hauptziel des Software Testings also darin, sicherzustellen, dass alle Softwareanforderungen erfüllt wurden. Solche Anforderungen lauteten beispielsweise so: „Eine Webanwendung, die eine Liste mit nur 10 Produkten anzeigt“. Tester stellten also sicher, dass nur 10 Produkte angezeigt wurden. Dies scheiterte schnell an der Wahrscheinlichkeit, dass die Funktion einer Software mit zunehmendem Testen abnimmt, d.h. je mehr Sie testen, desto wahrscheinlicher sei es, dass Sie einen Fehler fänden. Das Konzept des Negative Testings wurde zu dieser Zeit noch nicht praktiziert.
3️⃣ Destruction
1979 bis 1982 lag der Fokus hauptsächlich darauf, den Code zu knacken und die Bugs darin zu finden. Es war Glenford J. Myers, der 1979 die Trennung des Debuggings vom Testing vornahm und einführte, obwohl sein Hauptaugenmerk auf dem sogenannten Breakage Testing lag. („Ein erfolgreicher Testfall ist der, der einen noch unentdeckten Bug erkennt.“) Das Breakage Testing versuchte den Wunsch der Software-Engineering-Community nachzugehen und grundlegende Entwicklungsaktivitäten wie das Debugging von der Verifizierung zu trennen. So würde beispielsweise ein Tester eine Software so testen, dass sie kaputt ginge (z. B. Eingabe von Buchstaben in ein Feld, das nur Zahlen akzeptiert). In dieser Phase gab es jedoch noch keinen konkreten Ansatz zur Bugbehebung. Der Ansatz "Destruction" scheiterte ebenfalls daran, dass die Software letztendlich nie an die Öffentlichkeit ging, weil man einen Bug nach dem anderen fand. Außerdem führte das Beheben eines Bugs zum Aufkommen eines anderen.
4️⃣ Evaluation
1983 bis 1987 lag dann der Schwerpunkt auf der Bewertung und Messung der Softwarequalität. Das Testen verbesserte den Vertrauensindex für die Funktionsweise der Software. Man testete, bis man zu einem akzeptablen Punkt kam, an dem die Anzahl der erkannten Fehler reduziert wurde. Dies galt hauptsächlich für umfängliche Softwares.
5️⃣ Prevention
1988 bis 2000 gab es schließlich einen neuen Ansatz. Tests konzentrierten sich auf den Nachweis, dass die Software ihre besonderen Anforderungen erfüllt, Fehler zu erkennen und diese auszuschließen. Codes wurden in testbare und nicht testbare geteilt. So hatte ein testbarer Code deutlich weniger Fehler als einer, der schwer zu testen war. In dieser Phase wurde die Identifizierung der Testtechniken selbst zum Schlüssel des Erfolgs.
In den frühen 2000er kamen neue Testkonzepte wie test-driven development (TDD) und behavioral-driven development (BDD) auf. Diese werden wir in kommenden Artikeln angehen.
Das Jahr 2004 löste mit dem Aufkommen von Tools zur Testautomatisierung wie Selenium eine große Revolution im Testen aus. Ebenso markierten API-Tests mit Tools wie SOAP UI einen weiteren Wendepunkt in der Testing-Geschichte. Darauf werden wir ebenso in den kommenden Blogbeiträgen genauer eingehen. Schließlich bewegt sich die aktuelle Testing Ära in Richtung Testing Tools für artificial intelligence (AI), also der künstlichen Intelligenz und browserübergreifendes Testings mit Tools wie SauceLabs, Browserstack usw.