- Advertisement -spot_img
HomeAgilKI und Software Testen - Wie testet man ständige Veränderung?

KI und Software Testen – Wie testet man ständige Veränderung?

- Advertisement -spot_img

KI und Software Testen

Wie testet man ständige Veränderung?

Prof. Dr.-Ing. Sabine Radomski

Methoden der Künstlichen Intelligenz sind älter als das Internet. Im Sommer 1956 fand die erste Konferenz zum Thema „Künstliche Intelligenz“ statt und bereits 1950 wurde der Turing Test entwickelt. Zur Künstlichen Intelligenz gehören neben den allgemein bekannten Neuronalen Netzen auch Fuzzy Logic, Maschinelles Lernen, Expertensysteme, Clustering und Klassifizierung sowie viele andere Methoden, die das Ziel haben, Entscheidungen auf Grundlage von komplexen Daten zu treffen. „KI könnte das schlimmste Ereignis der Menschheit werden“, so warnt Stephen Hawking vor den potentiellen Gefahren der KI am 9.11.2017 beim „Web summit“ in Lissabon, Portugal. Was gilt es bei der Entwicklung und vor allem dem Testen von KI zu beachten? 

KI beruht zu einem großen Teil auf Software oder Software-Systemen. Diese KI-Systeme werden in verschiedene Hardware, wie Roboter, Kameras, Waschmaschinen oder Fahrzeuge, integriert. Wesentliche Qualitätsparameter wie die Sicherheit, Stabilität und Transparenz werden dabei zweitrangig behandelt. Aber besonders bei Systemen der Künstlichen Intelligenz (KI) sind die Folgen einer Manipulation nicht abzuschätzen. So gilt es nicht nur, die persönlichen Daten, sondern auch die KI vor Manipulation zu schützen.

In der Digitalen Transformation werden „Dinge“ intelligent. Die Vernetzung von realer und virtueller Welt lässt neue, disruptive Geschäftsmodelle entstehen und fördert diese zugleich. Damit trägt KI bereits heute maßgeblich zur Wertschöpfung in vielen Branchen bei. Dieser Trend wird weiter anhalten und entsprechende Risiken [1] mit sich bringen. So ist nicht nur mit weiteren Cyber-Attacken zu rechnen, sondern mit einem Black Out der IT-Systeme, der auf Grund der starken Abhängigkeit der Wirtschaft und Gesellschaft von funktionierenden IT-Systemen [6] einen Black Out des realen Lebens nach sich zieht. Diese Entwicklung enthält nicht nur technische, sondern auch ethische Risiken. Wie abhängig werden Mensch und Wirtschaft von der Künstlichen Intelligenz? Wie sehr werden Sie manipuliert und gesteuert? Wieviel Datenhoheit hat der Datenverursacher bzw. eigentliche Datenbesitzer überhaupt noch? 

Bei der Untersuchung der verschiedenen Einsatzmöglichkeiten von Künstlicher Intelligenz in Systemen der Gesellschaft (z.B. Fuzzy Logik und Schwarmintelligenz bei der Balance zwischen Verbrauch und erneuerbarer Energieerzeugung [13]) werden die Risiken deutlich, die durch eine Manipulation eines solchen Systems existieren. Mögliche Szenarien werden deutlich in den Romanen „Black out“ und „Zero“ von Marc Elsberg beschrieben.

TYPEN VON KÜNSTLICHER INTELLIGENZ 

Bei Künstlicher Intelligenz wird zwischen starker und schwacher Intelligenz unterschieden. Schwache künstliche Intelligenz fokussiert sich auf eine konkrete Anwendung, zum Beispiel um auf Grundlage von komplexen Daten Entscheidungen zu treffen. Beispiele hierfür sind Entscheidungen zur Kreditvergabe, Stellenbesetzung sowie Bild- und Spracherkennung, Übersetzungen, individualisierte Werbung und Navigationssysteme. Im Gegensatz dazu zeichnet sich starke KI durch logisches Denkvermögen, Entscheidungsfähigkeit auch bei Unsicherheit, Planungs- und Lernfähigkeit, Fähigkeit zur Kommunikation in natürlicher Sprache sowie Kombinieren aller Fähigkeiten zur Erreichung eines übergeordneten Ziels aus. Einige dieser Fähigkeiten – wie die Entscheidungsfähigkeit durch Unsicherheit – können bereits existierende KI-Systeme realisieren. Auch die Kommunikation in natürlicher Sprache ist schon weit entwickelt. Bei anderen Eigenschaften der Künstlichen Intelligenz fehlen zurzeit noch allgemein anerkannte Definitionen und Regeln zum Nachweis der Fähigkeit.

Abb. 1: Code Analyse OpenSSL mit embold, 18.1.2020

Auf dieser Grundlage lassen sich vier Typen der Künstlichen Intelligenz definieren: 

  1. Reaktive KI, die durch Sensoren die Umwelt erkennt und entsprechend bestimmter Vorgaben reagiert und dabei keine Erinnerung bildet. Diese Systeme sind nicht in der Lage, Trends zu erkennen. 
  2. Systeme mit begrenztem Gedächtnis sind in der Lage, Erfahrungswerte zu speichern und auszuwerten. Sie können Trends erkennen und in die Entscheidungsfindung integrieren. Suchmaschinen, individualisierte Werbung, Chatbots und selbstfahrende Fahrzeuge sind Beispiele für diesen KI-Typ. 
  3. Systeme mit eigenem Bewusstsein erkennen sich und andere und verstehen Gedanken, Emotionen, Absichten, Motive und Erwartungen. Sie können sozial interagieren. Sonny aus dem Film „I Robot” ist ein Beispiel für eine derartige Künstliche Intelligenz. 
  4. Sich „ihrer selbst“ bewusste Systeme können Vorstellungen über sich selbst bilden, sind sich ihrer inneren Zustände bewusst und können daraus Schlussfolgerungen ziehen und komplexe Strategien entwerfen. Sie können Gefühle anderer vorhersagen und in die eigenen Handlungen einbeziehen. Die Eva aus dem Film „Ex Machina” ist ein Beispiel für ein derartiges System

HERAUSFORDERUNGEN FÜR DAS TESTEN VON KÜNSTLICHER INTELLIGENZ

Was unterscheidet KI von Software? KI erhält über Sensoren Informationen zur Umgebung. Sie kann – je nach Level oder Typ – auf Änderungen in der Umgebung reagieren und sich dabei an die Veränderungen anpassen. Grundsätzlich kann KI als komplexe „embedded Software” verstanden werden.

Daraus ergeben sich nun vier Herausforderungen für das Testen von KI: 

Komplexität

Die Komplexität von Software kann mit verschiedenen Metriken gemessen werden. Eine der bekanntesten Metriken ist die zyklomatische Komplexität (CC – Cyclomatic Complexity), oder auch WMC (weighted methods per class). Sie berechnen die Komplexitäten der Methoden einer Klasse. Viele Code Analyse Tools ermitteln die WMC oder zyklomatische Komplexität. So können die Klassen mit hoher Komplexität erkannt werden. Zur Orientierung wird zusätzlich ein Schwellwert angegeben, der nicht überschritten werden soll. Bei WMC liegt er je nach Berechnungsformel bei 17, bei CC (McCabe’s method) bei 50 (toolabhängig und konfigurierbar). Je nach Anwendungsgebiet, Branche und Entwicklungsstand variiert die Komplexität einer Software. OpenSSL – eine bekannte Open Source Software mit 435.000 LoC (Lines of Code) – hat eine durchschnittliche Komplexität von 215, siehe Abb. 1, gemessen am 18.01.2020 mit embold, wobei die höchste Komplexität für eine Klasse 4.711 beträgt. OpenSSL ist ein Beispiel für eine umfangreiche und komplexe Software. Nicht jede KI-Methode erreicht diesen Umfang und diese Komplexität.

Entwicklungsgeschwindigkeit 

Um Qualität und die Einhaltung von Standards zu sichern, muss KI wie jede andere Software vor der Inbetriebnahme getestet werden. Wenn KI sich selbst weiterentwickelt und Veränderungen in den Algorithmen vornimmt, werden die Release-Zeiten nicht mehr von einem Projektplan oder einem Standard wie Scrum bestimmt. Auch hier muss die Qualität vor der Inbetriebnahme getestet werden. Sobald die Software eine bessere Lösung für eine Aufgabe gefunden hat, werden die Algorithmen geändert. Bevor diese neuen Algorithmen aktiv werden können, müssen also geeignete Tests durchgeführt werden. Da hier mit kurzen Release-Zeiten zu rechnen ist, ist es notwendig, diese Tests möglichst zu automatisieren. In einer entsprechenden integrierten Entwicklungsumgebung (IDE) können diese Tests nach jedem neuen Summit automatisch gestartet werden. In der Entwicklungsumgebung kann eine CI/CD-Pipeline abgebildet werden. Insbesondere agile Agenten, KI und Micro Services unterliegen einer häufigen Änderung, die auch wiederholte Tests notwendig machen. Mit der CI/CD-Pipeline, siehe Abb. 2, kann der gesamte Prozess automatisiert werden und auch sichergestellt werden, das ungetesteter Code nicht aktiv wird.

Kritikalität

Die professionelle Cyber-Kriminalität nimmt weiter zu. Die Netzwerkangriffe sind um das Fünffache, von 7 Millionen im Mai auf 36 Millionen im August 2015 gestiegen [2]. Dabei wird das Ziel, kritische Infrastrukturen zu treffen und deren Betrieb zu beeinträchtigen und zu stören mit professionellen Methoden und hoher krimineller Energie verfolgt.

Im Jahr 2014 wurden laut HPI [1] weltweit fast 6.500 Sicherheitsschwachstellen in Software gemeldet. 2017 waren es dann schon 15.038 entdeckte Schwachstellen entsprechend CVSS [9]. Für OpenSSL, eine Open Source Software zur Bereitstellung von verschlüsselten Netzwerkdiensten, wurden über 200 Sicherheitslücken gemeldet. Das ist positiv, denn jede gemeldete Sicherheitslücke kann behoben werden, ein schneller Release-Wechsel bei OpenSSL zeigt das. Software von Microsoft, Apple, Google, Mozilla, Oracle, HP, Adobe etc. reiht sich mit kritischen Sicherheitslücken in die Statistik [3] ein. Nicht berücksichtigt bleiben alle Sicherheitslücken, die existieren, aber nicht gemeldet werden. 

Vor diesem Hintergrund wird Software nur zu 30 Prozent getestet, uralte Software verwendet, die nicht mehr gepflegt wird und Software ausgeliefert, bei der einfachste Entwicklungsregeln nicht berücksichtigt wurden.

Künstliche Intelligenz wird da eingesetzt, wo der Mensch zu langsam reagiert oder zu viele verschiedene Informationen zu verarbeiten sind, auch in KRITIS Umgebungen. Vor diesem Hintergrund ist eine sorgfältige Qualitätskontrolle der KI dringend erforderlich. Dabei beginnt die Qualitätskontrolle bereits bei der Definition der Anforderungen.

Qualifikation

Software Systeme entstehen u.a. durch die Nutzung von Klassen aus Klassenbibliotheken, unter Verwendung von Open Source-Komponenten, Pattern und Frameworks. Damit kann die Komplexität unnötig steigen. Aber diese Wiederverwendung hat auch viele Vorteile für die Entwicklung von komplexen Software-Systemen. Bereits mehrfach genutzte und getestete Software-Bausteine können wiederverwendet und zu neuen Systemen kombiniert werden. Hier herrscht eine große Freizügigkeit, die durch verschiedene Lizenzmodelle unterstützt wird. Dabei beachten die Nutzer dieser Software-Komponenten aber häufig nicht die eingeschränkten Haftungsbestimmungen der Lizenzmodelle. Auch unter dem Gesichtspunkt der Haftung muss jede wiederverwendete Software-Komponente im Zielsystem auf mögliche Fehler und Schwachstellen geprüft werden. Zu selten werden diese Open Source-Komponenten auf Fehler überprüft, wie der Beitrag von Gunner Winkenwerder im SQ-Magazin 53 vom Dezember 2019 zeigt.

Software Engineering beschreibt die ingenieurtechnische Herstellung von Software unter Anwendung von wissenschaftlichen Erkenntnissen [14], die bei der Untersuchung von verschiedenen Software-Entwicklungsprojekten gewonnen wurden. Diese großen Systeme haben die Aufgabe, Informationen zur richtigen Zeit, am richtigen Ort, der richtigen Person in der richtigen Form mit einem akzeptablen Aufwand zur Verfügung zu stellen. Ohne die grundlegenden Fachkompetenzen [7, 8] können Software-Projekte nicht erfolgreich durchgeführt werden und es entsteht Software mit technischen Schulden die den vielfältigen Anforderungen einer digitalen Gesellschaft nicht gerecht werden. Insbesondere bei der Erstellung von KI ist es erforderlich, dass die Entwickler über die notwendige Fachkenntnis verfügen. 

Zu den Fachkompetenzen zählen 

  • die Kenntnis der Eigenschaften und Qualitätsmerkmale von Software, 
  • Charakteristika der verschiedenen Vorgehensmodelle im Software Engineering, 
  • die Beherrschung aktueller IDE und Darstellungssprachen (UML und BPMN), 
  • die Aufgaben und Methoden der acht Phasen im Software Engineering, 
  • die Charakteristika der im Software Engineering zum Einsatz kommenden Architekturen, 
  • die Auswirkungen der agilen Software-Entwicklung auf die Qualität der Software und deren Projektdauer sowie 
  • Entwicklung von Testfällen und Testautomatisierung.

Fachkompetenzen werden in einem Studium der IT-Fachrichtungen vermittelt. Verfügt der Entwickler nicht über die notwendigen Fachkompetenzen, entstehen durch Unkenntnis technische Schulden und vielfältige Sicherheitslücken (z.B. 87.000 dokumentierte Schwachstellen in der OWASP) die wiederum zu hohen Datenverlusten führen [4]. Bei KI führen technische Schulden möglicherweise zu falschen Entscheidungen und diese zu den verschiedensten Schäden. 

Aktuell existieren über 60 verschiedene Zertifikate [5], die ein Software- Entwickler [10, 11, 12] erwerben kann. Diese Zertifikate greifen jeweils ein spezifisches Thema wie das Testen von Software auf und vermitteln die dafür notwendigen Kompetenzen und schließen mit einer Zertifikatsprüfung ab. Ein Software-Entwickler sollte also mehrere verschiedene Zertifikate erwerben, um die notwendigen Kenntnisse zu erlangen. Andere Kenntnisse können nur durch selbstständiges lebenslanges Lernen selbst erworben werden, wenn geeignete Lehrgänge nicht angeboten werden.

Abb. 2: CI / CD-Pipeline nach Wolff [14]
FAZIT 

Komplexität ist in Software sehr inhomogen und kein Alleinstellungsmerkmal für KI. Auch die Release-Zeiten sind bereits bei der agilen Entwicklung tägliche Praxis. Da KI in den verschiedensten Szenarien zum Einsatz kommt, muss je nach Einsatzort die Kritikalität berücksichtigt werden. Je nach Kritikalität (z.B. im KRITIS Umfeld) müssen besondere Testfälle durchgeführt werden. Daraus lässt sich ableiten: Die Ausbildung der Entwickler und Tester stellt eine besondere Herausforderung dar, da hier besondere Kenntnisse erforderlich sind. Von den vier untersuchten Aspekten stellen zwei für die KI eine besondere Herausforderung dar, denen besondere Aufmerksamkeit gewidmet werden muss: 

  1. Wie wird sichergestellt, dass die KI von gut ausgebildeten Experten entwickelt wird? 
  2. Wie wird sichergestellt, dass die notwendigen Testfälle für die KI entwickelt und auch ausgeführt werden? Tests dürfen nicht aufgrund von Kosten und mangelnder Zeit eingespart werden. 

Hier muss mit viel Verantwortungsbewusstsein gearbeitet werden.

QUELLENVERZEICHNIS 

[1] Hofmann, K.: IT Business, 18.3.2015: CeBIT 2015: Anwendungen mit den meisten Sicherheitslücken 

[2] BSI Lagebericht 2014: https://www.allianz-fuer-cybersicher-heit.de/SharedDocs/Downloads/DE/BSI/Publikationen/Lageberichte/Lagebericht2014.pdf?__ blob=publicationFile 

[3] Balzert, H.; Lehrbuch der SW Technik – Basiskonzepte und Requirements Engineering, Spektrum Akademischer Verlag; Auflage: 3. Aufl. 2009 

[4] Glenford J. Myers: Reliable Software through Composite Design. Mason and Lip-scomb Publishers, New York 1974. 

[5] IT-Zertifikate: https://de.wikipedia.org/wiki/Liste_von_IT-Zertifikaten 

[6] Marc Elsberg: Black out https://www.blackout-das-buch.de/buch.php 

[7] Andreas Essigkrug, Thomas Mey: Rational Unified Process kompakt. Spektrum Akademischer Verlag, Heidelberg u. a. 2003, ISBN 3-8274-1440-7. 

[8] Roland Kluge: Schablonen für alle Fälle, Die SOPHISTen, SOPHIST GmbH 2013 

[9] Common Vulnerability Scoring System CVSS, FIRST Forum of Incident Response and Security Teams: https://www.first.org/cvss/, 13.2.2019 

[10] A. Schmietendorf, M. Kunisch(Hrsg.): „BSOA/BCloud 2015 10.Workshop Bewertungsaspekte service- und cloudbasierter Architekturen: Zehn Gebote für Flexibilität und Sicherheit (S. Wieland) „ 2015 

[11] A. Spillner: „Basiswissen Softwaretest: Aus- und Weiterbildung zum Certified Tester – Foundation Level nach ISTQB-Standard“ dpunkt Verlag, 2012 

[12] P. Davies: „Analyse und Bewertung der Testqualität und Ableiten von Maßnahmen zur Verbesserung dieser bei Prebilling-Systemen am Beispiel der Applikation GMP“, Bachelor Arbeit, 2018 

[13] Sowa, A. (Hrsg.): Wieland, S. und Hartmann, A.: „Schwarmintelligenz gegen Blackout“, in IT-Revision, IT-Audit und IT-Compliance: 

Neue Ansätze für die IT-Prüfung: Springer Vieweg; 2017 

[14] J. D., Musa, “Operational profiles in software-reliability engineering” IEEE Software. Vol. 10 Issue 2, March, pp. 14-32, 1993. 

[15] C. Lilienthal: „Langlebige Architekturen: Technische Schulden erkennen und beseitigen“: https://www.informatik-aktuell.de/entwicklung/methoden/langlebige-architekturen-technische-schulden-erkennen-und-beseitigen.html, Informatik Aktuell, 20. Dezember 2016, abgerufen am 8. November 2017

- Advertisement -Certified DevOps Portfolio
Share
Must Read
Related News
- Advertisement -spot_img