Zum Inhalt springen

Blogeintrag

Testautomatisierung und Toolauswahl mobiler Apps – Teil 2: Automatisierung

Manueller vs. Automatisierter Test

Wie wir schon im Teil 1 dieser Artikelserie gesehen haben kann nicht jede – eigentlich sogar relative wenige – gerätespezifische Funktion automatisiert werden. So sind zum Beispiel Ortsdaten oder andere Daten der Umweltsensoren schwer (oder gar nicht) simulierbar, sodass diese Art von Tests in der Regel manuell zu testen sein werden.
Eine reine manuelle Teststrategie ist aber generell nicht empfehlenswert. Es wird vernünftigerweise ein Testautomatisationsexperte ausgewählte Testszenarien automatisieren. Dazu kommen wir etwas später noch detaillierter.

Die erschwerte Situation in der Automatisierung muss mittels intensivierter Tests in den frühen Teststufen ausgeglichen werden: Sehr viel hängt dabei an guten Unittests oder auch Codereviews und natürlich an den schon erwähnten manuellen Tests, die umfangreicher sind, als bei anderen Arten von Software.

  • Unittests mit z. B. Junit, TestNG, XCTest
  • Statische Codereviews (toolunterstützt mit FindBugs, Checkstyle, Lint oder PMD)

Ein weiteres Testthema, das bei Apps wesentlich mehr als sonst im Blickfeld steht, ist die Usability. Hier gilt seit jeher die Heuristik: „Weniger ist mehr!” Usabilitytests sind ein wichtiges Thema, sie helfen nicht nur Frustrationen beim Kunden zu vermeiden, sondern auch Compliance- und Accessibility-Guides der Hersteller einzuhalten. Auch hier gilt: nicht alles kann und soll automatisiert werden!   

Info
Übrigens, wer sich für Usability interessiert, findet mit den „10 Usabilityheuristiken für User-Interface-Design“ von Jakob Nielsen eine hilfreiche Checkliste: www.nngroup.com/articles/ten-usability-heuristics/

Wo testen? Emulator, Simulator oder echtes Gerät?

Eine wichtige Frage, die sich oft stellt: Wie soll die Testumgebung aussehen? Doch die Antwort ist einfach: Wenn möglich, immer am echten Gerät automatisieren und nicht im Emulator oder Simulator. Nur dann sind die Ergebnisse valide. Ein gutes Tool sollte aber immer beide Welten unterstützen, denn ein schnelles Feedback über Smoketests am Simulator ist eventuell Teil der Teststrategie und kann in einer CI durchaus Entwicklern ausgezeichnete Dienste leisten (als effiziente Feedbackloop).

Warum sind automatisierte Tests eine gute Sache?

  • Kürzere Feedbackschleifen ermöglichen ein rasches Handeln des Teams
  • Ein Set an Regressionstests hilft bei Änderungen
  • Dokumentation der Tests automatisch durch das Testskript
  • Die Prüfung der Requirements ist strikt und immer gleich
  • Nebeneffekt der Nutzung automatisierter UI-Tests zur Erzeugung von Last für Performance- und Lasttests

(Durch den strikt formellen Charakter der Testausführung spricht man z. B. in der Rapid Software Testing-Methode auch durchaus von Checks und wertet damit manuelle Tests entsprechend auf. Siehe www.satisfice.com/blog/archives/856)
Nichtsdestoweniger sind automatisierte Checks oft schwer zu erstellen, sie laufen vielfach langsam, sind aufwändig zu warten, und verhalten sich meist sehr anfällig gegenüber Störungen. Das größte Problem bei automatisierten End-to-end-Tests ist oft nicht die Geschwindigkeit, sondern die Analyse des Testresultats: Wo genau trat der Fehler auf? Im Backend? In der App? Waren die Daten nicht korrekt oder hatte der Testfall selbst ein Problem?
Im Gegensatz zu Unittests informiert Sie ein automatisierter UI-Test nicht darüber, was defekt ist und wo sich den Fehler im Code lokalisieren lässt. Es ist beim End-to-end-Test auch das gesamte integrierte System involviert und wird getestet.

Aus einigen naheliegenden Gründen wurde deshalb von manchen Autoren (beispielsweise Daniel Knott, Autor des Ebooks „Hands-On Mobile App Testing“) vorgeschlagen, die bekannte Testpyramide (die ursprünglich von Mike Cohn entwickelt wurde) für mobile Apps quasi umzudrehen und entsprechend anzupassen.

Aus der üblichen Testpyramide, wie folgt abgebildet, wurde die „Flipped Testing Pyramid“.

 

 

Und damit diese gekippte Pyramide nicht instabil auf ihrer Spitze balancieren muss, wurde sie entsprechend der ursprünglichen Vorgabe wieder richtig gedreht, aber entsprechend den Gegebenheiten mobiler Tests überarbeitet.

 

Mobile Apptests sind auf eine große Anzahl an manuellen Tests angewiesen, welche in der Pyramide die Testbasis darstellen. Darüber hinaus finden automatisierte End-to-end-Tests statt. Darauf steht der Betatest, der gerade bei mobilen Apps sehr wichtig ist, da er das wichtige Feedback der User einholt und deren hohen Erwartungen durch frühe Rückmeldungen nicht außer Acht lässt. Unit-Tests als Spitze der Pyramide stellen die Qualität der Code-Foundation sicher, sind aber weniger umfangreich als bei Softwareentwicklung mit der original Testpyramide. (Die grünen Flächen in der Grafik sind automatisierte Tests.)

 

 

Es gibt nebenbei einige gute Beispiele für End-to-end-Testautomatisierung, die sich in jeder Hinsicht bezahlt machen, hier eine Auswahl:

1. Smoketests, die ein schnelles Feedback geben und Basisfunktionalität prüfen
2. Testsuiten für spezielle Tests, die sich z. B. besonders gut für die Automatisierung eignen (z. B. Performance, Last)
3. Use-Cases, Workflows die oft wiederholt werden oder besonders geschäftskritisch sind, wie Installation, Login, Registrierung etc.
4. Regressionstests mit allen wichtigen Skripten, für ein rasches Feedback ans Team

Was sollte automatisiert werden?

Wichtig ist, es lässt sich niemals die gesamte Anwendung automatisieren, das ist auch aus ökonomischer Sicht nicht sinnvoll. Wertvoll sind konkrete Testziele und ein Beginn der Automatisierung schon in den frühen Test- bzw. Entwicklungsphasen. Kleine, schnelle, überschaubare, unabhängige und stabile Tests sind besser als Monster-Use-Cases, die in die „Wartungshölle“ führen.
End-to-end-Tests sind eine gute Möglichkeit das Gesamtsystem zu betrachten, damit lassen sich auch sehr gut mittels APM-Tools Performance-Issues tracken.

Fazit: Die Teststrategie sollte eine gute ausbalancierte Variante von manuellem und automatisiertem Test darstellen.

Nächstes Monat, im dritten Teil beschäftigen wir uns mit den eigentlichen Tools für die mobile Testautomatisierung.

Fachlicher Kontakt

Johannes Bergsmann

johannes.bergsmann@software-quality-lab.com

 +43 5 0657-420
 +43 676 840072 420