Der seismische Wandel in der Art und Weise, wie wir Software testen

Die Entwicklung von Software ist ein teurer und zeitaufwändiger Prozess, bei dem monatelange harte Arbeit durch kleinste Fehler ruiniert werden kann. Unternehmen haben auf die harte Tour gelernt, wie wichtig es ist, Ihr Produkt richtig zu testen. ein einziges fehlendes Wort im Code hat dazu geführt, dass Produkte beim Start abstürzten. Es ist viel einfacher, vorbeugende Maßnahmen zu ergreifen, um diese Art von Problemen zu verhindern, als Reputationen zu reparieren, nachdem Probleme aufgetreten sind.

In dem oben zitierten Beispiel hatten die Entwickler ihre Sorgfaltspflicht erfüllt. Der Code wurde gründlich getestet, hat manuelle Tests bestanden und folgte den aktuellen Best Practices. Ein Fehler schlich sich jedoch immer noch durch und verursachte eine Katastrophe am Starttag. Wie können Unternehmen Probleme antizipieren, die auftreten, selbst wenn eine traditionelle Testmethode befolgt wird?

Zahlreiche technologische Fortschritte haben in der Welt des Softwaretestens zu einer erdbebenartigen Veränderung geführt. Diese aufregenden neuen Technologien zielen darauf ab, Entwicklern und Arbeitgebern eine größere Codeabdeckung in ihren Tests und Stabilität in ihrem Code zu bieten, als dies zuvor möglich war. Lesen Sie weiter, um mehr über diese Fortschritte zu erfahren.


Headless-Browser-Tests


Das Erstellen von Code, der auf allen Geräten und Browsern funktioniert, ist auf dem modernen Markt unglaublich wichtig. Eine Website kann vernünftigerweise davon ausgehen, dass sie von Benutzern auf iPhones, Android-Tablets, Linux-Laptops und Windows-PCs besucht wird, auf denen möglicherweise alle verschiedene Versionen verschiedener Browser ausgeführt werden. 

Diese Fülle von Geräten und Plattformen stellt eine enorme Belastung für clientseitige Tests dar. Da ständig neue Geräte auf den Markt kommen, ist es schwierig, den Überblick zu behalten. Browser-Automatisierungstools wie Selenium sind zu einer absoluten Notwendigkeit im Toolkit eines jeden Testers geworden. Headless-Browser ermöglichen es Entwicklern, Tests zu schreiben, die programmgesteuert für verschiedene Browser ausgeführt werden können, während andere Tools wie Selenium Grid es ermöglichen, diese Tests auch programmgesteuert auf viele verschiedene Gerätetypen anzuwenden.

Diese Art der Automatisierung wird auch als Service bereitgestellt, sodass viele Unternehmen die Möglichkeit nutzen können, ihre Produkte auf einer Vielzahl von Plattformen und Geräten zu testen, ohne jedes Jahr neue Testgeräte budgetieren zu müssen.


Automatische Erkennung und automatische Generierung


Künstliche Intelligenz (KI) und maschinelles Lernen haben in den letzten Jahren umfangreiche akademische Forschung erfahren, und die Anwendung dieser Werkzeuge hat zu Entwicklungen in vielen verschiedenen Bereichen der Softwareentwicklung geführt. Eine Art und Weise, wie sich diese auf Softwaretests ausgewirkt haben, ist die automatische Erkennung und automatische Generierung.

KI löst ein Problem mit dem traditionellen Ansatz für Softwaretests. Tester schreiben den Code, gegen den Software getestet wird. Während eine signifikante Codeabdeckung in Tests den Eindruck robuster, gut getesteter Software erwecken kann, ist die Testsuite nur so gut wie die darin enthaltenen Tests. Insbesondere wenn Benutzereingaben erwartet werden, ist die Anzahl möglicher Eingabekombinationen zu groß, um von einem Testteam vernünftigerweise erwartet werden zu können. 

Die Anwendung von KI beim Testen hat zur Entstehung von automatischer Erkennung und automatischer Generierung geführt. Dies sind Tools, die sich auf maschinelles Lernen stützen, um erwartete Problembereiche im Code zu erkennen (z. B. wo Benutzereingaben erforderlich sind) und dann Tests generieren, um diese erwarteten Probleme abzudecken.



Mehr lesen: Vorhersagen für 2021: Asana, Code First Girls, Fiverr & More



KI-Toolsets können verschiedene Arten von Daten verwenden: Produkt- und Nutzungsanalysen zur Erfassung von Ereignismetadaten zur Erstellung von Seitenobjektmodellen, Serverprotokolle, API-Aufrufe und andere zur automatischen Erkennung von Testfällen: je nach Robustheit dieser Daten die Erfahrung der KI Toolset und Umfang des Zugriffs auf eine Testumgebung können dieselben Toolsets automatisch Tests generieren, die für die Zielumgebung spezifiziert sind.

Die Automatisierung dieser ansonsten zeitaufwändigen Prozesse gibt Testern Zeit, die sie anderswo verbringen können, und bietet gleichzeitig ein Niveau an Codeabdeckung, das sonst schwer zu erreichen ist – und möglicherweise auch dazu beiträgt, organisatorisches Burnout zu verhindern. 


Software.

Aufnehmen und Abspielen


Maschinelles Lernen wurde auch auf Aufnahme- und Wiedergabetests angewendet. Diese Art des Testens verwendet im Wesentlichen Makros, um eine Reihe von Eingaben aufzuzeichnen, die dann programmgesteuert wiedergegeben und auf Software angewendet werden können, um sie als Benutzereingabe für Testzwecke zu verwenden. Das Problem bei diesen Tests besteht darin, sie zu definieren und sie mit Änderungen während der Entwicklung der Software auf dem neuesten Stand zu halten.

Viele Aufnahme- und Wiedergabetests verlassen sich darauf, einer erwarteten Reihe von DOM-Elementen zu folgen. Es wird ein Eingabefeld mit einer bestimmten ID erwartet, in das bestimmte Eingabedaten eingetragen werden müssen. Das Problem ist, dass diese oft auf UI-Elementen beruhen, die sich im Laufe der Softwareentwicklung ändern können. Wenn das erwartete Eingabefeld nicht mehr vorhanden ist, müssen diese Tests neu geschrieben werden, oder sie schlagen fehl.

Maschinelles Lernen ermöglicht es Testern, diese Probleme mit Aufzeichnungs- und Wiedergabetests zu überwinden. Beispielsweise beziehen sich die meisten Tester auf DOM-Elemente nach ID oder möglicherweise nach einem Klassen-Tag. ID-Attribute sollen eindeutig sein, aber in der Praxis ist das nicht immer der Fall. Maschinelles Lernen versteht ganzheitlich alle Attribute eines DOM-Elements und verwendet diese, um es zum Testen zu identifizieren. Diese Methode heilt sich selbst, denn wenn sich ein Attribut ändert, der Rest jedoch gleich bleibt, kann sie ihr Verständnis des Elements aktualisieren und Änderungen aufnehmen, ohne das Testen zu unterbrechen.


Regressionstests


Ein wichtiger Teil des Testens neuer Funktionen besteht nicht nur darin, zu testen, ob sie funktionieren, sondern auch bestehenden Code nicht beschädigen. Regressionstests sind nicht neu, aber die Anwendung von KI auf den Prozess hilft, den Prozess massiv zu beschleunigen. Wenn neue Funktionen hinzugefügt werden und die Software wächst, wächst auch die Anzahl der Regressionstests und die Zeit, die für ihre Ausführung benötigt wird.

Durch Cloud-Verarbeitung unterstütztes maschinelles Lernen gibt Entwicklern die Rechenleistung, um rechenintensive Aufgaben mühelos zu bewältigen. Die Größe und Komplexität einer Testsuite ist ein viel kleineres Problem, wenn die Prozess ist automatisiert, und maschinelles Lernen kann angewendet werden, um kleine Änderungen und Anomalien zu erkennen, die ansonsten schwer manuell zu identifizieren sind.


Die Zukunft des Testens


Das Testen ist ein kostspieliges und zeitraubendes Unterfangen. Softwaretests finden nicht im luftleeren Raum statt, sondern vor dem Hintergrund erwartungsvoller Kunden und Führungskräfte. Es muss ein Gleichgewicht gefunden werden, das dem Testen von so viel Code wie möglich in Anbetracht der bereitgestellten Zeit Priorität einräumt. Jedes oben erwähnte Element stellt eine individuell kleine Anpassung an das Testen dar, aber als Ganzes angewendet, schafft KI Möglichkeiten, die Testabdeckung zu erhöhen, die Softwarerobustheit zu verbessern und Testerzeit zu sparen. Der Wert, den KI für das Testen bringt, dürfte mit der Zeit nur noch zunehmen, wenn immer mehr Unternehmen sie auf ihre Testprozesse anwenden.




Um mehr über ProdPerfect zu erfahren, besuchen Sie www.prodperfect.com


Erik Nebel

Erik Fogg ist Chief Operating Officer bei ProdPerfect, einer autonomen E2E-Regressionstestlösung, die Daten aus Live-Benutzerverhaltensdaten nutzt.

Erzielen Sie Produktivitäts- und Effizienzsteigerungen durch Datenmanagement

Russ Kennedy • 04. Juli 2023

Unternehmensdaten sind seit vielen Jahren eng mit Hardware verknüpft, doch jetzt ist ein spannender Wandel im Gange, da die Ära der Hardware-Unternehmen vorbei ist. Mit fortschrittlichen Datendiensten, die über die Cloud verfügbar sind, können Unternehmen auf Investitionen in Hardware verzichten und das Infrastrukturmanagement zugunsten des Datenmanagements aufgeben.