Wie können Entwicklerteams bei der Programmierung, im App-Design oder bei der IT-Architektur dazu beitragen, dass die Anwender*innen mit der Qualität einer Software zufrieden sein werden? In den letzten Jahren zeigt sich immer deutlicher, dass heutige Anwender*innen sehr hohe Qualitätsansprüche an Software stellen und Fehler, ungenügende Performance und schlechte Usability oder Systemabstürze nicht mehr tolerieren. Entwicklerteams benötigen daher tiefe Einblicke in den Zustand des Systems, um Schwachstellen von Software bereits im Vorfeld zu identifizieren.
Noch bevor eine Software auf den Markt kommt, setzen Entwicklerteams auf manuelles oder automatisiertes Software Testing, bei dem sie durch verschiedene Testverfahren prüfen, ob die Software alle Anforderungen in Bezug auf Funktionalität, mobile Nutzbarkeit, Sicherheit und Nutzerfreundlichkeit erfüllt. Darüber hinaus macht eine permanente Optimierung von Software durch regelmäßige Funktions- oder Sicherheits-Updates auch kontinuierliche Tests notwendig.
Wie kann ich Softwarequalität bei immer häufigeren Releases sicherstellen? Verschiedene Arten von Software Tests Erfolgsfaktoren im Software Testing Vorteile & Grenzen von Testautomatisierung Kunden-Case: Software Testing für eine Gesundheitsapp Phasen von Software Tests Woher weiß ein Unternehmen, wann es Sinn macht, zu automatisieren? Warum entscheiden sich Unternehmen für automatisiertes Software Testing? Wie führe ich Testautomatisierung ein?
Immer kürzere Release-Zyklen wirken sich bei gleichzeitigen Zeit- und Kostenbeschränkungen in der Regel negativ auf die Softwarequalität aus. Hier kommen manuelle Testverfahren an ihre Grenzen. Für eine höhere Softwarequalität braucht es eine höhere Testqualität. Eine effiziente Lösung für Regressionstests (wiederholbare Tests) stellt die Testautomatisierung dar, die automatisiert das Monitoring der Softwarequalität übernehmen kann.
Die ISO/IEC 25010 ist eine Norm, welche die relevanten Richtlinien zur Softwarequalität im Detail beschreibt. Folgende der in der Norm festgehaltenen Qualitätskriterien, können durch Software Testing unterstützt werden:
Jede Anpassung einer Software birgt das Risiko unerwünschter Nebeneffekte, die durch automatisiertes Testing frühzeitig erkannt werden können. Mit Testautomatisierung kann die Funktionalität von Applikationen, Webanwendungen, Services, usw. getestet werden.
Ob eine Software über eine ausgereifte, verlässliche Softwarequalität verfügt, lässt sich durch automatisierte Tests überwachen. Im Gegensatz zu manuellen Testverfahren bietet die Automatisierung eine höhere Test Coverage (Testabdeckung) an.
In puncto Security unterstützen automatisierte Security-Tests dabei, beispielsweise die Zuverlässigkeit einer sicheren Administration oder von geschützten Benutzer-Accounts zu gewährleisten. Die Tests erkennen Sicherheitslücken frühzeitig.
Testfälle für Schnittstellentests sind nahezu vollständig automatisiert. Beliebte Automatisierungs-Testwerkzeuge für Schnittstellen sind beispielsweise SoapUI, Postman oder JMeter.
Last- und Performancetests prüfen die Belastbarkeit von Software-Systemen anhand der drei Qualitätsmerkmale: Antwortzeitverhalten, Ressourcennutzung und Kapazität. Ein paralleles KI-basiertes Application Monitoring erlaubt es, die Ursachen für Performance-Engpässe im System aufzudecken. So lassen sich u.a. folgende Fragestellungen beantworten: Ist ein System einer bestimmten Arbeitslast gewachsen? Wie schnell reagiert es bei dieser Last? Bleibt die Anwendung stabil, wenn eine große Menge von Usern mit ihr arbeiten oder eine große Menge an Daten gleichzeitig verarbeitet werden muss? Für Lasttests kommen Werkzeuge wie JMeter, NeoLoad, Microfocus Loadrunner oder Dynatrace zum Einsatz.
Auch die Plattformunabhängigkeit von Software, die Portierbarkeit, ist ein Qualitätskriterium nach ISO/IEC 25010. Ob ein digitales Produkt auf diversen Plattformen wie z. B. verschiedenen Betriebssystemen oder unterschiedlichen mobilen Geräten ausgeführt werden kann, lässt sich mit Testautomatisierung und flexiblen Testplattformen wie z.B. die Mobile Device Cloud für Mobile Endgeräte oder die Test Automation Platform für Webanwendungen zuverlässig testen.
Je nach Wiederholbarkeit der Testfälle sowie deren Häufigkeit können Software-Tests manuell oder automatisiert durchgeführt werden:
Die Testfälle können oder sollten nicht automatisiert werden, wenn sie beispielsweise unvorhergesehene Ergebnisse produzieren oder einmalig auftreten. Auch lassen sich Features wie CAPTCHAs, die aus Sicherheitsgründen z. B. häufig bei Loginmasken eingesetzt werden, nicht automatisieren. Andere Features sind instabil und verlangen so lange ein manuelles Testing, bis ein stabiler Zustand in der Entwicklung erreicht ist. Erst dann lohnt sich eine Investition in automatisierte Testverfahren. Darüber hinaus werden manuelle Testverfahren häufig für das Testen dynamischer Inhalte, bei Technologie-Kombinationen, bei unerwarteten Popups oder komplexen Workflows eingesetzt, da diese schwieriger zu automatisieren sind.
Die Testfälle werden mithilfe von Tools, Software und Skripten automatisiert getestet. Sie eignen sich vor allem für das Testen von Software mit stabilen Features, Regressionstests, Risikofeatures, datengetriebenen Tests, Smoke Tests, Lasttests sowie Cross-Browser-Tests und Cross-Device-Tests.
Überprüfen die beabsichtigte Funktionalität einer Software:
Mit Komponententests werden einzelne Module einer Software isoliert von anderen Modulen getestet. Hierfür werden Test-Frameworks genutzt, welche die Tests während der Testdurchführung protokollieren.
Durch Integrationstests werden eine aufeinander abgestimmte Reihe von Einzeltests geprüft, um das Zusammenspiel der voneinander abhängigen Komponenten zu testen. Im Idealfall sind dem Integrationstest Komponententests vorgelagert, die sicherstellen, dass die einzelnen Module isoliert von den anderen Komponenten fehlerfrei funktionieren.
Vor allem bei der Interaktion mit anderen angebunden Systemen wie z. B. bei einem Shopsystem mit dem angebundenen CRM-/ERP-System, prüfen Schnittstellentests die Schnittstellen, damit eine korrekte Installation der Einheiten sowie der Funktionsfähigkeit sichergestellt werden können.
Mit diesen Softwaretests lässt sich herausfinden, ob Anpassungen in der Software zu Fehlern bzw. unbeabsichtigten Nebeneffekten geführt haben. Eine kontinuierliche Ausführung stellt eine kurze Feedbackschleife zu den Entwicklern sicher. Wichtig ist auch eine ständige Erweiterung des Regressionstests an neu integrierte Funktionen/Features der Entwickler, sodass der Regressionstests stets die vollständige Funktionalität abdeckt und damit zuverlässig Rückmeldung an die Entwicklung geben kann.
Nicht-funktionale Tests überprüfen im Gegensatz zu den Funktionstests beispielsweise auch die Performance sowie die Usability einer Software. Folgende Testverfahren zählen zu den nicht-funktionalen Tests:
Die Installation auf dem Endgerät wird mit dem Installationstests bzw. Implementierungstest geprüft. Die Installation aller erforderlicher Daten ist einer der wichtigsten Tests, damit die Anwendung ordnungsgemäß funktioniert.
Mit Usability-Tests wird die Gebrauchstauglichkeit einer Anwendung geprüft. Die Tests konzentrieren sich dabei auf die Qualität von Interaktionsprozessen zwischen Mensch und User Interface.
Durch das Testen auf einer Vielzahl von Plattformen stellen Entwicklerteams sicher, dass ihre Anwendungen auf allen Geräten gut funktionieren. Indem sie sicherstellen, dass die Systeme leistungsfähig und zuverlässig sind, können die Entwickler den Benutzern auf allen Geräten die bestmögliche Erfahrung bieten.
Mit automatisierten Last- und Performancetests wird das für den Endnutzer akzeptable Qualitätsniveau unter realitätsnahen Lastbedingungen ermittelt. So lassen sich auch problematische Stellen und potentielle Ausfallrisiken ermitteln.
Durch die Kombination von Lasttests und begleitendem KI-basierten Application Monitoring lassen sich Flaschenhälse in der Applikation schnell und zielgenau identifizieren.
In Barrierefreiheitstests werden Websites, Apps, Software oder digitale Dokumente auf deren Nutzbarkeit für Menschen mit Beeinträchtigung überprüft. Im Zentrum der Betrachtung stehen sowohl die Maximierung der Zugänglichkeit als auch der Nachweis der Barrierefreiheit für die Erfüllung gesetzlicher Anforderungen.
Das Ziel von Sicherheitstests ist das Aufspüren von Sicherheitslücken. Mit einem Penetrationstest wird überprüft, ob die Infrastruktur einem Angriff durch Hacker gewachsen ist. Dieses ist ein realitätsnahes Angriffsszenario mit hohem manuellen Testanteil. Das Ergebnis eines Penetrationstestes liefert eine Dokumentation über gefundene Sicherheitsrisiken.
Zu den Erfolgsfaktoren im Software Testing zählen neben der Auswahl der richtigen Tools vor allem ein passendes Mindset und Know-How der Beteiligten sowie die Bereitschaft im Entwicklerteam sich auf veränderte Testprozesse einzulassen inklusive entsprechender Testsysteme und Testdaten. Die Prozesse rund ums Software Testings werden durch Agilität bestimmt und müssen korrekt definiert werden.
Automatisierte Softwaretests mit Tools wie beispielsweise mit Selenium, Testerra (Selenium-basiert), UFT, SoapUI bringen verschiedene Vor- und Nachteile mit sich:
Infektionsketten besser und schneller zu erkennen – dieses Ziel hat eine Gesundheitsapp für iOS und Android, die insgesamt ca. 44 Millionen Downloads verzeichnet (Stand: März 2022). Damit beispielsweise Weiterentwicklungen neuer Features optimal auf jedem Device laufen und die Datensicherheit sowie ein effizienter Betrieb gewährleistet werden können, wird die App mit Mobile Device Testing in der Cloud überwacht.
"Über unsere Mobile Device Cloud wird die App im Dauerbetrieb getestet, um Fehler sowie Inkompatibilitäten bei verschiedenen Geräten bzw. Software-Versionen aufzudecken. So gewährleisten wir eine permanente Verbesserung und Weiterentwicklung der App."
André Hirsch, Leiter Mobile Test (T-Systems MMS)
Das Testen von Software ist ein Prozess, der geplant und kontrolliert werden sollte, um sicherzustellen, dass die Software die Anforderungen erfüllt und wie erwartet funktioniert. Die Testumgebung sollte sorgfältig entworfen werden, um die Bedingungen nachzubilden, unter denen die Software eingesetzt wird, und die Tests sollten analytisch und so konzipiert sein, dass sie alle Funktionen abdecken. Sobald die Tests erstellt sind, müssen sie ausgeführt und die Ergebnisse ausgewertet werden. Schließlich kann die Software für fehlerfrei erklärt werden, wenn alle Fehler behoben wurden und sie alle Abnahmekriterien erfüllt.
Alle Testverfahren lassen sich jedoch grob in verschiedene Phasen einteilen:
In dieser Phase werden die Ziele des Testprozesses festgelegt und ein Plan erstellt, wie diese Ziele erreicht werden können. Der Aufbau der Testumgebung, die Testanalyse und der Testentwurf bilden den Rahmen für den Rest des Testprozesses.
In dieser Phase werden die Tests tatsächlich durchgeführt. Dies kann die Ausführung von Testfällen, die Ausführung von Code oder beides beinhalten.
In dieser Phase werden die Ergebnisse der Tests analysiert. Dies hilft dabei, eventuelle Mängel in der Software zu identifizieren.
In dieser Phase werden die Ergebnisse der Tests dokumentiert und ausgewertet. Die Dokumentation kann zur Behebung der gefundenen Fehler beitragen.
Testautomatisierung macht für Unternehmen in folgenden Ausgangssituationen Sinn:
► Regressionstests
► Datengetriebene Tests
► Smoke Tests
► Lasttests
► Cross-Browser-Tests und Cross-Device-Tests
► Tests für anforderungsbasierte Tests
► Tests für Risikofeatures
Im Zuge der immer weiter fortschreitenden Digitalisierung wird die Testautomatisierung unausweichlich, auch wenn aktuell viele Software-Tester*innen die Anwendungen noch manuell testen und das Thema automatisierter Softwaretests grundsätzlich noch nicht in jedem Unternehmen von hoher Bedeutung ist.
Nicht umsonst verbringen Softwaretester*innen viele Stunden damit, eine Anwendung auf Herz und Nieren zu prüfen, um eine nahezu perfekte Software bereitstellen zu können. Eine große Herausforderung besteht darin, dass die Komplexitätder Anforderungen an eine Software mit jedem Release steigt und zugleich auf eine veränderte Nutzungserwartung trifft: Nutzer*innen bauen auf eine einwandfreie Software oder App. Die Erwartungshaltung an digitale Services nimmt immer weiter zu, während die Toleranz gegenüber Fehlern sinkt.
Auch Barrierefreiheit ist ein wichtiges Kriterium für die Kundenzufriedenheit. Barrierefreiheitstests werden bisher zumeist manuell durchgeführt. Dies liegt vor allem daran, dass viele Barrierefreiheitsanforderungen semantische Anteile besitzen und dass die Zugänglichkeit für Menschen mit Beeinträchtigung optimiert werden soll. Nutzungskontext und Usability spielen also eine wichtige Rolle. Barrierefreiheit hat aber auch einen hohen technischen Anteil. Müssen doch Assistenztechnologien wie Bildschirmlese-Software (Screenreader), Schnittstellen vorfinden, mit denen die Kommunikation möglich ist.
Die in der Software hinterlegten Daten von Anwender*innen müssen maximalen Schutz erfahren. Automatisierte Security-Tests sind in der Lage, diesen Schutz zu bieten, in dem die Tools mögliche Risiken frühzeitig erkennen.
Automatisierte Software-Tests erhöhen trotz immer kürzerer Release-Zyklen die Zuverlässigkeit eines digitalen Produktes, indem Fehler und Schwachstellen schnell und vereinfacht durch Aktionen im zu testenden System identifiziert werden. Die Tools prüfen dabei Verifikationspunkte. Tritt ein nicht korrektes Ergebnis ein, wird dieses geloggt. Es folgt eine manuelle Auswertung der aufgezeichneten Anomalien und die Bewertung, bei welchen Abweichungen es sich tatsächlich um Softwarefehler handelt.
Je nach nachzuweisendem Qualitätsmerkmal führen Entwicklerteams funktionale Tests bzw. Schnittstellentests durch, Security-Tests, Performance-Tests, Tests auf Barrierefreiheit oder testen die mobile Funktionalität einer Software. Dank einer erhöhten Testabdeckung bietet die Testautomatisierung digitale Zuverlässigkeit.
Der Einsatz automatisierter Testingtools wird beispielsweise bei einer Technologieumstellung bei SAP in Richtung S/4HANA – C/4HANA notwendig, um die damit einhergehenden erheblichen Mehraufwendungen leisten zu können. Im folgenden Video sehen Sie, wie dank innovativer Tools eine Automatisierungsrate von 90% erreicht werden kann – und das auch ohne Entwicklungs-Know-How.
Automatisiertes Software Testing setzt planvolles Handeln voraus. Entwicklerteams müssen das richtige Werkzeug wählen und sollte dabei die Anforderungen verschiedener Stakeholder einbeziehen.
Oft empfiehlt es sich bei der Überwindung der kritischen Einführungsphase auf einen Dienstleister mit mehrjähriger Erfahrung in der Testautomatisierung und den jeweiligen Tools zurückzugreifen. Er kann das Unternehmen beim Ramp-Up unterstützen und die Einführung begleiten, etwa durch Workshops, Hilfe bei der Inbetriebnahme, Support mit direkten Ansprechpartnern oder als Teilnehmer in den jeweiligen Projekten.
Für den Einsatz automatisierter Softwaretests sollten folgende Fragen geklärt werden:
► Welche Vorlagen und Dokumente sollen genutzt werden?
► Welchen Ressourcenbedarf müssen Sie abdecken?
► Welche Mitarbeitenden sollen qualifiziert werden? Wie?
► Steht eine (realistische) Zeitplanung für das Software Testing?
Für die Wahl des richtigen Automatisierungswerkzeugs müssen Unternehmen ihre eigenen Anforderungen kennen. Zu empfehlen ist der Einbezug verschiedener Stakeholder, die gemeinsam einen Anforderungskatalog erstellen, um alle Anforderungen vom Budget über die Teststrategie, die Usability bis hin zur Kompatibilität zum Softwareprodukt berücksichtigen.
Das Test and Integration Center der T-Systems MMS ist ein von der Deutschen Akkreditierungsstelle (DAkkS) zertifiziertes Software-Prüflabor der Multimedia-Branche nach DIN EN ISO/ IEC 17025.
Unsere zertifizierten Experten unterstützen Sie mit dem nötigen Know-How und langjähriger Projektexpertise.
Wer noch mehr Effizienz in der Testautomatisierung erreichen will, kann künstliche Intelligenz im Softwaretest einsetzen. KI kann wiederkehrende Aufgaben übernehmen und beispielsweise in der Testskripterstellung zum Einsatz kommen. Hier erkennt KI die Objekte auf den zu testenden Webseiten und generiert selbstständig passende Testfälle und Testskripte, welche dann für die Testdurchführung verwendet werden können. Ändern sich Elemente, erkennt die künstliche Intelligenz diese Änderungen und erstellt daraufhin selbstständig neue Testskripte. So kann künstliche Intelligenz Testautomatisierung noch mehr unterstützen und wartungsärmer gestalten.
Im Beispielbild analysiert AI4Test mit Hilfe von künstlicher Intelligenz Website-Elemente.
Testautomatisierung ist ein notwendiges Werkzeug, um den Release-Prozess jeglicher Software-Anwendungen zu beschleunigen. Gerne beraten wir Sie genauer zur Testautomatisierung in Ihrem Softwareprojekt und unterstützen Sie dabei, eine hohe Softwarequalität zu erreichen. Kontaktieren Sie uns einfach oder schauen Sie sich weitere Informationen zu unseren Angeboten im Bereich Software-Qualität & Testautomatisierung.
Wir wünschen Ihnen viel Erfolg beim Automatisieren Ihrer Software Tests!