Wie die Welt von morgen getestet wird

von Derk Masselink

Letztes Jahr habe ich an einem automatisierten Test in JMeter für das neue MiddlewareSystem einer Versicherungsgesellschaft gearbeitet. Wir hatten einige sehr gute Tests in JMeter, aber es war sehr schwer, die Testkomponenten wiederzuverwenden und aufrechtzuerhalten. Gleichzeitig experimentierte ich mit Fitnesse. Fitnesse ist ein wikiartiges Testautomatisierungstool, mit dem man das generelle Verhalten der Tests in Java-Klassen programmiert und dies dann benutzt, um auf einfache Weise Testfälle in einem benutzerfreundlichen Format in einem Wiki zu erstellen.

Das Problem war dann, dass ich nicht genug Java-Skills hatte, um einen verwertbaren Test zu erstellen, also blieb ich dabei, mit Fitnesse und JMeter zu experimentieren.

die Welt von Morgen testen

In der Zwischenzeit begann das Team, sich über Schwierigkeiten mit der Wartbarkeit von JMeter-Tests und den Mangel an Testkapazitäten zu beschweren. Also diskutierten wir die Möglichkeit, ein einfacher aufrechtzuerhaltendes Test-Tool wie Fitnesse zu benutzen.

Nach einer Weile half uns ein erfahrener JavaArchitekt und -Programmierer, der Teil unseres Teams war, dabei, ein Proof of Concept für einen Fitnesse-Test zu erstellen. In wenigen Tagen hatten wir einen automatisierten Test für unsere Transaktionen. Er erstellte einige grundlegende Java-Klassen, die hilfreich waren, und erklärte, wie wir Fitnesse nutzen können. Nach ein paar Wochen konnte das ganze Team Fitnesse einwandfrei nutzen, und die Wartbarkeit erhöhte sich stark. Der Vorteil hierbei ist, dass jedes Teammitglied eine Rolle dabei spielen kann, einen Test zu erstellen, und die Tests einfach vom Auftraggeber eingesehen werden können. Tatsächlich macht es ihr Wiki-Charakter sogar möglich, die Tests und die Anforderungen auf denselben WikiSeiten aufzuschreiben.

Was können wir hiervon also lernen? Ich denke, die größte Lektion ist, dass es uns großen Nutzen bringen kann, mit Programmierern und anderen Menschen mit technischen oder geschäftlichen Fähigkeiten zu kooperieren. Natürlich muss man, um sich an eine neue Art von Arbeit anzupassen, auch neue Fähigkeiten erlernen und ihnen gegenüber offen sein.

Eine weitere wichtige Lektion ist, dass wir mit der Einführung von Fitnesse zwei Veränderungen mitgemacht haben – eine geht in eine eher technische Richtung durch das Programmieren in Java und das Ausführen von Tests, die andere führt zu einer simpleren und benutzerfreundlicheren Art von Arbeit, indem der Überblick über Testfälle auf benutzerfreundliche Weise in einem Wiki ermöglicht wurde. Dies machte es extrem leicht, die Testfälle zu überprüfen und zu warten.

Das Paradoxe daran ist, dass zwei gegensätzliche Veränderungen stattgefunden haben, obwohl nur ein neues Tool eingeführt wurde. Der Prozess ist gleichzeitig technischer und weniger technisch geworden. Und die TestRolle ist ebenfalls gleichzeitig technisch und weniger technisch geworden! Außer natürlich man entscheidet sich, die Test-Rolle zu zerteilen, aber das ist keine gute Idee.

Eine auffallende Eigenschaft sowohl der technischen als auch der weniger technischen Seite ist die Wartbarkeit.

Natürlich ist Tooling ein Trend, den es schon seit einigen Jahren gibt, und es ist zu erwarten, dass er noch wachsen wird. Ich denke, dass wir als Tester viel von Entwicklern lernen können, die mit Tools arbeiten, um die Testabdeckung in Modultests zu prüfen, sowie auch mit Tools, mit denen sie ihre Database organisieren und nächtliche Tests ausführen.

In vielen Situationen sind Tester in der Lage, von Tools zu profitieren, die bereits von Entwicklern eingeführt wurden und auch von Testern verwendet werden können.

Extrapolation von Trends und ihr Effekt auf das Testen

Im Folgenden wird ein Blick auf mögliche Trends im IT-Bereich geworfen und welchen Effekt diese auf das Testen haben könnten. Ich kann nicht in die Zukunft sehen, aber ich hoffe, einige Behauptungen sind wiedererkennbar.

die Welt von morgen testen

die Welt von morgen testen

Eine Analogie

Wenn man Tabelle 1 betrachtet, kann man für sich selbst urteilen, ob man diesen Trends und den Effekten auf Tester zustimmt. Wie sieht das allgemeine Bild aus, das sich aus diesen Daten ergibt? Kann man eine Metapher für zu erwartende Änderungen finden? Vielleicht ist es mit einem Bienenstock vergleichbar. Bienen tun natürlich nur, was sie tun müssen. Aber nehmen wir mal an, wir müssten das Verhalten von Bienen programmieren. Wie würden wir das testen? Und nehmen wir mal an, genau wie die Bienen müssten nun auch Blumen und andere Teile der Natur programmiert werden und jeder könnte diese Blumen, Bäume usw. programmieren.

Wir würden wahrscheinlich einige sehr spezifische Verhaltensweisen für eine Biene definieren und dafür dann einen Test machen. Allerdings könnten wir uns nicht sicher sein, ob dies das bestmögliche Verhalten ist. Also müssten wir Tests für das Gruppenverhalten von Bienen definieren, wie zum Beispiel die Weitergabe von Informationen über Nektarquellen. Und wir würden Ziele und Teilziele definieren, um beurteilen zu können, ob das getestete und definierte Verhalten wirklich zielführend ist. In der Zwischenzeit haben die Blumenentwickler das Verhalten, die Anzahl und die Wege zu den Blumen geändert. Also müssen unsere Testfälle angepasst werden. Nach einigen dieser Änderungen bauen wir ein Tool, um Tests aus diesen Teilzielen zu generieren. Um sicherzugehen, dass alles glatt läuft, brauchen wir eine Testumgebung, die Blumen und Blumensimulatoren enthält. Wiederum brauchen die Blumenentwickler Bienensimulatoren in ihren Testumgebungen.

In der Praxis werden die meisten Beteiligten ihre Testumgebungen veröffentlichen, und eine weltweite Test-Acceptance-Umgebung wird entstehen. Natürlich ist die Qualität der programmierten Blumen für uns genauso wichtig wie die Qualität unserer Bienen. Wir werden uns also mit unseren direkten Zulieferern und Kunden auf eine Art einigen, die Qualität zu prüfen, und kontinuierlich die gemessene Qualität unserer Bienen veröffentlichen. Bienen können nichts richtig oder falsch machen, sondern nur mehr oder weniger effektiv.

Eine neue Rolle

In naher Zukunft werden technische Skills wichtiger werden. Tester werden programmieren und werden wissen müssen, wie sie auf System Interfaces statt auf User Interfaces testen können.

Auf lange Sicht wird die Rolle das Verständnis für ein sich veränderndes Modell, abstrakten Dingen Bedeutung zuzuweisen und das Einschätzen des Wertes einer Lösung beinhalten. Alles verändert sich ständig, also wird der wichtigste Skill wahrscheinlich die Fähigkeit zu lernen und anderen dabei helfen zu lernen sein. Außerdem werden das Verstehen und Priorisieren basierend auf Einschätzungen von brauchbaren Geschäftswerten wichtig werden. Die Zeit, komplexe, abstrakte Lösungen mit dem Geschäftsbesitzer zu diskutieren, wird es nicht geben. Der Tester selbst wird entscheiden müssen, wie er weitermacht, in Kombination mit dem Tooling, welches entwickelt wurde, um diese Entscheidungen zu unterstützen.

Soziale Aspekte

Diese Veränderungen in der Umgebung, dem Entwicklungsprozess, dem Tooling und so weiter haben einen Effekt auf die sozialen Aspekte der Arbeit. Wird dies andere Skills erfordern?

Nun, wenn wir die sich kontinuierlich ändernde große Gruppe von Systemen betrachten, die von einer sich verändernden Gruppe von Anbietern gemacht wurde, dann können wir uns vorstellen, dass es hilfreich ist, eine Art Reputation aufzubauen und diese zu nutzen, um kommende Änderungen vorauszusehen. Die soziale Intelligenz, die hierfür notwendig ist, hat mit einer Mischung aus (Gruppen von) Menschen und Systemen zu tun. Manche Menschen, die in Firmen mit einem großen IT-Bereich arbeiten, mögen heute schon das Bedürfnis haben, durch einen Wald von Projekten, Verbesserungen und Bugfixes zu navigieren, wo es wichtig ist, ein gutes Gespür für Dringlichkeit und Priorität zu haben. Andere verlassen sich auf dich, und du verlässt dich auf andere. Zwischen großen und kleineren Problemen zu unterscheiden, hält die gesamte Anlage gesund. Aber um zu wissen, was heute gemacht werden muss, muss man wissen, was schiefgehen wird und was nicht, was sich ändern wird und was gleich bleiben wird.

Gleichzeitig ist man Teil eines großen, komplexen Systems. Man hat eine sehr spezialisierte Aufgabe. Die eigene Arbeit kann sich mit der Zeit sehr von der Arbeit anderer unterscheiden in Bezug auf Konzepte und Aktion. Andererseits können Automatisierung, Unterstützung durch Tooling und mögliche Standardisierungen zu einer Deckungsgleichheit in der Art von Arbeit führen. Dies ist schwer vorauszusagen. Die Gefahr, dass überspezialisiert wird und der Kontakt zu anderen Themen verloren geht, kann vermieden werden, indem aktiv Rollen oder Bereiche getauscht werden, sowie auch durch Tätigkeiten, die nur indirekt mit der täglichen Arbeit zusammenhängen. Da man das ganze Leben lang lernt, werden die Kosten eines Berufswechsels nicht so hoch sein, wie sie zuerst scheinen.

Und was ist mit dem Team, in dem man arbeitet? Da sich alles ständig ändert, wird sich auch das Team ändern. Und im Zuge dessen ist zu erwarten, dass man in Zukunft Teil von mehr als nur einem Team ist. Man wird also viele soziale Kontakte und Möglichkeiten haben, aber man muss auch ständig mit neuen Leuten umgehen können müssen, außer man nimmt eine abstrakte Position ein und fokussiert sich rein auf Systeme.

Fazit

Dieser Artikel mag futuristisch scheinen. Aber manche der erwähnten Trends werden jetzt schon von einigen praktiziert. In den kommenden Jahren erwarte ich, dass automatisiertes Testen immer wichtiger wird, damit die gewünschte Funktionalität in einem sich ständig verändernden System gegeben ist. Das bedeutet, dass Tester lernen werden müssen, wie man automatisiert oder wie man eng mit Entwicklern, die das für sie tun können, zusammenarbeitet.

Wenn man den automatisierten Test hat, kann man ihn in einem Wiki veröffentlichen (wie mit Fitnesse) und anderen Leuten zum Überprüfen bereitstellen. Wenn das getan ist, warum dann nicht Testfälle als Voraussetzung nehmen?

Noch weiter in der Zukunft, sagen wir in zwanzig Jahren, erwarte ich, dass die getesteten Funktionalitäten so komplex und über Netzwerke und Systeme verteilt sind, dass Bedeutung und Wert genauso wichtig werden wie Korrektheit. Genauso wie man mehrere Wege nutzen kann, um einen weit entfernten Urlaubsort zu erreichen, so wird es auch mehrere Wege geben, um eine Transaktion zu erzielen. Wie ein Navigationssystem wird der Tester wahrscheinlich einer der Ersten sein, der durch das Systemnetzwerk navigieren muss.

Letztendlich ist zu erwarten, dass Testfälle generiert werden, die auf ausgewählten Zielen basieren, die man als Tester absichert.

Weitere Testing-Artikel im te Mag

Eine Frage der Haltung – Lösungsfokussierung im Testing

Das ultimative Werkzeug für alle zukünftigen Anforderungen

Welt von morgen testen

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kategorien

Recent Posts