| Teil einer Serie über |
| Softwareentwicklung |
|---|
Testautomatisierung bezeichnet den Einsatz von Software (unabhängig von der zu testenden Software) zur Steuerung der Testausführung und zum Vergleich der tatsächlichen Ergebnisse mit den erwarteten Ergebnissen. [ 1 ] Testautomatisierung ermöglicht das Testen des zu testenden Systems (SUT) ohne manuelle Eingriffe , was zu einer schnelleren Testausführung und häufigeren Tests führen kann. Testautomatisierung ist ein Schlüsselaspekt des kontinuierlichen Testens und häufig auch der kontinuierlichen Integration und Bereitstellung (CI/CD). [ 2 ]
Im Vergleich zu manuellen Tests
Die Automatisierung bietet gegenüber manuellen Tests viele Vorteile.
API-Tests
Beim API-Testing steuern die Tests das zu testende System (SUT) über seine Anwendungsprogrammierschnittstelle (API). Im Vergleich zu manuellem Testing kann automatisiertes API-Testing oft eine relativ große Anzahl von Fällen in relativ kurzer Zeit ausführen.
GUI-Tests
Beim GUI-Testing steuern die Tests das zu testende System (SUT) über dessen grafische Benutzeroberfläche (GUI), indem sie Ereignisse wie Tastatureingaben und Mausklicks generieren. Die Entwicklung automatisierter GUI-Tests kann zwar anspruchsvoll sein, sie sind aber deutlich schneller als die Durchführung desselben Tests durch einen Menschen. Spezialisierungen umfassen:
- Tests mit Aufzeichnung und Wiedergabe – Einige GUI-Testwerkzeuge bieten eine Funktion, mit der Benutzeraktionen interaktiv aufgezeichnet und später als Test wiedergegeben werden können, um die tatsächlichen Ergebnisse mit den erwarteten zu vergleichen. Ein Vorteil dieses Ansatzes ist der geringe oder gar keine Programmieraufwand. Allerdings wird argumentiert, dass solche Tests Probleme mit Zuverlässigkeit, Wartbarkeit und Genauigkeit aufweisen. Beispielsweise kann das Ändern der Beschriftung einer Schaltfläche oder deren Verschieben an eine andere Stelle der Ansicht eine erneute Aufzeichnung der Tests erforderlich machen. Solche Tests sind oft ineffizient und zeichnen unwichtige Aktionen fälschlicherweise auf.
- Zum Testen einer Website dient der Browser als grafische Benutzeroberfläche (GUI), die Interaktion erfolgt über DOM-Ereignisse und HTML . Üblicherweise werden hierfür Headless-Browser oder Lösungen auf Basis von Selenium WebDriver verwendet. [ 3 ]
Regressionstests
Mit automatisierten Testverfahren lässt sich ein Regressionstest relativ schnell und einfach durchführen. Anstatt viel Zeit und Mühe in Anspruch zu nehmen, genügt für einen Regressionstest oft ein Knopfdruck; sogar der Start des Tests kann automatisiert werden.
Automatisierte Techniken
Nachfolgend sind einige bemerkenswerte Testtechniken aufgeführt, die unter Testautomatisierung kategorisiert werden.
Kontinuierliche Prüfung
Kontinuierliches Testen ist der Prozess der Ausführung automatisierter Tests als Teil der Softwareentwicklungspipeline, um das Geschäftsrisiko der Freigabe des zu testenden Systems (SUT) zu bewerten. [ 4 ] [ 5 ] Der Testumfang erstreckt sich von der Validierung von Bottom-up-Anforderungen oder User Stories bis hin zur Bewertung der Systemanforderungen im Zusammenhang mit übergeordneten Geschäftszielen. [ 6 ]
Modellbasiertes Testen
Beim modellbasierten Testen wird das zu testende System (SUT) modelliert und daraus können Testfälle generiert werden, um die Entwicklung von Tests ohne Programmierung zu unterstützen. Einige Tools unterstützen die Kodierung von Testfällen in einfachem Englisch, sodass diese auf verschiedenen Betriebssystemen , Browsern und Smart-Geräten verwendet werden können . [ 7 ]
Testgetriebene Entwicklung
Testgetriebene Entwicklung (TDD) beinhaltet naturgemäß die Generierung von automatisiertem Testcode. Der Unit-Test- Code wird parallel zum zu testenden Code (SUT-Code) geschrieben. Sobald der Code fertiggestellt ist, sind auch die Tests fertig. [ 8 ]
Andere
Weitere Testautomatisierungstechniken umfassen:
- Datengesteuertes Testen
- Modularitätsgesteuertes Testen
- Keyword-gesteuertes Testen
- Verhaltensorientierte Entwicklung
Überlegungen
Eine Auswertung von 52 Praktiker- und 26 akademischen Quellen ergab, dass fünf Hauptfaktoren bei der Entscheidung für Testautomatisierung zu berücksichtigen sind: das zu testende System (SUT), der Testumfang, das Testwerkzeug, personelle und organisatorische Aspekte sowie übergreifende Faktoren. Die am häufigsten genannten Faktoren waren: der Bedarf an Regressionstests, wirtschaftliche Faktoren und der Reifegrad des SUT. [ 9 ] [ 10 ]
Während die Wiederverwendbarkeit automatisierter Tests von Softwareentwicklungsunternehmen geschätzt wird, kann diese Eigenschaft auch als Nachteil angesehen werden, da sie zu einem Plateau-Effekt führt , bei dem die wiederholte Ausführung derselben Tests keine Fehler mehr aufdeckt.
Testwerkzeuge können helfen, Aufgaben wie die Produktinstallation, die Erstellung von Testdaten, die Interaktion mit der Benutzeroberfläche, die Problemerkennung (erwägen Sie den Einsatz von Parsing- oder Polling-Agenten, die mit Testorakeln ausgestattet sind ), die Fehlerprotokollierung usw. zu automatisieren, ohne dass die Tests unbedingt durchgängig automatisiert werden müssen.
Bei der Entwicklung automatisierter Tests sind folgende Aspekte zu berücksichtigen:
- Plattform- und Betriebssystemunabhängigkeit
- Datengesteuertes Testen
- Berichterstellung ( Datenbank , Crystal Reports )
- Einfache Fehlersuche
- Protokollierung
- Versionskontrolle
- Erweiterung und Anpassung (z. B. APIs zur Integration mit anderen Tools)
- Integration mit Entwicklertools (z. B. Verwendung von Ant oder Maven für die Java -Entwicklung)
- Unbeaufsichtigte Testläufe zur Integration in Build-Prozesse und Batch-Läufe
- E-Mail-Benachrichtigungen (z. B. Unzustellbarkeitsbenachrichtigungen )
- Verteilte Testausführung
Rollen
Um automatisierte Tests mit Code zu unterstützen, müssen Testingenieure oder Mitarbeiter der Softwarequalitätssicherung über Programmierkenntnisse verfügen. Einige Testverfahren, wie z. B. tabellengesteuerte und No-Code-Tests, können den Bedarf an Programmierkenntnissen verringern oder sogar ganz vermeiden.
Rahmen
Ein Testautomatisierungs- Framework bietet eine Programmierumgebung, die Testlogik, Testdaten und weitere Ressourcen integriert. Es bildet die Grundlage für die Testautomatisierung und vereinfacht deren Aufwand. Durch den Einsatz eines Frameworks lassen sich die Kosten für Testentwicklung und -wartung senken . Bei Änderungen an einem Testfall muss lediglich die Testfalldatei aktualisiert werden; Treiber- und Startskript bleiben unverändert.
Ein Framework ist verantwortlich für die Definition des Formats, in dem Erwartungen ausgedrückt werden, die Bereitstellung eines Mechanismus zur Anbindung an oder Steuerung des zu testenden Systems (SUT), die Ausführung der Tests und die Berichterstattung der Ergebnisse. [ 11 ]
Es stehen verschiedene Framework-Typen zur Verfügung:
- Linearer prozeduraler Code, möglicherweise generiert von Tools wie solchen, die Aufnahme und Wiedergabe verwenden.
- Strukturiert – verwendet Kontrollstrukturen – typischerweise „if-else“-, „switch“-, „for“- und „while“-Bedingungen/Anweisungen.
- Datengetrieben – Daten werden außerhalb der Tests in einer Datenbank, Tabellenkalkulation oder einem anderen Mechanismus gespeichert.
- Keyword-gesteuert
- Hybrid – es werden mehrere Typen verwendet
- Agiles Automatisierungs-Framework
- Unit-Tests – einige Frameworks sind primär für Unit-Tests gedacht, wie z. B. xUnit , JUnit und NUnit.
Testautomatisierungsschnittstelle
Eine Testautomatisierungsschnittstelle ist eine Plattform, die einen Arbeitsbereich zur Einbindung verschiedener Testwerkzeuge und -frameworks für System-/Integrationstests bietet . Eine Testautomatisierungsschnittstelle kann die Zuordnung von Tests zu Geschäftskriterien ohne Programmierung vereinfachen. Sie kann die Effizienz und Flexibilität der Testwartung verbessern. [ 12 ]

Eine Testautomatisierungsschnittstelle besteht aus folgenden Aspekten:
- Schnittstellenmodul
- Besteht aus einem Parser und einem Test-Runner. Der Parser dient dazu, die aus dem Objekt-Repository kommenden Objektdateien in die testspezifische Skriptsprache zu übersetzen. Der Test-Runner führt die Testskripte mithilfe eines Test-Harnesses aus . [ 12 ]
- Objekt-Repository
- Sammlung von UI-/Anwendungsobjektdaten, die vom Testtool während der Untersuchung des zu testenden Systems aufgezeichnet wurden. [ 12 ]
Siehe auch
- Vergleich von GUI-Testwerkzeugen
- Liste der Webtest-Tools
- Fuzzing – Automatisierte Softwaretesttechnik
Referenzen
- ^ Kolawa, Adam; Huizinga, Dorota (2007). Automatisierte Fehlervermeidung: Bewährte Verfahren im Softwaremanagement . Wiley-IEEE Computer Society Press. S. 74. ISBN 978-0-470-04212-0Die
- ^ O'Connor, Rory V.; Akkaya, Mariye Umay; Kemaneci, Kerem; Yilmaz, Murat; Poth, Alexander; Messnarz, Richard (15.10.2015). Systems, Software and Services Process Improvement: 22. Europäische Konferenz, EuroSPI 2015, Ankara, Türkei, 30. September – 2. Oktober 2015. Konferenzband . Springer. ISBN 978-3-319-24647-5Die
- ^ Headless-Testing mit PhantomJS; http://phantomjs.org/headless-testing.html
- ^ Teil der Pipeline: Warum kontinuierliches Testen unerlässlich ist , von Adam Auerbach, TechWell Insights August 2015
- ^ Die Beziehung zwischen Risiko und kontinuierlichem Testen: Ein Interview mit Wayne Ariola , von Cameron Philipp-Edmonds, Stickyminds, Dezember 2015
- ^ DevOps: Werden Fehler schneller an die Kunden weitergegeben ?, von Wayne Ariola und Cynthia Dunlop, PNSQC Oktober 2015
- ^ Proceedings der 5. Internationalen Konferenz für Softwaretest und -validierung (ICST). Software Competence Center Hagenberg. „Testdesign: Erkenntnisse und praktische Implikationen“ . doi : 10.1109/IEEESTD.2008.4578383 . ISBN 978-0-7381-5746-7Die
- ^ Vodde, Bas; Koskela, Lasse (2007). „Testgetriebene Entwicklung lernen durch Zählen von Zeilen“. IEEE Software . 24 (3): 74–79 . doi : 10.1109/ms.2007.80 . S2CID 30671391 .
- ^ Garousi, Vahid; Mäntylä, Mika V. (2016-08-01). „Wann und was sollte beim Softwaretest automatisiert werden? Eine Literaturübersicht mit verschiedenen Perspektiven“. Information and Software Technology . 76 : 92–117 . doi : 10.1016/j.infsof.2016.04.015 .
- ^ Brian Marick. „Wann sollte ein Test automatisiert werden?“ . StickyMinds.com . Abgerufen am 20.08.2009 .
- ^ „Selenium Meet-Up 20.04.2010 Elisabeth Hendrickson über Robot Framework 1 von 2“ . YouTube . 28. April 2010. Abgerufen am 26.09.2010 .
- ^ a b c „Conquest: Interface for Test Automation Design“ (PDF) . Archiviert vom Original (PDF) am 26.04.2012 . Abgerufen am 11.12.2011 .
Allgemeine Hinweise
- Elfriede Dustin et al. (1999). Automatisierte Softwaretests . Addison Wesley. ISBN 978-0-201-43287-9Die
- Elfriede Dustin et al. (2009). Implementierung automatisierter Softwaretests . Addison Wesley. ISBN 978-0-321-58051-1Die
- Mark Fewster & Dorothy Graham (1999). Software Test Automation . ACM Press/Addison-Wesley. ISBN 978-0-201-33140-0Die
- Roman Savenkov: Wie man Softwaretester wird. Roman Savenkov Consulting, 2008, ISBN 978-0-615-23372-7
- Hong Zhu et al. (2008). AST '08: Proceedings of the 3rd International Workshop on Automation of Software Test . ACM Press. doi : 10.1145/1370042 . ISBN 978-1-60558-030-2Die
- Mosley, Daniel J.; Posey, Bruce (2002). Just Enough Software Test Automation . Prentice Hall Professional. ISBN 978-0130084682Die
- Hayes, Linda G., „Handbuch für automatisiertes Testen“, Software Testing Institute, 2. Auflage, März 2004
- Kaner, Cem, " Architekturen der Testautomatisierung " , archiviert am 26.01.2021 in der Wayback Machine , August 2000