Test­automatisierung
Testautomatisierung sorgt für Ausfallsicherheit

Testautomatisierung ist eine wichtige Maßnahme, um bei hoher Komplexität den Turnus von Entwicklung und Live-Stellung zu beschleunigen. Trotz einer komplexen Systemarchitektur und Kritikalität einer webbasierten Anwendung sind so kurze Entwicklungszyklen bei hoher Qualität und Stabilität möglich. Wir setzen daher in unseren Projekten vielfältige Methoden und Tools zur Testautomatisierung ein.

Leistungen

  • Komponententests
  • Integrationstests
  • End-to-End-Tests
  • Frameworks Selenium, WebdriverIO
  • eigenes QA-Framework Ionium

Vorteile

  • Fehlerfreie Systeme
  • Abdeckung hoher Komplexitäten
  • Stabile Standardprozesse
  • Effiziente Testausführung
  • Wartungsfreundliche Tests

Qualitätssicherung durch Testautomatisierung

Eine umfassende Testautomatisierung ermöglicht eine hocheffiziente und kontinuierliche Qualitätssicherung in agilen Prozessen. Mit steigender Komplexität einer digitalen Anwendung steigt auch der Mehrwert, den diese Testautomatisierung mit sich bringt. Sie ist daher ein entscheidendes Instrument in der Qualitätssicherung bei ion2s. Ein unerwartetes Verhalten der Anwendung gerät ebenso rasch in den Fokus der agil arbeitenden Teams wie der Ausfall von Systemen, die über Schnittstellen angebunden sind. Die Testautomatisierung ermöglicht schnellere Anpassungen, spart manuellen Arbeitsaufwand und ist weniger fehleranfällig. Darum gehören automatisierte Verfahren ebenso wie im internationalen Web-Umfeld zu unseren Standards.

Komponententests

Agile Entwicklungszyklen und die Abdeckung hoher Komplexitäten ist mit Testautomatisierung leicht möglich. Um wiederkehrende Prozesse schnell und effizient zu testen und ein stabiles Ergebnis zu erhalten, implementieren wir in unseren Kundenprojekten modulare, effiziente und wartungsfreundliche Tests. Einzelne Komponenten und deren Funktionen sowie logische Operationen innerhalb der Software werden mittels Komponententests abgedeckt. Abhängig davon, welche Programmiersprache eingesetzt wird, bezeichnet man diese kleinsten Software-Einheiten als Module, Units oder Klassen. Die entsprechenden Tests werden daher Modultest, Unittest bzw. Klassentest genannt.

Kennzeichnend für den Komponententest ist, dass jeweils ein einzelner Softwarebaustein überprüft wird. Dabei ist er von anderen Softwarebausteinen des Systems isoliert. Diese Isolierung hat den Zweck, externe Einflüsse beim Test auszuschließen. Deckt der Test eine Fehlerwirkung auf, so lässt sich deren Ursache klar der getesteten Komponente zuordnen. Bei ion2s setzen wir für Komponententests verschiedene etablierte Test-Frameworks ein, wie z.B. Jest, Jasmine oder PHPUnit.

Integrationstests

Mittels Integrationstests prüfen wir das Zusammenspiel der einzelnen Softwarekomponenten. Der Integrationstest setzt dabei voraus, dass die ihm übergebenen Testobjekte (d.h. einzelne Komponenten) bereits getestet sind und bestehende Defekte vollständig korrigiert wurden. Um Integrationstests zu schreiben, werden einzelne Softwarekomponenten zu größeren Baugruppen bzw. Teilsystemen verbunden. Anschließend wird getestet, ob das Zusammenspiel aller Einzelteile miteinander wie erwartet funktioniert.

Der Integrationstest hat das Ziel, Fehlerzustände in Schnittstellen und im Zusammenspiel zwischen integrierten Komponenten zu finden. Die wichtigsten Testobjekte des Integrationstests sind daher die Schnittstellen zwischen zwei oder auch mehreren Komponenten. Integrationstests greifen auch dann, wenn in einem System einzelne Komponenten kundenseitig oder von einer anderen Agentur betrieben werden. So stellen wir Änderungen in externen Systemkomponenten, die zu Fehlern im System führen können, sofort fest und können darauf angemessen reagieren.

End-to-End-Tests

Die Prüfung eines ganzen Systems kann zusätzlich mittels End-to-End Tests erfolgen. Diese Tests überprüfen die Workflows einer Anwendung aus der Endnutzerperspektive. E2E-Testing bietet die Möglichkeit, eine gesamte Applikation anhand produktionsähnlicher Szenarien von Anfang bis Ende automatisiert zu testen. So wird sichergestellt, dass sich der Anwendungsfluss wie erwartet verhält.

Das E2E-Testing ist ein benutzernahes Testvorgehen und stellt eine gute Alternative zum manuellen Testing dar. Denn im Vergleich zum manuellen Testing erfordern E2E-Tests keine geschulten Tester. Ein menschliches Eingreifen ist nicht erforderlich. Alle Tests werden automatisiert und wiederholt ausgeführt, inklusive angebundener Backend-Dienste und externer Schnittstellen. Besonders interessant ist diese Testform für komplexe Bestellprozesse, die eine große Anzahl von Bestellungen in kurzer Zeit behandeln müssen - Situationen also, in denen ein unerwartetes Verhalten besonders zeitnah festgestellt werden muss, um einen eventuell entstehenden Schaden sehr früh abzuwenden.

QA-Frameworks für End-to-End-Tests (Selenium, WebdriverIO)

Seit vielen Jahren setzen wir bei ion2s in der Testautomatisierung Selenium ein. Das weltweit führende Open Source Browser-Automatisierungs-Framework testet Webanwendungen aus dem Browser heraus, indem es das Nutzerverhalten über den Selenium-Webdriver simuliert. Die Komponente Selenium-Webdriver bildet eine entscheidende W3C Protokoll konforme Schnittstelle, um den Browser nativ zu steuern und unterstützt damit unterschiedliche Browser wie Chrome, Firefox, Safari und Internet Explorer. Damit ist es möglich, eine Webanwendung in diversen Browsern und Browser-Versionen zu testen.
Unsere lange Erfahrung im Bereich Testautomatisierung hat jedoch gezeigt, dass Selenium nicht reicht, um das volle Potential der Browser-Automatisierung auszuschöpfen. Aus diesem Grund haben wir unseren Werkzeugkasten sowohl mit weiteren Open Source Frameworks als auch mit von uns implementierten Lösungen erweitert. So ist WebdriverIO ein Open Source Framework zur Automatisierung moderner Web- und Mobilanwendungen. Es reduziert die Komplexität von der Browser-Automatisierung, indem es entscheidende Teilaufgaben übernimmt und ein einfaches Setup der Browser-Automatisierung ermöglicht. AnwenderInnen müssen sich nicht um das Management von Selenium Sessions kümmern und können sich stattdessen voll auf das Schreiben und Pflegen von Test-Cases fokussieren. WebdriverIO ist in TypeScript geschrieben und somit Front-End freundlich. Aus diesem Grund können für das Schreiben von Test-Cases bekannte JavaScript und TypeScript Frameworks wie Mocha, Jasmine oder Cucumber verwendet werden.

Eigenes QA-Framework für End-to-End-Tests (Ionium)

Ionium ist ein von ion2s implementiertes Framework, das eine sehr komfortable End-to-End Testautomatisierung unterstützt. Hauptsächlich entstand es aus dem Bedarf heraus, den Wartbarkeitsaufwand der Test-Cases für unsere Kunden zu reduzieren und das Schreiben von neuen Test-Cases zu vereinfachen. Es basiert auf verschiedenen Open Source Frameworks und ermöglicht das Schreiben sehr modular aufgebauter Test-Cases, die aus wiederverwendbaren Modulen bestehen. Zusätzlich stellt es eine Sammlung von API-Funktionen zur Verfügung, die die Anbindung externer Systeme unterstützen.
 

Leistungen

  • Web-App zur Testauswertung
  • Intuitive Fehlerprotokolle
  • Container-basiertes Hosting
  • Anbindung an Cloud-Systeme (Browserstack, Saucelabs, Testingbot)
  • Bestandteil der CI-Pipelines (Gitlab, Jenkins)

Vorteile

  • Effizientes Schreiben von Tests
  • Hoch modulare Test-Cases
  • Wiederverwendbare Module
  • Skalierung von Browser-Instanzen
  • Kurze Ausführungszeiten
  • Schnelles Feedback

Testautomatisierung in der Anwendung

Für funktionsstarke Web-Portale und eShops bietet sich eine mehrstufige Testautomatisierung an, um die erforderliche Qualität sicherzustellen. Betreut zum Beispiel eine andere Agentur ein angebundenes System und nimmt an diesem System Anpassungen vor, so melden dies unsere Automaten. Wir können auch dann zeitnah reagieren, wenn eine Abstimmung vorab nicht stattgefunden hat.

Bei unserem Kunden TKS Cable lag die Herausforderung darin, ein reibungsloses Zusammenspiel verschiedener Komponenten sicherzustellen. Die Komponenten wurden von der kundenseitigen IT, von einer anderen Agentur und von uns als Digitalagentur betreut. Änderungen in einem der externen Systeme können so zu Funktionseinschränkungen in anderen Bereichen führen. Um dies zu vermeiden, wurde ein fünfstufiges Testkonzept entwickelt. Dieses überwacht kontinuierlich die Verfügbarkeit und Erreichbarkeit des Web-Portals und des integrierten eShops sowie der Webservices. Die Tests überprüfen Änderungen in den Webservices und die Kompatibilität implementierter Clients im Portal mit dem verwendeten Service. Darüber hinaus wird die Funktionsfähigkeit einzelner Komponenten im Verbund getestet.

  • Stufe 1: Verfügbarkeit und Erreichbarkeit des Web-Portals
  • Stufe 2: Verfügbarkeit, Erreichbarkeit und Zuverlässigkeit der Webservices
  • Stufe 3: Änderungen in den Webservices
  • Stufe 4: Kompatibilität des implementierten Clients mit dem verwendeten Service
  • Stufe 5: Funktionsfähigkeit einzelner oder weniger Komponenten im Verbund

Ein solches Testkonzept lässt sich um beliebig viele weitere Stufen ergänzen – beispielsweise um die Funktionsfähigkeit einer kompletten User Journey oder um einen Content-Test.

So haben wir für unseren Kunden Vodafone ein umfassendes End-to-End Testing realisiert, indem der gesamte Bestellprozess von Produkten aus der Endnutzerperspektive überprüft wird. Die Herausforderung bei diesem Projekt lag darin, die Bestellungen von vielen Produktvariationen mit unterschiedlichen Konfigurationsmöglichkeiten von Geräten und Zusatzoptionen zu überprüfen und dabei gleichzeitig eine hohe Wartbarkeit der Tests zu gewährleisten. Mit Hilfe unseres eigenen End-to-End-Test Frameworks Ionium wurden sehr modulare datengetriebene Test-Cases implementiert. So stellen wir bei großer Komplexität eine hohe Qualität in der Präsentation der Produktdaten sicher, ohne den Entwicklungsprozess zu verlangsamen.

 

Kerstin Tome ist ihre Ansprechpartnerin wenn sie Lösungen suchen

Jetzt Angebot anfordern

Sie haben eine Frage oder ein konkretes Anliegen? Jetzt Kontakt aufnehmen!

Kerstin Tome

Telefon: +49 6151 39115-11

Made with Love in Darmstadt