„Dies ist die erstaunlichste Anwendung des maschinellen Lernens, die ich je gesehen habe.“
Mike Krieger, Mitbegründer von Instagram.
Die Worte von Mike Krieger sind keine Übertreibung. ML kann zwar einige bemerkenswerte Dinge in Bezug auf Datenanalyse und -einblicke leisten, aber GitHub Copilot ist aufgrund des potenziellen Nutzens, den es Produktentwicklern auf der ganzen Welt bieten kann, ein absoluter Wendepunkt.
Coding Copilots und generative KI helfen Teams dabei, enorme Vorteile zu erschließen, z. B. die Beschleunigung des Softwareentwicklungszyklus auf ein bisher unvorstellbares Tempo. Die Auswirkungen der Technologie auf RPA und Softwaretests sind jedoch zwei der spannendsten Bereiche dieser erstaunlichen Technologie.
In diesem Artikel sehen wir uns an, wie Coding Copilots und generative KI die Welt des Softwaretests und der RPA in der Gegenwart verändert haben, bevor wir ihre zukünftigen Auswirkungen auf die Technologie untersuchen.
Kopiloten und generative KI in
Software-Entwicklung: Eine Fibel
Generative KI und programmierende Kopiloten sind relativ neu in der Softwareentwicklungslandschaft. Bevor wir ihren Einfluss auf den Raum erörtern, lohnt es sich, einen Blick auf ihre Hintergründe und ihre Arbeitsweise zu werfen.
1. KI-gestützte Autocodierer
Große Sprachmodelle (LLM) haben sich in den letzten Jahren bemerkenswert verbessert. Da die Größe der Datensätze und die Rechenleistung exponentiell zugenommen haben, ist auch die Qualität der Ergebnisse gestiegen.
Es gibt viele Branchen, die von LLMs profitieren können. Zu den meistgenannten gehören die Erstellung von Texten, Bildern, Videos und anderen Medienformen. Auch wenn diese Anwendungsfälle beeindruckend sind, gibt es doch Auswirkungen für Entwickler, die vielleicht noch viel interessanter sind.
Es gibt eine Reihe von LLM-Autokodierern auf dem Markt. GitHub CoPilot ist jedoch vielleicht die bekannteste und erfolgreichste. Ein großer Teil des Grundes ist, dass es auf dem GitHub-Repository trainiert wird. Es hat Zugang zu Millionen von Beispielen für Open-Source-Code, Best Practices, Anwendungsarchitekturen und mehr, von denen es lernen kann, und kann so hochwertige und vielseitige Ergebnisse liefern.
2. Wie funktionieren Kopiloten bei der Codierung?
Eine der einfachsten Möglichkeiten, über die Funktionsweise von Co-Piloten zu sprechen, ist ein Blick auf das führende Produkt in diesem Bereich, GitHub CoPilot. Die Anwendung basiert auf dem ChatGPT-3-Modell von OpenAi.
Genau wie ChatGPT und ähnliche LLMs basiert CoPilot auf Milliarden von Parametern. Während der Entwicklung von ChatGPT-3 hat OpenAI begonnen, ein spezielles Kodierungsprogramm namens OpenAI Codex zu entwickeln. Microsoft hat exklusiven Zugang zu dem Produkt erworben.
Der springende Punkt ist jedoch, dass Microsoft bereits Eigentümer von GitHub ist. Wenn Sie ein Programmierer sind, wissen Sie alles über GitHub. Im Grunde handelt es sich um eine webbasierte Plattform, die für die Versionskontrolle und die Zusammenarbeit bei Softwareentwicklungsprojekten verwendet wird. Sie schulten den OpenAI Codex an der GitHub-Bibliothek, die Millionen von Zeilen öffentlichen Open-Source-Codes enthält.
CoPilot nutzt maschinelles Lernen, um Muster und Beziehungen zwischen Codezeilen zu finden. Genau wie ChatGPT betrachtet es ein Wort oder eine Zeile und berechnet die Wahrscheinlichkeit, was als Nächstes kommen sollte, auf der Grundlage eines riesigen Bestands an historischen Daten.
Die Stärke der KI-Copiloten liegt in ihrer Fähigkeit, Codeausschnitte vorzuschlagen, wenn Entwickler sie bearbeiten. Stellen Sie sich das wie eine verbesserte Autovervollständigung für die Codierung vor. Wenn der Programmierer eine Codezeile eingibt, vergleicht der LLM den Anfang des Codes mit seiner riesigen Bibliothek früherer Projekte. Von dort aus schlägt es probabilistische Zeilen und neue Codezeilen vor.
Der offensichtliche Vorteil ist, dass Entwickler durch diese automatische Vervollständigung unglaublich viel Zeit sparen können. Dies steigert die Produktivität und in vielen Fällen auch die Genauigkeit des Codes.
3. Was ist mit generativer KI für Programmierung und Entwicklung?
Wie Sie aus der Geschichte von CoPilot ersehen können, haben generative KI und Copiloten ähnliche Wurzeln. Beide Technologien nutzen statistische Wahrscheinlichkeiten, um auf der Grundlage unterstellter Informationen Vorhersagen über die Bedürfnisse der Nutzer zu treffen.
Der große Unterschied zwischen Copilot-Software und generativer KI besteht jedoch darin, dass letztere prompt-basiert ist. Kurz gesagt bedeutet dies, dass der Benutzer eine Reihe von schriftlichen Anweisungen in die Maschine eingibt, und diese gibt den Inhalt aus. Wie jeder weiß, der ChatGPT oder ähnliche Anwendungen verwendet hat, kann diese Ausgabe in Form von Text, Bildern, Video oder Code erfolgen.
Obwohl die Methoden, die Codierer für die automatisierte Codierung verwenden, unterschiedlich sind, können wir sie unter dem ähnlichen Begriff der KI-unterstützten automatisierten oder generativen Codierung zusammenfassen.
Die Entwicklung des Softwaretestens
Softwaretests sind reaktionsfähig und entwickeln sich ständig weiter. Innerhalb weniger Jahrzehnte hat sie sich verändert und angepasst, um neuen Anforderungen und technologischen Fortschritten gerecht zu werden.
1. Manuelle Prüfung:
In den Anfängen des Softwaretestens wurde manuell getestet. Diese Art des Testens war teuer und zeitaufwändig, da die QS-Experten die Software mit einem feinen Kamm durchgehen mussten, indem sie eine Reihe von Testfällen entwickelten, die Ergebnisse ausführten und aufzeichneten, Korrekturen planten und den Prozess wiederholten.
Die Sicherstellung, dass alle möglichen Szenarien und Situationen durch diese Tests abgedeckt wurden, war eine große Herausforderung, und wenn man den Zeit- und Kostenaufwand hinzurechnet, waren die manuellen Tests ressourcenintensiv. Außerdem war es sehr anfällig für menschliches Versagen, was durch die begrenzten Vertriebsmöglichkeiten noch verstärkt wurde, so dass es schwierig war, unentdeckte Fehler schnell zu beheben.
2. Skriptbasierte Tests:
Skriptbasierte Tests stellten für die QA-Gemeinschaft einen großen Schritt nach vorn dar. Anstatt den Code und die Testszenarien manuell durchzugehen, konnten Entwickler Programme schreiben, die Software automatisch testen konnten. Das große Plus dabei war, dass das Testen effizienter und weniger anfällig für menschliche Fehler wurde. Um dies zu erreichen, war jedoch eine qualifizierte, präzise und zeitintensive Planung und Kodierung erforderlich, um eine umfassende Abdeckung zu gewährleisten.
3. Testautomatisierung:
Die Testautomatisierung war die nächste Evolution des Testens. Tools wie ZAPTEST konnten den Programmierern alle Vorteile von skriptgesteuerten Tests bieten, allerdings mit einer Schnittstelle ohne Code. Auch hier waren die wesentlichen Vorteile Zeitersparnis, wiederverwendbare und anpassbare Tests, UI- und API-Tests sowie plattform- und geräteübergreifende Tests.
4. Datengesteuertes Testen:
Das datengesteuerte Testen war die Lösung für das Problem des Testens von Software, die verschiedene Datensätze verarbeitet. Auch hier handelt es sich um eine Form der Testautomatisierung, aber diese Methode beinhaltet die Erstellung von Testskripten und deren Ausführung anhand zugewiesener Datensätze. Diese Art des Testens ermöglichte es den Entwicklern, schneller zu arbeiten, Tests zu isolieren und den Zeitaufwand für die Wiederholung von Testfällen zu reduzieren.
5. Generative KI-Tests:
Generative KI-Tests sind die neueste Innovation im Softwaretest. Durch den Einsatz von LLMs können QA-Teams Testfälle und Testdaten erstellen, die den Testprozess beschleunigen. Diese Testfälle sind äußerst flexibel und editierbar, was den Entwicklern die Wiederverwendung und Wiederverwendung von Tests erleichtert und den Umfang der Tests erheblich erweitert.
Heutiger Einsatz von Kopiloten und
Generative KI in Softwaretests und RPA
Generative KI und Copiloten haben einen großen Einfluss auf das Testen von Software gehabt. Diese Werkzeuge haben jedoch nicht die Programmierer ersetzt, sondern die Tester ergänzt. Kurz gesagt, sie helfen den Entwicklern, schneller und effizienter zu werden, und steigern in vielen Fällen die Qualität der Tests.
Die
Stack Overflow Entwickler-Umfrage von 2023
bietet einige Einblicke in den aktuellen Einsatz von KI-Tools in der Software-Entwicklungsgemeinschaft. Einer der interessantesten Teile der Umfrage ergab, dass zwar etwas mehr als die Hälfte aller Entwickler angaben, an KI-Tools für Softwaretests interessiert zu sein, aber weniger als 3 % sagten, dass sie diesen Tools vertrauten. Darüber hinaus gab nur 1 von 4 Unternehmen an, dass sie derzeit KI-Tools für Softwaretests einsetzen.
Interessant an diesen Statistiken ist, dass sie zeigen, dass der Einsatz von KI-Tools noch nicht weit verbreitet ist und dass frühe Anwender noch einen Vorteil haben können.
1. Anwendungsfälle für Copilot und generative KI bei Softwaretests und RPA
Copiloten und generative KI haben Auswirkungen auf alle Bereiche der Softwareentwicklung. Hier sind einige der Möglichkeiten, wie die Technologie bei Softwaretests und RPA helfen kann.
Anforderungsanalyse
Die Anforderungsanalyse ist ein wichtiger Bestandteil des Softwareentwicklungszyklus. Der Prozess umfasst das Verständnis der Anforderungen der Interessengruppen und der verschiedenen Funktionen, die für die Entwicklung einer Software erforderlich sind. Generative KI kann Teams bei der Ideenfindung helfen, indem sie neue Ideen und Perspektiven aufzeigt.
Planung von Prüfungen
Sobald die Testanforderungen bekannt sind, müssen die QA-Teams einen Zeitplan aufstellen, um eine angemessene Testabdeckung zu gewährleisten. Diese Art von Arbeit erfordert Fachwissen und Erfahrung, aber Generative AI kann Teams durch Beispiele und Leitfäden unterstützen und Empfehlungen für bestimmte Tools und Best Practices für ihre speziellen Anforderungen geben.
Erstellung von Testfällen
QA-Teams können LLMs verwenden, um Code, Benutzeranforderungen und Softwarespezifikationen zu analysieren, um die dem System zugrunde liegenden Beziehungen zu verstehen. Sobald die KI die Eingaben und Ausgaben sowie die erwarteten Verhaltensweisen der Software kennt, kann sie mit der Erstellung von Testfällen beginnen, die die Software testen.
Die Vorteile gehen über Zeitersparnis und manuelle Kodierung hinaus. Die Erstellung von KI-Testfällen kann auch zu einer umfassenderen Abdeckung führen, da sie Bereiche untersuchen kann, die QA-Ingenieure möglicherweise nicht in Betracht ziehen, was zu zuverlässigeren Builds führt.
Auffinden und Beheben von Fehlern
Mithilfe von maschinellem Lernen können QA-Experten die Zeit, die zum Auffinden und Beheben von Fehlern benötigt wird, erheblich verkürzen. Bei Softwaretests sind viele Fehler leicht zu finden. In vielen Fällen ist dies jedoch ein mühsamer und zeitaufwändiger Prozess. Generative KI kann Prüfungen in einem Bruchteil der Zeit durchführen, die manuelle Mitarbeiter benötigen, und selbst die hartnäckigsten Fehler aufdecken. Darüber hinaus können diese KI-Tools auch die von ihnen identifizierten Fehler beheben, was den QA-Teams unendlich viel Zeit spart.
UI-Tests
Generative KI-Tools können eine Reihe von Benutzerverhalten und Interaktionen mit Softwaresystemen simulieren. Die Methoden können den Entwicklungsteams die Gewissheit geben, dass ihre Schnittstelle für ein breites Spektrum von Mensch-Computer-Anwendungen geeignet ist. Darüber hinaus kann die generative KI auch Daten der Benutzeroberfläche und Heatmaps analysieren und Vorschläge zur Verbesserung der Benutzeroberfläche und zur Steigerung der Benutzerfreundlichkeit machen.
Die Zukunft der Kopiloten und der generativen KI
in Softwaretests und RPA
Während der heutige Einsatz von Copiloten und generativer KI in der Softwareautomatisierung bereits aufregend ist, hält die Zukunft noch mehr Versprechen bereit.
Die Zukunft von Copilot und generativer KI hängt von den Verbesserungen ab, die an den Produkten vorgenommen werden können. Eine aktuelle Studie der Purdue University mit dem Titel Wer beantwortet sie besser? Eine eingehende Analyse der ChatGPT- und Stack Overflow-Antworten auf Fragen zur Softwareentwicklung unterstreicht einige der Grenzen der generativen KI-Modelle.
Die Forscher gaben ChatGPT über 500 Fragen von Stack Overflow. Das KI-Tool antwortete bei mehr als der Hälfte ungenau. Eines der wichtigsten Probleme, das die Forscher feststellten, war, dass die KI am häufigsten versagte, weil sie die Fragen nicht richtig verstand. Dieses Detail unterstreicht die Bedeutung von Prompt-Engineering innerhalb der generativen KI.
Darüber hinaus haben sowohl Google als auch Amazon in diesem Jahr unabhängige Tests durchgeführt, um die Qualität von generativen KI-Tools in einer Interviewumgebung zu untersuchen. In beiden Fällen gelang es dem Tool, die Testfragen gut genug zu beantworten, um die Position zu erhalten, wie von
CNBC
und
Business Inside
bzw…
Es ist also klar, dass wir bei dieser Technologie an einem Punkt angelangt sind, an dem das Potenzial vorhanden ist, aber noch einige Kleinigkeiten ausgebügelt werden müssen. Das Ausmaß, in dem diese Instrumente in den letzten Jahren verbessert wurden, stimmt uns zuversichtlich, dass sie das erforderliche Niveau erreichen werden, und zwar wahrscheinlich früher als geplant.
Nun können wir einen Blick auf einige der Bereiche werfen, in denen diese Technologien die Zukunft der Softwareentwicklungstests beeinflussen werden.
1. Hyperautomation
Hyperautomation beschreibt ein Ziel in der Entwicklung des Unternehmens, in dem jeder Prozess, der automatisiert werden kann, auch automatisiert wird. Es handelt sich um einen ganzheitlichen Produktivitätsansatz, der in hohem Maße miteinander vernetzt ist.
In Bezug auf die Softwareentwicklung ist es nicht schwer, sich ein zentralisiertes System vorzustellen, das die Anforderungen der Geschäftsprozesse überwacht. Das System wird den Bedarf und die Effizienz ermitteln und ständig Bereiche identifizieren, die mit Hilfe von Technologie verbessert werden müssen.
Im Zuge der Weiterentwicklung von Unternehmen werden diese zentralisierten Systeme generative KI nutzen, um Anwendungen zu entwickeln, die Engpässe und Ineffizienzen automatisch beheben oder bestimmte Aufgaben an Ingenieure weitergeben, damit diese sie erledigen.
2. Entwurf von Software-Architekturen
Mit ausreichenden Daten könnten KI-Tools die besten Praktiken der Softwarearchitektur verstehen und Wege finden, diese Entwürfe für maximale Effizienz zu verbessern. Beim maschinellen Lernen geht es darum, Muster und Beziehungen zu finden, die den menschlichen Verstand übersteigen.
Wenn KI-Tools über ausreichende Kenntnisse einer Vielzahl von Anwendungen verfügen, können wir sie anweisen, frühere Architekturen an neue Anforderungen anzupassen, was zu effizienteren Konstruktionen oder sogar zu Ideen führt, die sonst nicht in Betracht gezogen würden.
3. Modernisierung von Altsystemen
Auch wenn keine Software jemals perfekt ist, gibt es doch viele Tools, die nach wie vor hervorragende Arbeit leisten und so tief in die Infrastruktur eines Unternehmens eingebettet sind, dass sie nur schwer zu ersetzen sind. Die Anpassung dieser Systeme kann mühsam sein, vor allem wenn sie mit einem Softwarecode geschrieben wurden, der nicht mehr zeitgemäß ist.
In Zukunft werden generative KI-Tools in der Lage sein, diesen Code in die aktuelle Sprache zu konvertieren, so dass die Teams ihre Altsysteme beibehalten und in vielen Fällen sogar verbessern können.
4. Verbesserung der Low-Code- und No-Code-Entwicklung
Eine der oben genannten Herausforderungen bei der Automatisierung von Softwaretests mit generativen KI-Tools bestand darin, dass der Programmierer nicht über das Wissen und die Erfahrung verfügte, um die Ausgabe zu überprüfen.
KI-Copiloten werden dazu beitragen, Low-Code-Tools zu verbessern, indem sie bessere Vorschläge machen, die zu robusten Anwendungen führen. Ausgefeilte Testwerkzeuge werden den menschlichen Anwendern freien kreativen Lauf lassen, während sie ihre Arbeit ständig validieren und nichttechnischen Fachleuten die Möglichkeit geben, die von ihnen benötigten Anwendungen zu erstellen.
Vorteile der generativen KI beim Softwaretest
Die Verwendung von generativer KI für Softwaretests hat viele Vorteile, die sie zu einer attraktiven Option für Entwicklungsteams machen, die schneller arbeiten wollen, ohne Kompromisse bei der Qualität einzugehen.
1. Beschleunigung des Lebenszyklus der Softwareentwicklung
Die Entwickler stehen unter ständigem Druck, lange zu arbeiten, um sicherzustellen, dass die Software und neue Funktionen rechtzeitig auf den Markt kommen. Agile/DevOps-Methoden haben zwar dafür gesorgt, dass die Entwicklung effizienter wird, aber es gibt immer noch einzelne Entwicklungsphasen, die von einer weiteren Rationalisierung profitieren können.
Mit generativen KI-Tools können Testteams verschiedene SDLC-Phasen angehen, von der Erstellung von Prototypen bis zum UI-Test.
2. Umfassende Fehlererkennung
Eine der leistungsstärksten Anwendungen von KI im Bereich Softwaretests ist die Fähigkeit der Technologie, große Datensätze zu vergleichen. ML-Tools können riesige Datensätze (einschließlich Code) analysieren, um ein Repository von Informationen und erwarteten Modellen aufzubauen.
Wenn Entwickler ihren Code festschreiben, können sie ihn mit diesen Modellen vergleichen, die unerwartete Szenarien, Abhängigkeiten und Schwachstellen aufzeigen und so für einen besseren Code während des gesamten Entwicklungsprozesses sorgen.
3. Verbesserte Testabdeckung
Tools für das maschinelle Lernen werden entwickelt, um große Datenmengen zu analysieren und zu verstehen. Bei der Anwendung auf Softwaretests können die Teams den Umfang ihrer Softwaretests erhöhen. Die Vorteile gehen weit über die Einsparung menschlicher Arbeitskraft hinaus; KI führt auch zu einer weitaus umfassenderen Art von Tests, die eine bessere Fehlererkennung in einer Reihe komplexer Szenarien ermöglicht.
4. Geringere Kosten
Verglichen mit der Einstellung eines Teams von QA-Ingenieuren und deren Einsatz für sich wiederholende und zeitaufwändige Softwaretestaufgaben sind generative KI und RPA schneller und kostengünstiger.
Da die Welt der Softwareentwicklung immer wettbewerbsfähiger wird, wird es immer wichtiger, Wege zu finden, um qualitativ hochwertige und langlebige Produkte im Rahmen des Budgets zu liefern. Generative KI-Tools und Copiloten können die Abhängigkeit von Ingenieuren verringern und es ihnen ermöglichen, wertorientierte Arbeit zu leisten, was zu weniger aufgeblähten Builds führt.
Bedeuten generative KI-Tools das Ende?
von menschlichen Software-Ingenieuren?
Trotz ihrer offensichtlichen Vorteile kann jedes Automatisierungswerkzeug bei den Arbeitnehmern Ängste vor der Zukunft auslösen. Dies ist zwar eine normale Reaktion, aber die Geschwindigkeit und der Umfang der generativen KI bedeuten, dass die Bedenken noch größer sind als sonst. Diese Tools können zwar viele Aufgaben automatisieren, aber nicht alle Aufgaben von Softwareingenieuren übernehmen. Für Ingenieure und Führungskräfte ist es wichtig, die Möglichkeiten und Grenzen der Technologie zu kennen.
Das erste, was man sich merken sollte, ist, dass KI-gestützte Testautomatisierungs-Tools schon seit geraumer Zeit auf dem Markt sind. Die benutzerfreundliche Natur der generativen KI ermöglicht jedoch eine größere Flexibilität.
Eines der ersten Dinge, die wir bedenken müssen, ist, dass generative KI am besten für Ergebnisse funktioniert, die überprüft werden können. Dies ist ein wichtiger Punkt. Es liegt in der Natur der Ausbildung von LLMs, dass sie ihr Bestes tun werden, um Ihnen eine Antwort zu geben, auch wenn das gelegentlich bedeutet, dass sie Fakten, Referenzen und Argumente „halluzinieren“.
Wenn Sie über ausreichende Kenntnisse in der Programmierung verfügen, können Sie jeden Text, den die generative KI ausgibt, lesen und überprüfen und mögliche Fehler erkennen. Wenn Sie ein „Citizen Coder“ sind, der generative KI verwendet, anstatt selbst zu programmieren, werden Sie nicht in der Lage sein, diese Fehler zu erkennen.
Aus diesem Blickwinkel betrachtet, werden qualifizierte Ingenieure immer noch ein wichtiger Bestandteil des Ökosystems der Softwareentwicklung sein. Sie müssen nach wie vor Prüfungen im aufsichtsrechtlichen und praktischen Sinne durchführen.
Eine weitere Einschränkung der generativen KI für Softwaretests betrifft mobile Tests. ChatGPT ist zum Beispiel eine gute Option für das Testen der Benutzeroberfläche von Websites. Es hat jedoch keinen Zugang zu verschiedenen mobilen Geräten. Bei so vielen verschiedenen Handys und Modellen auf dem Markt bleibt sie hinter aktueller Testautomatisierungssoftware wie ZAPTEST zurück. Auch dieses Problem ist keine kleine Hürde. Mehr als
die Hälfte der gesamten Internetnutzung erfolgt über das Handy
und diese Zahl steigt jedes Jahr.
Auch wenn die generative KI den Entwicklern viele Aufgaben abnehmen wird, wird sie diese Fachleute nicht überflüssig machen, ohne dass sich die Testinfrastruktur und die Fähigkeit, die Ergebnisse zu überprüfen, grundlegend ändern.
Abschließende Überlegungen
Softwaretests und RPA sind auf einem ständigen Weg der Verbesserung. Mit dem Aufkommen neuer Technologien und Methoden übernehmen beide Disziplinen die besten Praktiken, damit QA-Teams schnellere und umfassendere Tests zu einem Bruchteil der Kosten manueller Tests durchführen können.
Während die Verbesserung des Testumfangs und die Verringerung menschlicher Fehler und Kosten zu den offensichtlichen Vorteilen des KI-gestützten Testens gehören, hilft es den Teams auch, einen kontinuierlichen Integrations- und Deployment-Pipeline (CI/CD)-Ansatz zu verfolgen.
Da die Erwartungen der Verbraucher und der Wettbewerb höher sind als je zuvor, bietet die generative KI den Teams eine Möglichkeit, schnelle und effiziente Tests ohne Qualitätseinbußen durchzuführen.