Parasoft C/C++test 2022.2 unterstützt MISRA C:2012 Amendment 3 und eine Entwurfsversion von MISRA C++ 202x. Erfahren Sie mehr >>

Was ist künstliche Intelligenz beim Testen von Software?

Von Igor Kirilenko

27. September 2022

8  min lesen

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.

Das Aufkommen künstlicher Intelligenz (KI) verändert weiterhin die technologische Landschaft. Seine Anwendung in verschiedenen Facetten der Softwareentwicklung nimmt weiter zu. Einer der Bereiche der Softwareentwicklung, in denen die Einführung von KI voranschreiten kann, ist das Softwaretesten.

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.

Was ist KI und wie verändert sie die Dynamik des Softwaretestens?

Künstliche Intelligenz ist eines der am meisten überladenen Schlagworte auf dem digitalen Marktplatz. „KI“ beschwört Bilder von Dingen wie allmächtigen Supercomputern, die höllisch auf die Zerstörung der Menschheit aus sind, Sprachsteuerungsunterstützung wie Alexa oder Siri, Computerschachgegner und selbstfahrende Autos.

Wikipedia definiert KI-Forschung als „… Die Untersuchung von „intelligenten Agenten“: Jedes Gerät, das seine Umgebung wahrnimmt und Maßnahmen ergreift, die seine Chance maximieren, seine Ziele erfolgreich zu erreichen.“ Aber das ist ein wenig zu abstrakt.

Ich stelle mir KI gerne vor die Fähigkeit eines Computerprogramms oder einer Maschine zu denken (Grund für sich selbst) und lernen (Daten sammeln und zukünftiges Verhalten auf vorteilhafte Weise ändern).

In dieser Definition sehen wir etwas Bedeutenderes im Kontext dessen, was KI für Softwareentwicklungstools und -technologien bedeutet.

Mehr Softwareversionen bedeuten mehr Softwaretests

Da die Zahl der Entwickler weltweit weiter ansteigt, wird erwartet, dass weitere Softwareversionen auf den Softwaremarkt kommen werden. Ein aktueller Bericht von Statista bestätigt diese Erwartung mit einer Prognose, die darauf hindeutet, dass die globale Entwicklerpopulation voraussichtlich von 24.5 Millionen im Jahr 2020 auf 28.7 Millionen Menschen im Jahr 2024 ansteigen wird.

Dies deutet darauf hin, dass wir in den kommenden Jahren weitere Software-Einführungen sehen werden. Mit diesem erwarteten Wachstum der Anzahl von Softwareversionen geht die Notwendigkeit einher, Softwaretests zu automatisieren.

Beim Softwaretesten wird eine Softwareinfrastruktur einer Reihe von funktionalen und nichtfunktionalen Testszenarien unterzogen. Es ist ein Prozess, bei dem Software evaluiert wird, um sicherzustellen, dass sie effizient das tun kann, wofür sie entwickelt wurde. Wenn Teams Software testen, können sie Laufzeitfehler, Skalierbarkeitsprobleme, Sicherheitslücken und mehr entdecken und beheben.

Der Softwaretestprozess ist in der Regel streng, daher ist eine Automatisierung erforderlich. Damit die Softwareautomatisierung jedoch äußerst effizient und nahtlos ist, muss KI integriert werden.

KI in der Softwaretestautomatisierung

Der Einsatz von KI in der Softwareentwicklung befindet sich noch in der Entwicklung, aber das Niveau, auf dem sie derzeit beim automatisierten Testen von Software eingesetzt wird, ist niedriger als in fortgeschritteneren Arbeitsbereichen wie selbstfahrenden Systemen oder sprachgestützter Steuerung, maschineller Übersetzung und Robotik.

Die Anwendung von KI in Softwaretesttools konzentriert sich darauf, den Softwareentwicklungslebenszyklus (SDLC) zu vereinfachen. Durch die Anwendung von Argumentation, Problemlösung und in einigen Fällen maschinellem Lernen kann KI dazu beitragen, die Menge an alltäglichen und langwierigen Aufgaben in der Entwicklung und beim Testen zu automatisieren und zu reduzieren.

Revolutionieren Sie Ihre API-Testpraxis, indem Sie künstliche Intelligenz nutzen

Sie fragen sich vielleicht: „Machen Testautomatisierungstools das nicht bereits?“ Natürlich haben Testautomatisierungstools bereits KI im Einsatz, aber sie haben Einschränkungen.

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.

Wie maschinelles Lernen die KI verbessert

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.

Echte Beispiele für KI und ML beim Softwaretesten

KI und ML sind wichtige Bereiche der laufenden Forschung und Entwicklung bei Parasoft. Unsere Erkenntnisse bringen weiterhin neue und aufregende Möglichkeiten, diese Technologien in unsere Produkte zu integrieren. Hier sind einige Möglichkeiten, wie wir sie genutzt haben.

Verwendung von Softwaretest-KI zur Verbesserung der Einführung statischer Analysen

Eine der Straßensperren zum erfolgreiche Einführung statischer Analysetools verwaltet eine große Anzahl von Warnungen und geht mit falsch positiven Ergebnissen (Warnungen, die keine echten Fehler sind) in den Ergebnissen um. Softwareteams, die eine Legacy- oder vorhandene Codebasis analysieren, kämpfen mit den ersten Ergebnissen, die sie mit der statischen Analyse erhalten, und sind von dieser Erfahrung genug abgeschreckt, um keine weiteren Anstrengungen zu unternehmen. Ein Grund für die Überforderung ist die Anzahl der Standards, Regeln (Checker), Empfehlungen und Metriken, die mit modernen statischen Analysewerkzeugen möglich sind.

Softwareentwicklungsteams haben einzigartige Qualitätsanforderungen. Es gibt keine einheitlichen Empfehlungen für Checker oder Codierungsstandards. Jedes Team hat seine eigene Definition von Fehlalarmen, was oft eher „egal“ als „das ist technisch falsch“ bedeutet. Die Lösung von Parasoft hierfür besteht darin, KI und maschinelles Lernen anzuwenden, um die von der statischen Analyse gemeldeten Ergebnisse zu priorisieren, um die Benutzererfahrung und die Akzeptanz solcher Tools zu verbessern.

Parasoft verwendet eine Methode, um die Ergebnisse in der Ausgabe eines statischen Analysetools schnell als etwas zu klassifizieren, das das Team sehen möchte, oder etwas, das das Team unterdrücken möchte, indem es eine kleine Anzahl von Ergebnissen überprüft und einen Klassifikator basierend auf den zugehörigen Metadaten erstellt diese Erkenntnisse.

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:

  • Von Interesse für das Team zu untersuchen.
  • Elemente, die unterdrückt werden können.

Dies verbessert die Benutzererfahrung erheblich, indem Entwickler zu Warnungen geleitet werden, die mit höchster Wahrscheinlichkeit auf ihr Projekt zutreffen. Wir haben auch eine implementiert Hotspot-Erkennungs-Engine zusammen mit einem fortschrittlichen KI-basierten Modell zur Zuweisung von Verstößen an Entwickler, die ihren besten Fähigkeiten und Erfahrungen entsprechen, und lernt aus Verstößen, die sie in der Vergangenheit behoben haben. Mit diesen Innovationen können Unternehmen den manuellen Aufwand bei der Einführung und Verwendung statischer Analysen sofort reduzieren.

Verwendung künstlicher Intelligenz zur Automatisierung der Generierung und Parametrisierung von Unit-Tests

Dieses erste Beispiel ist in Parasoft Jtest, unsere Softwaretestlösung für Java-Entwickler, die statische Analysen, Komponententests, Abdeckung und Rückverfolgbarkeit usw. umfasst. Durch die Anwendung von KI hier haben wir die automatische Testfallgenerierung veröffentlicht, die Entwicklern hilft, die Lücken zu füllen, wenn sie von einem spärlichen JUnit-Harness ausgehen.

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.

Erfahren Sie, wie Sie Zeit bei der Erstellung von Java-Einheitentests sparen und durch die Nutzung von KI eine höhere Codeabdeckung erreichen.

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.

Verwendung von KI und ML zur Automatisierung der Generierung und Wartung von API-Tests

Ein weiteres gutes Beispiel für das Hinzufügen von maschinellem Lernen zum Mix ist Parasoft SOAtest's Intelligenter API-Testgenerator. Es geht über das Testen von Aufzeichnung und Wiedergabe 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.

Erfahren Sie, wie Sie die Erstellung von API-Tests mit künstlicher Intelligenz beschleunigen.

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:

  1. Erkennt Muster im Datenverkehr.
  2. Erstellt ein umfassendes Datenmodell der beobachteten Parameter.
  3. Erzeugt und ermöglicht automatisierte API-Tests Anwenden erlernter Muster auf andere API-Tests, um sie zu verbessern und Benutzern zu helfen, fortgeschrittenere automatisierte Testszenarien zu erstellen.

Die resultierenden automatisierten API-Tests sind vollständiger, wiederverwendbar, skalierbar und widerstandsfähiger gegenüber Änderungen.

Verwenden von maschinellem Lernen zur Selbstheilung der Durchführung von Selentests

Automatische Validierung der UI-Schicht ist eine weitere wichtige Komponente Ihrer Teststrategie, um sicherzustellen, dass das Produkt vollständig verifiziert ist, bevor es in die Produktion geht. Das Selenium-Framework ist für UI-Tests weit verbreitet, aber Benutzer haben immer noch mit den üblichen Herausforderungen von Selenium-Tests in Bezug auf Wartbarkeit und Stabilität zu kämpfen. Hier können KI-Technologien und insbesondere maschinelles Lernen helfen, indem sie zur Laufzeit eine Selbstheilung bieten, um die allgemeinen Wartbarkeitsprobleme im Zusammenhang mit der Ausführung von UI-Tests zu lösen.

Wir stellen diese Funktionalität mit Parasoft Selenic bereit, das während Ihrer regelmäßigen Ausführung von Selenium-Tests etwas über Ihre interne Datenstruktur „lernen“ kann. Die Selenic-Engine überwacht jeden Lauf und erfasst detaillierte Informationen über den Web-UI-Inhalt der getesteten Anwendung. Es extrahiert DOM-Elemente, ihre Attribute, Locators und dergleichen und korreliert sie mit Aktionen, die von UI-gesteuerten Tests durchgeführt werden. Selenic verwendet den proprietären Datenmodellierungsansatz von Parasoft und speichert diese Informationen in seiner KI-Engine. Das Modell wird kontinuierlich aktualisiert, wobei die historische Ausführung aller Tests analysiert wird, um weiter „intelligenter“ zu werden.

Lassen Sie sich von KI-gesteuerten Empfehlungen sagen, was kaputt ist und wie Sie es beheben können. Nutzen Sie ML zur Selbstheilung der Ausführung von Selenium-Tests.

Dies ist eine entscheidende Zeitersparnis in Fällen, in denen UI-Elemente von Webseiten verschoben oder erheblich geändert werden, wodurch Tests fehlschlagen. Mit Selenic kann die von der Engine verwendete KI-Heuristik diese geänderten Elemente mit historischen Daten „abgleichen“, die durch das Modell dargestellt werden, und automatisch „intelligente Ortungsgeräte“ generieren, die gegen Änderungen resistent sind, um die Ausführung von Selenium-Tests zur Laufzeit wiederherzustellen. Informationen zu diesen Änderungen werden automatisch durch das Modell weitergegeben, und die zukünftige Generation neuer Locators wird basierend auf diesen Änderungen angepasst.

Darüber hinaus kann Selenic verschiedene Arten von „Wartezuständen“ selbst beheben, um Instabilitäten zu beheben, die mit Leistungsmerkmalen von getesteten Systemen verbunden sind. Es misst auch die Zeit, die mit der Ausführung jedes Testfalls auf Webseiten verbunden ist, und vergleicht sie mit dem historischen Durchschnitt, der aus den vorherigen Durchläufen erfasst wurde. In Fällen, in denen die Abweichung einen bestimmten Schwellenwert überschreitet, wird im Bericht eine Warnung angezeigt, um einen Benutzer über wesentliche Änderungen zu informieren.

Optimieren Sie die Testausführung mit der Testauswirkungsanalyse

Die Testauswirkungsanalyse (TIA) bewertet die Auswirkungen von Änderungen am Produktionscode. Es hilft, Testfälle aufzudecken, die von Codeänderungen betroffen sind. Der Hauptvorteil von TIA besteht darin, dass keine Tests mehr auf Ihrer gesamten Codebasis ausgeführt werden müssen, nachdem Änderungen vorgenommen wurden. Das spart Zeit und Kosten und hält Ihren Entwicklungsprozess effizient am Laufen.

Sie können bei der Durchführung manueller Tests von der TIA-Technologie profitieren oder die Integration von TIA-basierten Tools mit CI/CD-Pipelines nutzen. Dies kann den Ablauf Ihrer automatisierten Tests optimieren und Entwicklern schnelleres Feedback über die Auswirkungen von Änderungen auf die Qualität ihres Projekts geben. Abhängig von der Art der Produkte und der Art der auszuführenden Tests können Sie die KI-erweiterte Technologie von Parasoft nutzen, um die Ausführung von Java-Einheitentests, Selenium-Web-UI-Tests und API-Tests zu optimieren.

Fazit

Das explosionsartige Wachstum des Softwaremarktes deutet darauf hin, dass weiterhin mehr Software veröffentlicht wird, um Probleme in unserem täglichen Geschäft zu lösen. Damit Software jedoch effizient funktioniert und möglichst schnell auf den Markt kommt, braucht es Automatisierung und künstliche Intelligenz beim Softwaretesten. Hier kommt Parasoft ins Spiel.

Bei Parasoft bieten wir KI-gestützte, ML-gesteuerte Softwaretestlösungen, die Qualität in den Softwareentwicklungsprozess integrieren, um Fehler frühzeitig im SDLC zu verhindern, zu erkennen und zu beheben.

Möchten Sie mehr über die Beschleunigung der Testerstellung mit KI erfahren?

Von Igor Kirilenko

Igor, Vice President of Development bei Parasoft, ist verantwortlich für die technische Strategie, Architektur und Entwicklung von Parasoft-Produkten. Igor bringt über 20 Jahre Erfahrung in führenden Entwicklungsteams mit, mit einer Spezialisierung auf die Etablierung und Förderung der besten agilen Praktiken in Softwareentwicklungsumgebungen.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.