HARDTSOLUTIONS

Software Engineering & Design

Automatisiertes Testing

2019-05-23 Dimitrijtesting

Wofür sind automatisierte Tests überhaupt gut?

Nahezu jede Anwendung wird im Laufe ihrer Lebensdauer erweitert oder verändert. Die Anwendung muss also flexibel sein und Änderungen zulassen. Dies wird vor allem durch gute, modulare Architektur erreicht. Aber das alleine reicht nicht! Die automatisierten Tests sind für eine erfolgreiche und schnelle Weiterentwicklung von essentieller Bedeutung. Die Tests müssen schnell sein und eine gute Testabdeckung sicherstellen. Gute Testsuite ermöglicht es dem Entwickler sehr schnell ein Feedback darüber zu erhalten, ob seine Änderung zu unvorhersehbaren Seiteneffekten/Fehlern geführt hat.

Eine gute Testsuite ermöglicht es den Entwicklern die Anwendung ständig zu verbessern und zu erweitern, ohne dabei Angst zu haben die bestehende Funktionalität zu beschädigen. Ist keine ausreichende Testabdeckung vorhanden, so wird das Erweitern der Anwendung mit der Zeit immer schwieriger und anstrengender. Die Entwicklung neuer Funktionalitäten dauert immer länger und die Wahrscheinlichkeit mit einem Release neue Fehler zu machen steigt. Irgendwann macht es dem Entwickler auch keinen Spaß mehr an der Weiterentwicklung der Anwendung weiterzuarbeiten.

Wer soll die Tests schreiben?

Wenn du das immer noch liest, dann bist du hoffentlich, davon überzeugt, dass die automatisierten Tests für die erfolgreiche Softwareentwicklung sehr wichtig sind. Jetzt stellt sich die Frage wer diese Tests eigentlich schreiben sollte. Dafür gibt es unterschiedliche Ansätze.

Größere Projekte können sich meistens ein dediziertes QA-Team leisten. Das Team hat die Aufgabe eine gute Qualität des entwickelten Softwareprodukts sicher zu stellen. Gute QA-Teams beschäftigen sich primär mit der Automatisierung des Testprozesses. Wenn manuelle Tests durchgeführt werden, dann sind sie eher exploratorischer Natur. Es werden dabei nicht alle möglichen Kombinationen der Inputparameter durchgetestet. Es ist ja schließlich durch automatisierte Tests schon längst geschehen. Es geht eher darum neue Anwendungsszenarien zu finden, welche vorher noch nicht abgedeckt wurden, um diese später zu automatisieren.

In kleineren Projekten wiederum sind meistens die Entwickler selbst dafür verantwortlich die Testsuite aufzubauen oder arbeiten eng mit wenigen Testern zusammen. Dabei ist es oft so, dass QA sich primär mit erstellen von fachlichen Testszenarien beschäftigt und für die Automatisierung die Entwickler verantwortlich sind. Dass die technischen Tests (z.B. Unit- oder Integrationstests) ohnehin von Entwickler erstellt werden ist klar. Wie könnte aber eine effektive Zusammenarbeit zwischen Entwickler und QA aussehen, um bei der Erstellung automatisierter End-To-End (oder Akzeptanz-) Tests beide Seiten möglichst gut einzubinden?

Ein Ansatz, welchen ich bereits in einem Projekt erfolgreich anwenden konnte, wäre es die Aufgabe in zwei Teile zu zerlegen. Ein Entwickler bereitet ein technisches Framework vor und erstellt einen Testbaukausten. Dieser Baukasten soll auch für eine nicht technische Person benutzbar sein. Die QA erstellt anschließend mit Hilfe dieses Baukastens die Testszenarien. Das Endergebnis ist eine Testsuite, die automatisch ausgeführt werden kann.

Im nächsten Post werde ich (sehr technisch) beschreiben, wie man ein Softwareprodukt, welches nur aus einer API besteht, mit Hilfe von nicht-technischen QA Teams automatisiert testen kann.

Loading...
Hardtsolutions

Dimitrij

Full-Stack Software Developer