Die Internetagentur für Web- und App-Entwicklung

Switch to desktop Register Login

Automatisiertes Testen für Android mit Robotium Empfehlung

Artikel bewerten
(24 Stimmen)

Android Software hat große Anforderungen an Testumgebungen und Qualitätssicherung. Die Fragmentierung, die in der Android Entwickler Welt vorherrscht, erfordert ein hohes Maß an Aufmerksamkeit der Entwickler. Es gibt eine Vielzahl von verschiedenen Geräten. Diese haben unterschiedliche Bildschirmauflösungen und Firmware-Versionen. Somit ist nicht automatisch eine Rückwärtskompatibilität für niedrigere SDK-Versionen gewährleistet. Nicht zuletzt müssen die Vielzahl von Bildschirmauflösungen, unter anderem auch für Tablets so beachtet werden, so dass alle grafischen Elemente korrekt skaliert und angezeigt werden.



Automatisiertes Testen mit Robotium

Eine Testmöglichkeit besteht in der Verwendung des Test-Tools Robotium - einem Addon für die Testautomatisierung. Insbesondere ist es zeitaufwendig für den testenden Benutzer eine App immer wieder neu zu starten, und sich bis zum Szenario des Testfalls durchzuklicken. Sind mehrere Tests erforderlich kann dies einige Zeit in Anspruch nehmen. hinzukommt, dass der Nutzer ebenso an die Verwendung der Android LogCat oder an den Debugger gebunden ist, um eine Sachverhalte, Variablen und Parameter inspizieren zu können. Robotium ist ein Tool, welches genau diese Vorgänge automatisieren kann. Durch die Programmierung mir Robotium kann das Benutzerverhalten quasi simuliert werden. Das betrifft das Öffnen der Anwendung, das Tätigen von Touch-Bewegungen auf dem Bildschirm, genau wie das Klicken von Buttons oder Verwenden von Spinnern. Dazu kann das Android Tool so programmiert werden, dass die Benutzerinteraktion innerhalb weniger Millisekunden ausgeführt werden. So kann der Tester schon einige Minuten bei nur einem Testdurchgang sparen und wertvolle Zeit gewinnen. Auch Assertions, die denen von JUnit gleichen, können verwendet werden, um im Code Parameter, Grafiken und andere Gegenstände auf Korrekt zu überprüfen.

Installation von Robotium

Zunächst muss Robotium in Form einer jar-Bibliothek auf http://code.google.com/p/robotium/downloads/list herunter geladen werden. Die Aktuelle Version ist http://robotium.googlecode.com/files/robotium-solo-3.1.jar. Diese wird im Classpath also als Bibliothek in das Java Projekt eingebunden.



Der Einfachheit halber nehmen wir ein denkbar einfaches Projekt. Das Beispiel besteht aus einer Main-Aktivität, die lediglich aus einem Button besteht. Die Aufgabe von Robotium ist es diesen automatisiert zu drücken. Der Button selbst ändert seinen Text, sobald man ihn gedrückt hat. Auch das werden wir per Assertion testen. Das Projekt muss den Testrunner kennen, welcher in der Manifest-Datei als Library angegeben werden muss. Zusätzlich ist das instrumentation-Tag wie folgt erforderlich:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.test.project"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />

<activity
android:name=".TestProjektActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:label="NotePadTesting"
android:targetPackage="android.test.project" />

</manifest>

Nunn muss eine Activity angelegt werden, welche in diesem Fall von ActivityInstrumentationTestCase2 erbt - generischer Typ ist die Klasse der Aktivität, welche man testen möchte. Der Konstruktor erhält als Parameter als String den Packagepfad, sowie das Klassenobjekt der Testklasse. Das solo-Objekt stellt die Steuerungseinheit dar. Mit ihm lassen sich Bewegungen, Button-Klicks und andere Interaktionen durchführen. In der setUp-Methode wird Code ausgeführt, der vor den Tests erledigt werden soll. Analog wird Code aus der tearDown-Methode nachfolgend erledigt. Die eigentlichen Tests finden in den test-Methoden statt.

package android.test.project;

import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;

public class RobotiumTestActivity extends ActivityInstrumentationTestCase2<TestProjektActivity> {

private Solo solo;
private Button button;


public RobotiumTestActivity() {
super("android.test.project", TestProjektActivity.class);
}

public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
button = (Button) getActivity().findViewById(R.id.button);
}

public void testButton() throws Exception {
assertNotNull(button);
assertEquals("click!", button.getText().toString());
solo.clickOnButton("click!");
assertEquals("clicked!", button.getText().toString());
}

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


Zum Schluss noch die triviale Grafik ergibt sich aus der main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="click!"
android:onClick="onClick"/>

</LinearLayout>

Ausführen der Tests

Sind alles Methoden, Klassen und xml-Dateien korrekt gesetzt kann das Projekt gestartet werden. Dazu kann die Klasse in eclipse direkt per Rechtsklick - Run as Android JUnit Test  gestartet werden. Die Grafik zeigt mit einem grünen Balken, dass alles Assertions korrekt Annahmen waren. Schlussendlich ist festzuhalten, dass Robotium ein sehr mächtiges Test-Tool für Android App Entwickler ist. Sie können damit viel Zeit, Fehler, Bugs und Aufwand ersparen.



1 Kommentar

  • Leif Janzik

    Danke für den Artikel, setze Robotium gerade zum ersten Mal in einem Projekt ein, da hat mir der Artikel sehr bei den ersten Schritten geholfen.

    gepostet von Leif Janzik

Schreibe einen Kommentar

Make sure you enter the (*) required information where indicated. Basic HTML code is allowed.


Bitte vervollständigen Sie das Bild:

© 2010 softwaresupply | Liebknechtstraße 85, 63303 Dreieich | App Entwickler Blog | App Entwicklung | Homepage Design | Kontakt | Impressum | Geschäftsführung: Florian Lindner

Top Desktop version