Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Parasoft-Blog
Es wurde viel über künstliche Intelligenz gesagt und wie sie unsere Arbeitsweise verändert. Welchen Stellenwert hat KI beim Softwaretesten? Dieser Beitrag zeigt, wie KI dabei hilft, robuste Softwaretests zu erreichen.
Zum Abschnitt springen
Die Entwicklung künstlicher Intelligenz (KI) verändert die Technologielandschaft weiterhin grundlegend. Ihre Anwendung in verschiedenen Bereichen der Softwareentwicklung nimmt stetig zu. Ein Bereich der Softwareentwicklung, in dem die Einführung von KI Fortschritte ermöglichen kann, ist das Softwaretesting.
Softwaretests sind entscheidend, um sicherzustellen, dass Softwareprodukte veröffentlicht werden, die sowohl Compliance-Standards als auch die Qualitätsanforderungen der Benutzer erfüllen. Da es jedoch viele Permutationen rund um den Einsatz künstlicher Intelligenz gibt, werden wir tief in die Aufdeckung dessen eintauchen, was KI beim Softwaretesten ist.
Lass es uns herausfinden.
Künstliche Intelligenz ist eines der meistgenutzten Schlagworte auf dem digitalen Markt. „KI“ beschwört Bilder von Dingen wie allmächtigen Supercomputern herauf, die darauf aus sind, Menschen zu vernichten, Sprachassistenten wie Alexa oder Siri, Computerschachgegner und selbstfahrenden Autos.
Wikipedia definiert KI-Forschung als „ …die Untersuchung von ‚intelligenten Agenten‘: jedes Gerät, das seine Umgebung wahrnimmt und Maßnahmen ergreift, die seine Chancen auf das erfolgreiche Erreichen seiner Ziele maximieren. “ Das ist aber etwas zu abstrakt.
Ich verstehe unter KI die Fähigkeit eines Computerprogramms oder einer Maschine zu denken (selbst zu schlussfolgern) und zu lernen (Daten zu sammeln und zukünftiges Verhalten zum Vorteil zu verändern).
In dieser Definition sehen wir etwas Bedeutenderes im Kontext dessen, was KI für Softwareentwicklungstools und -technologien bedeutet.
Beim Softwaretesten wird Software bewertet, um sicherzustellen, dass sie ihre Aufgabe effizient erfüllen kann. Dabei werden Softwareinfrastrukturen einer Reihe funktionaler und nicht funktionaler Testszenarien unterzogen. Wenn Teams Software testen, können sie Laufzeitfehler, Skalierbarkeitsprobleme, Sicherheitslücken und mehr entdecken und beheben.
Der Softwaretestprozess ist in der Regel sehr anspruchsvoll, daher ist Automatisierung erforderlich. Damit die Softwareautomatisierung jedoch hocheffizient und nahtlos ist, muss KI integriert werden.
Der Einsatz von KI in der Softwareentwicklung entwickelt sich noch, aber das Niveau, auf dem sie derzeit im Bereich des automatisierten Softwaretests eingesetzt wird , ist niedriger als in fortgeschritteneren Arbeitsbereichen wie selbstfahrenden Systemen oder sprachgesteuerter Bedienung, maschineller Übersetzung und Robotik.
Der Einsatz von KI in Softwaretestwerkzeugen zielt darauf ab, den Softwareentwicklungszyklus (SDLC) zu vereinfachen. Durch die Anwendung von logischem Denken, Problemlösungsfähigkeiten und in einigen Fällen maschinellem Lernen kann KI dazu beitragen, monotone und mühsame Aufgaben in der Entwicklung und im Test zu automatisieren und deren Umfang zu reduzieren.
Sie fragen sich vielleicht: „Können Testautomatisierungstools das nicht bereits?“ Natürlich verfügen Testautomatisierungstools bereits über KI, aber sie haben ihre Grenzen.
Wo KI in der Softwareentwicklung glänzt, ist, wenn sie angewendet wird, um diese Einschränkungen zu beseitigen, sodass Tools zur Automatisierung von Softwaretests Entwicklern und Testern noch mehr Wert bieten können. Der Wert der KI ergibt sich aus der Reduzierung der direkten Beteiligung des Entwicklers oder Testers an den alltäglichsten Aufgaben. Wir haben immer noch einen großen Bedarf an menschlicher Intelligenz bei der Anwendung von Geschäftslogik, strategischem Denken, kreativen Ideen und dergleichen.
Bedenken Sie beispielsweise, dass die meisten, wenn nicht alle Testautomatisierungstools Tests für Sie ausführen und Ergebnisse liefern. Die meisten wissen nicht, welche Tests sie durchführen sollen, also führen sie alle oder einen bestimmten Satz aus.
Was wäre, wenn ein KI-fähiger Bot den aktuellen Stand des Teststatus, die letzten Codeänderungen, die Codeabdeckung und andere Metriken überprüfen und dann entscheiden könnte, welche Tests ausgeführt und für Sie ausgeführt werden sollen?
Das Einbringen von Entscheidungen auf der Grundlage sich ändernder Daten ist ein Beispiel für die Anwendung von KI. Gute Nachrichten! Parasoft behandelt automatisierte Softwaretests auf dieser Ebene.
Also, was ist mit maschinellem Lernen?
Maschinelles Lernen (ML) kann die KI erweitern, indem Algorithmen angewendet werden, die es dem Tool ermöglichen, sich automatisch zu verbessern, indem umfangreiche Datenmengen gesammelt werden, die durch Tests erzeugt werden.
ML-Forschung ist eine Teilmenge der gesamten KI-Forschung mit Schwerpunkt auf Entscheidungsfindungsmanagement auf der Grundlage zuvor beobachteter Daten. Dies ist insgesamt ein wichtiger Aspekt der KI, da Intelligenz eine Änderung der Entscheidungsfindung erfordert, wenn sich das Lernen verbessert. In Softwaretestwerkzeugen ist maschinelles Lernen jedoch nicht immer erforderlich. Manchmal lässt sich ein KI-fähiges Tool am besten manuell an die Organisation anpassen, die das Tool verwendet, und dann kann jedes Mal die gleiche Logik und Argumentation angewendet werden, unabhängig vom Ergebnis.
In anderen Fällen ist die Datenerfassung der Schlüssel zum Entscheidungsprozess, und maschinelles Lernen kann äußerst wertvoll sein, da zunächst einige Daten erforderlich sind und diese dann verbessert oder angepasst werden, wenn mehr Daten erfasst werden. Beispielsweise können Codeabdeckung, statische Analyseergebnisse, Testergebnisse oder andere Softwaremetriken im Laufe der Zeit die KI über den Status des Softwareprojekts informieren.
KI und ML spielen eine Schlüsselrolle in Parasofts Plattform für kontinuierliches Qualitätstesting . Sie sind wichtige Forschungs- und Entwicklungsbereiche bei Parasoft. Unsere Erkenntnisse eröffnen uns immer wieder neue und spannende Wege, diese Technologien in unsere Plattform zu integrieren und die Testautomatisierung in jedem Schritt des Softwareentwicklungszyklus (SDLC) zu optimieren. Im Folgenden stellen wir Ihnen einige Beispiele vor, wie wir sie eingesetzt haben.
Eine der größten Hürden für die erfolgreiche Einführung statischer Analysetools ist die Verwaltung einer Vielzahl von Warnungen und der Umgang mit Fehlalarmen (Warnungen, die keine tatsächlichen Fehler darstellen). Softwareteams, die bestehende oder ältere Codebasen analysieren, haben oft Schwierigkeiten mit den ersten Ergebnissen der statischen Analyse und lassen sich davon so sehr abschrecken, dass sie keine weiteren Anstrengungen unternehmen. Ein Grund für diese Überforderung ist die Vielzahl an Standards, Regeln (Prüfmechanismen), Empfehlungen und Metriken, die moderne statische Analysetools bieten.
Softwareentwicklungsteams haben individuelle Qualitätsanforderungen. Es gibt keine allgemeingültigen Empfehlungen für Prüfer oder Codierungsstandards. Jedes Team hat seine eigene Definition von „falsch positiv“, was oft eher „egal“ als „technisch falsch“ bedeutet. Die Continuous Quality Testing Platform von Parasoft umfasst eine zentralisierte Berichts- und Analyselösung namens DTP. Diese nutzt KI und maschinelles Lernen, um die Ergebnisse der statischen Analyse zu priorisieren und so die Benutzerfreundlichkeit und Akzeptanz solcher Tools zu verbessern.
Parasoft DTP verwendet eine Methode, um die Ergebnisse der Ausgabe eines statischen Analysetools schnell zu klassifizieren, indem eine kleine Anzahl von Ergebnissen überprüft und ein Klassifikator auf der Grundlage der mit diesen Ergebnissen verknüpften Metadaten erstellt wird. Dabei wird entweder etwas, das das Team sehen möchte, oder etwas, das das Team unterdrücken möchte, klassifiziert.
Dieser Klassifikator basiert auf Ergebnissen früherer Klassifizierungen statischer Analyseergebnisse im Kontext sowohl historischer Unterdrückungen irrelevanter Warnungen als auch einer vorherigen Priorisierung sinnvoller Ergebnisse zur Behebung innerhalb der Codebasis.
Die Endergebnisse werden auf zwei Arten klassifiziert:
Dieser Priorisierungsprozess verbessert das Benutzererlebnis erheblich, indem er Entwickler auf Warnungen aufmerksam macht, bei denen es sich mit höchster Wahrscheinlichkeit um einen echten Defekt in ihrem Projekt handelt.
Entwicklungsteams können Parasoft DTP optional mit OpenAI- oder Azure OpenAI-Anbietern integrieren, um die Sichtung statischer Analyseergebnisse für Java-Anwendungen mit CVE-Match-Analyse weiter zu optimieren. DTP analysiert den Verstoß gegen die statische Analyse und quantifiziert die Ähnlichkeit zwischen dem Quellcode der Methode, die den Verstoß enthält, und dem Quellcode mit bekannten Sicherheitslücken. Entwicklungsteams können die CVE-Match-Analyse verwenden, um zu beurteilen, welche Verstöße priorisiert werden sollen, damit kritische Sicherheitsprobleme nicht versehentlich übersehen werden.
Wir haben außerdem eine Hotspot-Erkennung in Kombination mit einem fortschrittlichen KI-basierten Modell implementiert, das Verstöße Entwicklern entsprechend ihren Fähigkeiten und Erfahrungen zuweist – basierend auf den von ihnen in der Vergangenheit behobenen Verstößen. Dank dieser Innovationen können Unternehmen den manuellen Aufwand bei der Einführung und Nutzung statischer Analyse sofort reduzieren.
Parasoft integriert generative KI in seine Continuous Quality Testing Platform, indem es seine statischen Analyselösungen für C#, .NET und Java mit OpenAI- und Azure OpenAI-Anbietern integriert. Die optionale Integration ermöglicht es Entwicklungsteams, statische Analyseergebnisse durch KI-generierte Korrekturempfehlungen in der IDE einfacher und schneller zu beheben.
Generative KI-Codekorrekturen für statische Analyseergebnisse sind besonders nützlich für neue Projekte, die statische Analysen implementieren und Code-Compliance-Anforderungen haben, um branchenspezifische oder Sicherheitsstandards einzuhalten. Teams, die neu in der statischen Analyse sind, sind möglicherweise technisch nicht mit den Richtlinien oder Regeln vertraut, die mit diesen Standards verbunden sind. Wenn die Regel oder der Verstoß nicht richtig verstanden wird, kann dies die Entwicklungsproduktivität beeinträchtigen, da Entwickler ihre Zeit und Mühe darauf verwenden müssen, den Verstoß zu untersuchen und eine Codekorrektur zu implementieren. Durch die Integration generativer KI zur schnellen Erstellung von Codekorrekturen können Entwickler Verstöße schnell beheben. Dadurch haben sie mehr Zeit, sich auf die Entwicklung neuen Codes zu konzentrieren und andere Verstöße zu beheben, um die allgemeine Codequalität, Sicherheit und Zuverlässigkeit der Software zu verbessern.
Unsere Produktivitätslösung für Java-Entwickler, Jtest, umfasst automatisierte statische Analyse, Unit-Tests, Codeabdeckungsanalyse und Rückverfolgbarkeit. Es verwendet Parasofts eigene proprietäre KI und die optionalen Integrationen mit OpenAI- und Azure OpenAI-Anbietern, um die Erstellung von JUnit-Tests zu optimieren und die Codeabdeckung zu verbessern.
Ingenieure können die Erstellung von Unit-Tests beschleunigen, indem sie das Eclipse- oder IntelliJ-IDE-Plugin nutzen, um neue Tests mit dem KI-gestützten Unit-Test-Assistenten (UTA) von Jtest zu generieren. Teams können effektive Unit-Test-Suites erstellen, indem sie die vorhandenen Code-Abdeckungsebenen auf Methoden-, Klassen-, Paket- oder Projektebene analysieren und KI nutzen, um eine Suite von Unit-Tests für nicht abgedeckte Codezeilen in großen Mengen zu generieren. Während der Testerstellung generiert unsere Java-Lösung automatisch Mocks und Assertions und bietet Teams eine Suite intelligenter, effektiver Testfälle für Regressionstests.
Bei der Entwicklung neuen Codes müssen zusätzliche Unit-Tests erstellt werden, um die neue Funktionalität zu validieren. Der UTA von Jtest generiert einen neuen Testfall, um die vom Benutzer ausgewählte Codezeile abzudecken, und gibt dann Empfehlungen zur Verbesserung des Testfalls. Teams können Abhängigkeiten einfach und schnell stubben und simulieren, Behauptungen hinzufügen, Testfälle parametrisieren und vorhandene Testfälle klonen oder mutieren, um eine höhere Codeabdeckung zu erreichen.
Die optionale Integration mit OpenAI- und Azure OpenAI-Anbietern ermöglicht Entwicklern, Unit-Tests auf der Grundlage von Eingabeaufforderungen in natürlicher Sprache, die die spezifischen Anforderungen des Entwicklers umreißen, einfach anzupassen, zu erweitern oder umzugestalten. Die Integration von Jtest mit OpenAI analysiert den Code und den vorhandenen Unit-Test in Verbindung mit den eingegebenen Anforderungen und gestaltet den Testfall auf der Grundlage dieser Spezifikationen um. Dies bietet Entwicklern große Flexibilität, um Testfälle auf jede für ihre Anwendung erforderliche Weise anzupassen, und beschleunigt den Prozess der Erstellung effektiver und wertvoller Test-Suites.
Das erste Beispiel stammt aus Parasoft Jtest , unserer Softwaretestlösung für Java-Entwickler, die unter anderem statische Analyse, Unit-Tests, Testabdeckung und Rückverfolgbarkeit umfasst. Durch den Einsatz von KI haben wir die automatische Testfallgenerierung eingeführt, die Entwicklern hilft, Lücken zu schließen, wenn sie mit einem unvollständigen JUnit-Framework beginnen.
Das IDE-Plug-in von Parasoft Jtest fügt der Unit-Testing-Praxis eine nützliche Automatisierung mit einfachen Ein-Klick-Aktionen zum Erstellen, Skalieren und Verwalten von Unit-Tests hinzu. Durch die Verwendung von KI-fähigem Jtest können Benutzer eine höhere Codeabdeckung erreichen und gleichzeitig den Zeit- und Arbeitsaufwand für die Erstellung einer umfassenden und aussagekräftigen Suite von Junit-Testfällen erheblich reduzieren.
Eine Möglichkeit, dies zu erreichen, besteht darin, das Erstellen von Stubs und Mocks zum Isolieren des zu testenden Codes zu vereinfachen. Die zugrunde liegende KI ermöglicht es Jtest, die zu testende Einheit zu beobachten, um ihre Abhängigkeiten von anderen Klassen zu bestimmen. Wenn Instanzen dieser Abhängigkeiten erstellt werden, wird dem Benutzer vorgeschlagen, sie zu verspotten, um isoliertere Tests zu erstellen.
Das automatische Erstellen der erforderlichen Mocks und Stubs reduziert den Aufwand bei einem der zeitaufwändigsten Teile der Testerstellung.
Parasoft Jtest erkennt außerdem automatisch Code, der nicht von vorhandenen Testsuiten abgedeckt wird, und durchläuft den Steuerpfad des Quellcodes, um herauszufinden, welche Parameter an eine zu testende Methode übergeben werden müssen und wie Subs / Mocks initialisiert werden müssen, um sie zu erreichen dieser Code. Durch Aktivieren dieser KI kann Jtest automatisch neue Komponententests generieren und geänderte Parameter anwenden, um die gesamte Codeabdeckung des gesamten Projekts zu erhöhen.
Ein weiteres gutes Beispiel für den Einsatz von maschinellem Lernen ist der Smart API Test Generator von Parasoft SOAtest . Er geht über reine Aufzeichnungs- und Wiedergabetests hinaus und nutzt KI und maschinelles Lernen, um UI-Tests in vollständige, automatisierte API-Testszenarien umzuwandeln.
Der Smart API Test Generator verwendet Argumente, um die Muster und Beziehungen in den verschiedenen API-Aufrufen zu verstehen, die während der Ausübung der Benutzeroberfläche durchgeführt werden. Aus dieser Analyse wird eine Reihe von API-Aufrufen erstellt, die die zugrunde liegenden Schnittstellenaufrufe darstellen, die während des UI-Flusses durchgeführt werden.
Anschließend wendet es maschinelles Lernen an, indem es beobachtet, was es über die verschiedenen API-Ressourcen tun kann, und sie als Vorlage in einer proprietären Datenstruktur speichert. Diese interne Struktur wird aktualisiert, indem andere Testfälle in der Bibliothek des Benutzers untersucht werden, um verschiedene Arten von Verhalten zu lernen, wenn die APIs ausgeführt werden, beispielsweise eine Behauptung oder das Hinzufügen eines bestimmten Headers an der richtigen Stelle.
Das Ziel der KI besteht hier darin, fortgeschrittenere Tests zu erstellen und nicht nur zu wiederholen, was der Benutzer getan hat, wie dies bei einfachen Aufnahme- und Wiedergabetests der Fall ist. So funktioniert der Smart API Test Generator:
Die resultierenden automatisierten API-Tests sind vollständiger, wiederverwendbar, skalierbar und widerstandsfähiger gegenüber Änderungen.
Parasoft SOAtest kann auch in OpenAI- oder Azure OpenAI-Anbieter integriert werden, was die Verwendung generativer KI-Technologien ermöglicht, um die Erstellung von API-Szenariotests zu optimieren. Tester können eine Servicedefinitionsdatei in SOAtest eingeben und eine Eingabeaufforderung in natürlicher Sprache bereitstellen, die die spezifischen Anforderungen und die erforderliche Geschäftslogik umreißt. Die KI analysiert dann die Servicedefinitionsdatei und generiert eine Reihe von API-Szenariotestfällen, die dem in der Eingabeaufforderung beschriebenen Anwendungsfall zugeordnet sind.
Durch diesen Einsatz generativer KI beim API-Testen können QA-Teams ihre Testbemühungen gründlicher gestalten, da Tester erweiterte Testszenarien ohne Code und automatisch generieren können.
Die automatische Validierung der Benutzeroberfläche ist ein weiterer wichtiger Bestandteil Ihrer Teststrategie, um sicherzustellen, dass das Produkt vor der Produktion vollständig verifiziert ist. Das Selenium-Framework ist für UI-Tests weit verbreitet, doch Anwender kämpfen weiterhin mit den typischen Herausforderungen von Selenium-Tests hinsichtlich Wartbarkeit und Stabilität. Hier können KI-Technologien und insbesondere maschinelles Lernen Abhilfe schaffen, indem sie zur Laufzeit eine Selbstheilung ermöglichen und so die häufigen Wartbarkeitsprobleme bei der Ausführung von UI-Tests beheben.
Wir bieten diese Funktionalität mit Parasoft Selenic an, das während der regelmäßigen Ausführung von Selenium-Tests Ihre interne Datenstruktur „erlernen“ kann. Die Selenic-Engine überwacht jeden Testdurchlauf und erfasst detaillierte Informationen zum Web-UI-Inhalt der zu testenden Anwendung. Sie extrahiert DOM-Elemente, deren Attribute, Locators usw. und korreliert sie mit den Aktionen der UI-gesteuerten Tests. Selenic nutzt den proprietären Datenmodellierungsansatz von Parasoft und speichert diese Informationen in seiner KI-Engine. Das Modell wird kontinuierlich aktualisiert und analysiert die historische Ausführung aller Tests, um immer intelligenter zu werden.
Dies spart Zeit, wenn UI-Elemente von Webseiten verschoben oder erheblich geändert werden und Tests dadurch fehlschlagen. Mit Selenic können die von der Engine verwendeten KI-Heuristiken diese geänderten Elemente mit den vom Modell dargestellten historischen Daten abgleichen und automatisch änderungsresistente „Smart Locators“ generieren, um die Ausführung von Selenium-Tests zur Laufzeit wiederherzustellen. Informationen über diese Änderungen werden automatisch im Modell weitergegeben, und die zukünftige Generierung neuer Locators wird entsprechend angepasst.
Darüber hinaus kann Selenic verschiedene Arten von „Wartezuständen“ selbst beheben und so Instabilitäten im Zusammenhang mit den Leistungsmerkmalen der zu testenden Systeme beheben. Es misst außerdem die Zeit, die für die Ausführung jedes Testfalls auf Webseiten benötigt wird, und vergleicht sie mit dem historischen Durchschnitt der vorherigen Läufe. Überschreitet die Abweichung einen bestimmten Schwellenwert, wird im Bericht eine Warnung angezeigt, um den Benutzer über signifikante Änderungen zu informieren.
Tools zur Testauswirkungsanalyse (TIA) bewerten die Auswirkungen von Änderungen am Produktionscode. Sie helfen dabei, die von Codeänderungen betroffenen Testfälle aufzudecken. Der Hauptvorteil der TIA besteht darin, dass sie das Ausführen von Tests für die gesamte Codebasis nach Änderungen überflüssig macht. Dies spart Zeit und Kosten und gewährleistet gleichzeitig einen effizienten Entwicklungsprozess.
Durch die Integration der TIA-Technologie in CI/CD-Pipelines optimieren Sie die Ausführung Ihrer automatisierten Tests und erhalten Entwickler schnelleres Feedback zu den Auswirkungen von Änderungen auf die Projektqualität. Je nach Produktart und auszuführenden Tests können Sie die KI-gestützte Technologie von Parasoft nutzen, um die Ausführung von C#-, .NET- und Java-Unit-Tests , Selenium-Web-UI-Tests , API-Tests oder Tests in Frameworks von Drittanbietern zu optimieren.
Das explosive Wachstum auf dem Softwaremarkt lässt darauf schließen, dass auch in Zukunft mehr Software veröffentlicht wird, um Probleme in unserem täglichen Geschäft zu lösen. Damit Software jedoch effizient funktioniert und so schnell wie möglich auf den Markt kommt, sind Automatisierung und künstliche Intelligenz beim Softwaretesten erforderlich. Hier kommt die Continuous Quality Testing Platform von Parasoft ins Spiel, um KI-gestützte, ML-gesteuerte Softwaretestlösungen bereitzustellen, die Qualität in den Softwareentwicklungsprozess integrieren, um Fehler frühzeitig im SDLC zu verhindern, zu erkennen und zu beheben.
Erfahren Sie mehr über die Beschleunigung der Testerstellung mit KI.