Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

Was ist künstliche Intelligenz beim Testen von Software?

Was ist künstliche Intelligenz beim Testen von Software? Lesezeit: 8 Minuten

Eines der neuesten Schlagworte in der Softwareentwicklungsbranche ist künstliche Intelligenz. Aber was bedeutet es wirklich? Wie funktioniert KI im Kontext der Softwaretestautomatisierung von seiner weiter gefassten Definition abweichen?

Was meinen wir, wenn wir darüber reden? AI und sein Schwesterbegriff, Maschinelles Lernen? Ich dachte, ich würde unsere Nutzung klären, damit es klar ist wie wir KI und maschinelles Lernen einsetzen um die API-Tests auf dem neuesten Stand der Technik voranzutreiben.

So implementieren Sie künstliche Intelligenz beim Testen von Software (es ist nicht nur Buzz)

Künstliche Intelligenz ist eines der am meisten überlasteten Schlagworte auf dem digitalen Markt. "KI" zaubert Bilder von Dingen wie allmächtigen Supercomputern, die auf menschliche Zerstörung aus sind. Sprachsteuerungsunterstützung im Weg von Alexa oder Siri; Computerschachgegner; oder 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 bisschen zu abstrakt. Ich stelle mir KI gerne als 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.

Es ist auch wichtig zu wissen, dass sich der Umfang der sogenannten „KI“ im Laufe der Zeit ändert. Zu einer Zeit betrachteten Menschen beispielsweise die optische Zeichenerkennung (OCR) als Stand der Technik in der KI. Oder die Frage-und-Antwort-Antworten von Siri und Alexa, bei denen die Auswirkungen früher als Stand der Technik galten, werden heute weitgehend als selbstverständlich und nicht immer als KI-System angesehen. Das gleiche passiert mit Softwaretest-Tools - Innovationen in der Automatisierung werden heute erwartet, wenn sich neue Funktionen entwickeln. Betrachten wir zunächst die KI in der Automatisierung von Softwaretests im Jahr 2019.

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

KI in der Softwaretestautomatisierung

Der Einsatz von KI in der Softwareentwicklung steckt noch in den Kinderschuhen und der Grad an Autonomie ist deutlich geringer als in weiterentwickelten Arbeitsbereichen wie selbstfahrenden Systemen oder sprachgestützter Steuerung, obwohl er immer noch in die Richtung voranschreitet des autonomen Testens. Die Anwendung von KI in Softwaretesttools konzentriert sich auf die Vereinfachung des Softwareentwicklungslebenszyklus. Durch die Anwendung von Argumentation, Problemlösung und in einigen Fällen maschinellem Lernen kann KI dazu beitragen, alltägliche und mühsame Aufgaben in Entwicklung und Test zu automatisieren und zu reduzieren.

"Testen Sie Automatisierungstools nicht schon?" du könntest fragen.

Und die Antwort lautet natürlich: „Ja! Tun sie!" … Aber sie haben Grenzen.

AI glänzt in der Softwareentwicklung, wenn es angewendet wird, um diese Einschränkungen zu beseitigen, damit Softwaretest-Automatisierungstools Entwicklern und Testern noch mehr Wert bieten können. Der Wert von KI ergibt sich aus der Verringerung der direkten Beteiligung des Entwicklers oder Testers an den alltäglichsten Aufgaben. (Menschliche Intelligenz wird immer noch dringend benötigt, um Geschäftslogik usw. anzuwenden.)

Beachten 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 ausführen sollen, daher führen sie alle oder einen vorgegebenen Satz aus. Was ist, wenn ein AI-fähiger Bot den aktuellen Status des Teststatus, die letzten Codeänderungen, die Codeabdeckung und andere Metriken überprüfen, entscheiden kann, welche Tests ausgeführt werden sollen, und diese dann ausführen kann? Das Einbringen von Entscheidungen, die auf dem Ändern von Daten basieren, ist ein Beispiel für die Anwendung von KI (und Parasoft tut dies übrigens). Die Software ist effektiv in der Lage, den Entwickler / Tester im Entscheidungsprozess zu ersetzen. Der Vorteil der Anwendung auf eine CI / CD-Pipeline liegt auf der Hand.

KI und maschinelles Lernen

Was ist also mit maschinellem Lernen? Durch maschinelles Lernen kann die KI durch die Anwendung von Algorithmen erweitert werden, mit denen sich das Tool automatisch verbessern lässt, indem die zahlreichen durch Tests erzeugten Datenmengen erfasst werden.

Die Forschung zum maschinellen Lernen ist eine Teilmenge der gesamten KI-Forschung, wobei der Schwerpunkt auf dem Entscheidungsmanagement auf der Grundlage zuvor beobachteter Daten liegt. Dies ist ein wichtiger Aspekt der KI insgesamt, da die Intelligenz eine Änderung der Entscheidungsfindung erfordert, wenn sich das Lernen verbessert. In Softwaretest-Tools ist maschinelles Lernen jedoch nicht immer erforderlich - Manchmal ist es am besten, ein AI-fähiges Tool manuell zu optimieren, um es mithilfe des Tools an die Organisation anzupassen. Unabhängig vom Ergebnis kann dann jedes Mal dieselbe Logik und Argumentation angewendet werden.

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.

Tiefes Lernen

Maschinelles Lernen verfügt über eine eigene Teilmenge namens Deep Learning, die auf der Verarbeitung großer Datenmengen basiert, aus denen gelernt werden kann. Solche Daten werden in den meisten Fällen durch mehrschichtige analytische neuronale Netze dargestellt - Sie sind Modelle, die vom Netz menschlicher Neuronen inspiriert sind und Computern helfen, neues Wissen zu erwerben und hochintelligent zu argumentieren.

Der Schlüsselaspekt von Deep Learning ist die große Menge an Informationen, die von Neuronalen Netzen dargestellt werden, um den Entscheidungsprozess voranzutreiben. Eine solche Datenmenge ist beim Testen von Software nicht immer verfügbar oder nicht anwendbar - vielleicht sehen wir deshalb in diesen Bereichen noch nicht viele Fälle von Deep Learning-Nutzung. Ein mögliches Beispiel wäre das „Lernen“ aus zig Millionen Codezeilen, um verschiedene Arten von Sicherheitsverletzungen zu verstehen und eine statische Analyse-Engine zu implementieren, die auf einem Deep-Learning-Modell basiert.

Echte Beispiele für KI und maschinelles Lernen beim Testen von Software

Dies ist ein wichtiger Bereich der Forschung und Entwicklung bei Parasoft. Aufregenderweise sind unsere aktuellen Angebote erst der Anfang, und unsere laufenden Forschungen zu KI und ML bringen immer wieder neue Wege, um diese Technologien in unsere Produkte zu integrieren. Hier sind einige Möglichkeiten, wie wir sie bereits eingeführt haben.

Verwendung künstlicher Intelligenz zur Automatisierung der Erzeugung und Parametrisierung von Komponententests

Dieses erste Beispiel ist in Parasoft Jtest, unsere Softwaretestlösung für Java-Entwickler, die statische Analyse, Komponententests, Abdeckung und Rückverfolgbarkeit usw. umfasst. Mit AI haben wir die automatische Testfallgenerierung veröffentlicht, mit der Entwickler die Lücken füllen können, wenn sie von einem spärlichen JUnit-Kabelbaum ausgehen.

Das IDE-Plug-In von Parasoft Jtest fügt nützliche Automatisierung hinzu Einheitstest-Praxis mit einfachen Ein-Klick-Aktionen zum Erstellen, Skalieren und Verwalten von Einheitentests. Durch die Verwendung von KI-fähigem Jtest können Benutzer eine höhere Codeabdeckung erreichen und gleichzeitig den Zeit- und Arbeitsaufwand halbieren, der zum Erstellen einer umfassenden und aussagekräftigen Suite von Junit-Testfällen erforderlich ist.

Eine Möglichkeit 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 vorgeschlagen, sie dem Benutzer zu verspotten, um isoliertere Tests zu erstellen. Das automatische Erstellen der erforderlichen Mocks und Stubs reduziert den Aufwand für einen 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.

Verwenden von KI und maschinellem Lernen 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-TestgeneratorDies geht über das Aufzeichnen und Wiedergeben von Tests hinaus und nutzt KI und maschinelles Lernen, um manuelle 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 des Trainings der Benutzeroberfläche ausgeführt werden. Aus dieser Analyse wird eine Reihe von API-Aufrufen erstellt, die die zugrunde liegenden Schnittstellenaufrufe darstellen, die während des UI-Flusses ausgeführt werden. Anschließend wird maschinelles Lernen angewendet, indem beobachtet wird, was über die verschiedenen API-Ressourcen möglich ist, und diese als Vorlage in einer proprietären Datenstruktur gespeichert werden. Diese interne Struktur wird aktualisiert, indem andere Testfälle in der Benutzerbibliothek untersucht werden, um verschiedene Verhaltensweisen beim Ausführen der APIs zu erlernen, z. B. eine Zusicherung oder das Hinzufügen eines bestimmten Headers an der richtigen Stelle.

Das Ziel der KI besteht hier darin, fortgeschrittenere Tests zu erstellen (nicht nur zu wiederholen, was der Benutzer getan hat, wie dies bei einfachen Aufnahme- und Wiedergabetests der Fall ist). Das Tool erkennt Muster im Verkehr, erstellt ein umfassendes Datenmodell der beobachteten Parameter und generiert es automatisierte API-Tests, und ermöglicht die Anwendung erlernter Muster auf andere API-Tests, um diese zu verbessern und Benutzern bei der Erstellung fortschrittlicherer automatisierter Testszenarien zu helfen. Die resultierenden automatisierten API-Tests sind umfassender wiederverwendbar, skalierbar und widerstandsfähig gegenüber Änderungen.

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

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

Wir bieten diese Funktionalität mit Parasoft Selenic an, mit dem Sie während der regelmäßigen Durchführung von Selenium-Tests mehr über Ihre interne Datenstruktur erfahren können. Die Selenic-Engine überwacht jeden Lauf und erfasst detaillierte Informationen zum Inhalt der Web-Benutzeroberfläche der zu testenden Anwendung. Es extrahiert DOM-Elemente, ihre Attribute, Locators usw. und korreliert sie mit Aktionen, die von UI-gesteuerten Tests ausgeführt werden. Selenic verwendet Parasofts proprietären Datenmodellierungsansatz, bei dem diese Informationen in seiner KI-Engine gespeichert werden. Das Modell wird kontinuierlich aktualisiert und analysiert die historische Ausführung aller Tests, um weiterhin „intelligenter“ zu werden.

Dies ist eine wichtige Zeitersparnis in Fällen, in denen Benutzeroberflächenelemente von Webseiten erheblich verschoben oder geändert werden und Tests 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 „intelligente Locators“ 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.

Verwenden von Softwaretests Künstliche Intelligenz zur Verbesserung der Einführung statischer Analysen

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

Softwareentwicklungsteams haben einzigartige Qualitätsanforderungen und es gibt keine einheitlichen Empfehlungen für Prüfer oder Codierungsstandards. Jedes Team hat seine eigene Definition von falsch positiv, was oft bedeutet, dass es egal ist und nicht, dass dies technisch falsch ist. Die Lösung von Parasoft besteht darin, KI und maschinelles Lernen anzuwenden, um die durch statische Analyse gemeldeten Ergebnisse zu priorisieren und so 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 oder unterdrücken möchte, indem eine kleine Anzahl von Ergebnissen überprüft und ein Klassifikator basierend auf den damit verbundenen Metadaten erstellt wird diese Erkenntnisse. Dieser Klassifikator basiert auf Ergebnissen früherer manueller Klassifizierungen statischer Analyseergebnisse im Kontext sowohl der historischen Unterdrückung irrelevanter Warnungen als auch der vorherigen Priorisierung aussagekräftiger Ergebnisse, die innerhalb der Codebasis behoben werden sollen.

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 auf Warnungen hingewiesen werden, bei denen die Wahrscheinlichkeit am höchsten ist, dass sie auf ihr Projekt angewendet werden. Mit diesen Innovationen können Unternehmen den manuellen Aufwand bei der Einführung und Verwendung statischer Analysen sofort reduzieren.

Die Zukunft der künstlichen Intelligenz und des maschinellen Lernens

Also, was kommt als nächstes? Wir sind in diesem Bereich in der aktiven Forschung und Entwicklung tätig und suchen weiterhin nach weiteren Anwendungen für künstliche Intelligenz und maschinelles Lernen, um unsere Software-Test-Tool-Suite zu erweitern. Es gibt viele Forschungswege, aber das Endziel ist klar: um Teams dabei zu helfen, ihren Code effizienter und effektiver zu entwickeln und zu testen, um qualitativ hochwertigere Software mit hoher Geschwindigkeit zu erstellen.

Beschleunigen Sie die Erstellung von API-Tests mit künstlicher Intelligenz.
Fordern Sie jetzt eine Demo an
Geschrieben 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.