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).

Den Testfall legen wir wie folgt fest:
- 1. Trage "brightsolutions" in das Textfeld ein
- 2. Betätige Button "Next"
- 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).
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.
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.
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