Blog

Application Testing

Allgemein, Android, iPhone, User Interface Design 28. Juni 2013 By

Während der Entwicklung von Anwendungen ist kontinuierliches Testing unabdingbar. Es existieren unterschiedliche Ansätze und Konzepte um Software zu testen:

  • Unit-Tests
  • Functional Acceptance Tests
  • Nutzer-Tests

Jede dieser Tests sollte Teil einer Entwicklung von umfangreichen Anwendungen sein. Im Folgenden werden die Kategorien kurz vorgestellt.

Unit-Tests

Diese Testkategorie beschreibt die elementare Prüfung von Funktionen oder Gruppen von Funktionen, um zu untersuchen ob die geschriebenen Programmkomponenten mit unterschiedlichen Parametern zuverlässig funktionieren.

Für diese Tests werden unterschiedliche Test-Cases angelegt um verschiedene Programmbestandteile nach Möglichkeit unabhängig voneinander zu testen. Dies ist jedoch bei komplexen Softwaresystemen nicht immer möglich, da zwischen mehreren Komponenten Abhängigkeiten bestehen, sodass sich Test-Cases überlagern.

Eigenschaften

  • Frühzeitiges Erkennen von Problemen

    Durch die Integration von Unit-Tests in den Entwicklungszyklus können Probleme bzw. unerwartetes Programmverhalten frühzeitig erkannt und beseitigt werden.

    Ein Ansatz der diese Thematik verinnerlicht ist das TDD (Test Driven Development), bei dem die Testszenarien bereits vor der Programmierung festgelegt und realisiert werden. Besteht der geschriebene Quellcode den Test, so kann dieser als vollständig angesehen werden.

  • Erleichtert bzw unterstützt Veränderungen

    Werden im Nachgang der Implementierung Überarbeitungen durchgeführt, so kann mit den Unit-Tests überprüft werden, ob die angepassten Programmbestandteile weiterhin wie erwartet funktionieren. Bestehen die Anpassungen die Unit-Tests nicht, so ist weitere Anpassungsarbeit von dem Entwickler notwendig.

  • Vereinfacht Integration

    Sind Unit-Tests vernünftig geschrieben und beachtet worden, sind Integrationstests mit weniger Aufwand zu realisieren, da die individuellen Programmbestandteile bereits geprüft wurden.

  • Dokumentation des Projektes

    Durch die kontinuierliche Ausführung von Unit-Tests kann der Fortschritt des Projektes gut dokumentiert werden, denn es ist zeitnah ersichtlich welche Funktionen in dem letzten Entwicklungszyklus implementiert wurden und ob diese wie erwartet funktionieren.

Functional Acceptance Tests

Bei den sogenannten Akzeptanz-Tests werden bestimmte Programmabläufe auf Funktionalität geprüft. Die Testframeworks arbeiten dabei auf dem erstellten Benutzerinterface und arbeiten bestimmte Abläufe ab. Ein Beispiel: „Martin möchte sich bei der Anwendung registrieren“, könnte folgenden Akzeptanztest besitzen:

  • Vorbedingungen
    • Markus hat keinen Account im System
  • Szenario-Schritte
    • Anwendung zeigt das Registrieren-Formular
    • Martin trägt seine Daten ein
    • Registrierungsformular wird gesendet
    • E-Mail-Verifikation wird durchgeführt
  • Abschlussbedingungen
    • Markus’ Account ist aktiviert
    • Markus kann sich am System anmelden

Je nach Szenario-Definition können auch Fehl-Szenarien in den Tests berücksichtigt werden um das Verhalten der Anwendung im Fehlerfall zu testen.

Test-Frameworks

  • Robot-Framework

    Das Robot-Framework ist generisches Cross-Plattform-Framework für Functional Acceptance Tests. Es werden durch Erweiterungen Browser-, Android- und iOS-Tests unterstützt. Das Schreiben von solchen Funktionstests erfolgt in verschiedenen Testszenarien und Keywords, vergleichbar mit Funktionen, um so verschiedene Abläufe zu gruppieren und zu strukturieren. Das System ist einfach über Python-Skripte oder Java-Bibliotheken erweiterbar.

  • Appium

    Appium ist ein Cross-Plattform-Testframework für iOS und Android. Es benötigt keine zusätzlichen Bibliotheken oder Neukompilierungen von Anwendungen. Die Technologie basiert auf einem Node-JS Server und sämtliche Tests können in unterschiedlichen Sprachen realisiert werden. Appium bietet Beispiele für:

    • .NET
    • Java
    • Node-JS
    • PHP
    • Python
    • Ruby

    Diese Sammlung zeigt, dass für Appium Tests mit einer Vielzahl von Tools geschrieben werden können, je nach Anforderung der Entwickler und Umgebung.

  • Apple UI-Automation

    Apple bietet zum Testen des User Interfaces für iOS und Mac OS X Geräte eine eigene Javascript-Bibliothek. Zur Realisierung kann direkt Xcode verwendet werden, was einen Vorteil für Apple-Developer darstellt, da sie in gewohnter Entwicklungsumgebung arbeiten können. Der Nachteil dieses Frameworks ist jedoch die Gebundenheit an eine Plattform. Es können mit diesem Tool keine plattformübergreifenden Application-Tests geschrieben werden. Für das Testen von Android beispielsweise muss dann auf andere Tools zurückgegriffen werden.

Nutzer-Tests

Die bereits vorgestellten Testmöglichkeiten prüfen Komponenten und Designfunktionalität, jedoch können diese keine Usability der erstellten Anwendungen testen. Aus diesem Grund sind Nutzer-Tests ebenfalls erforderlich um Probleme wie:

  • „Der Button ist schwierig zu treffen“
  • ungewolltes App Feedback bei bestimmten Aktionen

zu finden und dann zu beseitigen. Die ersten beiden vorgestellten Testarten untersuchen immer nur einen bestimmten Ablauf im Programm. Probleme, welche durch längeren Gebrauch der Anwendung auftreten können, werden davon jedoch zumeist nicht abgedeckt. Gibt es irgendwo ein „Memory Leak“? Werden die Views der App immer ordnungsgemäß aktualisiert, beispielsweise nach der Änderung der Systemsprache oder anderen Einstellungen?

Durch Nutzer-Tests können solche Probleme zumeist erst aufgedeckt werden.

Zusammenfassung

Jede dieser Testarten sollte Bestandteil einer komplexen Softwarelösung sein, um Funktionalität und Usability zuverlässig gewährleisten zu können. Die einzelnen Testarten liefern erst im Zusammenspiel aussagekräftige Ergebnisse. Unit-Tests prüfen die interne Struktur, Acceptance-Tests analysieren das Zusammenspiel von Layoutkomponenten und Screens und Nutzer-Tests untersuchen die Bedienbarkeit für den Endnutzer. Sind sämtliche Bereiche abgedeckt, sollte die entwickelte Anwendung stabil und für den Nutzer zufriedenstellend funktionieren.

Informationsquellen


stefanbenischke

There is no information available yet.

iOS 7 – Neue We… 26. Juni 2013 Cloud-Backend based A… 30. Juni 2013