Tel. 06151 / 39 10 793

Robotium - Black-Box Tests für Android

03.12.2012  • Benedikt Kappes
Robotium Logo

Um die Qualität in der Android-Entwicklung zu sichern gibt es einige hilfreiche Tools. Eines von ihnen ist Robotium, mit welchem sich Black-Box Tests erstellen lassen.

Dem einen oder anderen ist Selenium ein Begriff, dies ist ein Testframework für Webanwendungen. Mit diesem können Benutzereingaben imitiert, durch Webseiten navigiert, Formulare ausgefüllt, vorhandene Texte überprüft und Schaltflächen betätigt werden. Genau so eine Funktionalität bietet Robotium für Android "It's like Selenium, but for Android".

Mit Robotium können Android-Anwendungen aus Benutzersicht getestet werden, jedes Programm das eine Oberfläche besitzt lässt sich testen. Sind die Testfälle einmal festgelegt lassen sich diese automatisiert durchführen und es werden für diese, meist kreativ lose, Aufgabe keine Testpersonen mehr benötigt.

Um eine Anwendung testen zu können ist es nicht nötig im Besitz des Quellcodes zu sein, es ist ausreichend die APK-Datei zu besitzen. Dies ermöglicht es Anwendungen an externe Tester weiter zu geben, ohne das der Quellcode offen gelegt werden muss.

Robotium ist momentan unter der Version 3.6 verfügbar und steht unter der Apache-Lizenz 2.0. Der Quellcode ist auf GitHub verfügbar.

Ein Beispiel

Zur Veranschaulichung will ich hier ein kleines Beispiel zeigen. Bei diesem ist der Quellcode der zu testenden Anwendung vorhanden.

Unser Szenario sieht wie folgt aus:
Beim starten der Anwendung erscheint ein Textfeld und ein Button.
In das Textfeld lässt sich ein Text eingeben, sobald der Button betätigt wird gelangen wir zu einer weiteren Activity mit einem Textfeld. In diesem soll nun der soeben eingetragene Text wieder erscheinen (siehe Grafik).
Activities

Den Testfall legen wir wie folgt fest:

  1. 1. Trage "brightsolutions" in das Textfeld ein
  2. 2. Betätige Button "Next"
  3. 3. Überprüfe ob "brightsolutions" im Textfeld der neuen Activity erscheint



Erstellen eines Testfalles

Als erstes muss ein Testprojekt erstellt werden, als zu testendes Projekt wird unser eben beschriebenes Szenario ausgewählt (Dies wurde vorher als Android-Projekt erstellt). Erstellen eines Tests
Des weiteren benötigen wir die Robotium jar-Bibliothek, welche auf der Robotium Seite heruntergeladen werden kann. Diese wird nun als Bibliothek in das Testprojekt eingebunden. Bibliothek integrieren
Als nächstes muss eine Activity angelegt werden, welche von ActivityInstrumentationTestCase2 erbt.

public class BlogEntryTestActivity extends ActivityInstrumentationTestCase2<MainActivity>  {

private Solo solo;

@SuppressWarnings("deprecation")
public BlogEntryTestActivity() {
super("com.example.blogentry", MainActivity.class);
}

@Override
public void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}

@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
super.tearDown();
}

public void testTextView(){
// Check that we have the right activity
solo.assertCurrentActivity("wrong activiy", MainActivity.class);
solo.enterText(0, "brightsolutions");
solo.clickOnButton("Next");

solo.waitForActivity(NextActivity.class.getSimpleName());
// Check that we have the right activity
solo.assertCurrentActivity("wrong activity", NextActivity.class);
// Check if brightsolutions appears in the activity
assertTrue(solo.waitForText("brightsolutions"));
}
}

Über eine Instanz der Klasse Solo kann auf die Funktionalität von Robotium zugegriffen werden. Damit lässt sich der oben beschriebene Ablauf für unseren Testfall in der Funktion testTextView() implementieren.

Ausführen des Tests

Nachdem unser Testfall fertig implementiert ist, kann der Test gestartet werden. Dazu muss das Projekt als Android JUnit Test gestartet werden. Falls ein java.lang.NoClassDefFoundError: com.jayway.android.robotium.solo.Solo Fehler auftritt kann dieser dadurch behoben werden, dass im Java Build Path unter dem Reiter "Order and Export" ein Hacken bei der Robotium Bibliothek gesetzt wird.Order and Export
Nun sehen wir wie sich von Zauberhand das Textfeld füllt, der Button betätigt wird und wir auf die nächste Activity gelangen. Wenn alle unsere Annahmen korrekt waren erscheint ein grüner Balken, den man von den JUnit Tests kennt.

Fazit

In diesem Beispiel wurde nur eine geringe Funktionalität von Robotium vorgestellt. Es ist möglich Checkboxen auf ihren Zustand zu prüfen, zu scrollen, sogar Drag-Bewegungen durchzuführen und vieles mehr.

Robotium bietet somit eine gute Möglichkeit Android Programme schnell und einfach auf verschiedenen Geräten zu testen und somit die Qualität einer Anwendung sicherzustellen.

Ich wünsche viel Spaß beim Testen
Benedikt

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Suchen


Unsere Partner
comm-press comm-press
Drupal Spezialisten aus Hamburg
neosmart - Digital Media, Webdesign & Webentwicklung<br />
aus Darmstadt neosmart
Digital Media, Webdesign & Webentwicklung aus Darmstadt
trinomica - Software Solutions trinomica
Software Solutions
Sponsoring und Mitgliedsschaften

Drupal Initiative Deutschland - Firmen-Mitglied

So finden Sie uns