12+ Jahre App-Entwicklung
Schnell mit KI, stark durch Erfahrung
50+ Erfolgreiche App-Projekte

Blog

Automatisierte UI-Tests leicht gemacht mit Xamarin.UITest

Als Entwickler kennen wir alle das Gerücht, dass jede Art von Test teuer ist. In diesem Beitrag möchte ich einen besseren Weg zeigen, UI-Tests zu schreiben, der sogar bei großen mobilen Apps Spaß machen kann.


Wo kommen wir her?

Um einen guten Satz von Tests für eine Anwendung zu bekommen, müssen wir normalerweise zuerst festlegen, was wir überhaupt testen wollen. Danach erstellen wir Testfälle, Klassen und alles andere, was nötig ist, um unsere Anwendung zu testen. Eine belastbare Teststrategie ist sowohl in der Software Entwicklung als auch bei jeder plattformübergreifenden App die Basis für verlässliche Releases.

Mit Xamarin Test Cloud kann man diese Testfälle mithilfe des REPL-Kommandozeilenwerkzeugs zum Leben erwecken. Mit REPL navigiert man zunächst durch die App, fragt die einzelnen Screens auf enthaltene UI-Steuerelemente ab und interagiert anschließend mit ihnen.

Ein einfacher Test für einen Login-Button könnte zum Beispiel so aussehen:

[TestFixture]
public class TelematicsDroidTest
{
    IApp _app;

    [Test]
    public void LoginAsDemoUser()
    {
        Func<AppQuery,AppQuery> demoLoginButton = e => e.Id("Logon_LoginDemo_Button");
        Func<AppQuery, AppQuery> mainFragmentContainer = e => e.Id("Main_FragmentContainer");

        _app.WaitForElement(demoLoginButton, "Timed out waiting for the Login_LoginDemo_Button to appear.");
        _app.Tap(demoLoginButton);
        _app.WaitForElement(mainFragmentContainer, "Timed out waiting for the Main_FragmentContainer to appear.");
        
        _app.Screenshot("Screennshot_after_press_Login_Button");
    }
}

Was man hier nicht sieht, ist der Zeitaufwand bis zu diesem Punkt. Normalerweise probiert man solche Schritte zuerst mit REPL aus, kopiert sie danach in den Testfall, testet lokal erneut und lädt sie im letzten Schritt in Xamarins Test Cloud hoch. Für Entwickler ist das gut nachvollziehbar, für Tester kann dieser Prozess aber unnötig zeitaufwendig sein.

Wie können wir das verbessern?

Mit dem Start von Xamarin 4, das generell viele Verbesserungen für das Xamarin-Ökosystem mitbrachte, kam auch mein Lieblingsfeature: der Xamarin Test Recorder.

Der Xamarin Test Recorder macht UI-Testing deutlich einfacher, egal ob man gerade erst mit UI-Tests anfängt oder zusätzliche Tests für eine bestehende App benötigt.

Warum verbessert er die Erstellung von UI-Tests?

  • Das Point-and-Click-Prinzip macht UI-Tests auch für Menschen ohne tiefe Programmierkenntnisse einfacher.
  • Man kann Tests während des manuellen Testens mitschreiben.
  • Das Werkzeug eignet sich sowohl für kleine als auch für große App-Projekte.
  • Mit dem Test Recorder muss das REPL-Werkzeug nicht mehr direkt verwendet werden.

FAQ

Xamarin.UITest ist ein Framework für automatisierte UI-Tests mobiler Apps. Es erlaubt, Benutzeroberflächen auf Android und iOS zu bedienen, auf Elemente zu warten und typische Nutzerabläufe automatisiert zu prüfen.

Xamarin Test Recorder vereinfachte das Erstellen von UI-Tests, indem Testschritte per Point-and-Click oder während manueller Tests aufgezeichnet werden konnten. Dadurch war weniger direkte Arbeit mit REPL und handgeschriebenem Testcode nötig.

REPL ist ein Kommandozeilenwerkzeug, mit dem man durch die App navigiert, UI-Elemente abfragt und Interaktionen ausprobiert. Es wurde häufig genutzt, um UI-Abfragen zuerst zu testen, bevor sie in eigentliche Testfälle übernommen wurden.

Sebastian Seidel

Sebastian Seidel

Als Mobile-Enthusiast und Geschäftsführer der Cayas Software GmbH ist es mir ein großes Anliegen, mein Team und unsere Kunden zu unterstützen, neue potenziale zu entdecken und gemeinsam zu wachsen. Hier schreibe ich vor allem zur Entwicklung von Android und iOS-Apps mit Xamarin und .NET MAUI.

Verwandte Artikel

Bluetooth LE mit .NET MAUI entwickeln: LEGO Porsche GT4 als Praxisbeispiel
Bluetooth LE mit .NET MAUI entwickeln: LEGO Porsche GT4 als Praxisbeispiel

Bluetooth Low Energy mit .NET MAUI: Dieser Artikel zeigt, wie sich BLE-fähige Geräte plattformübergreifend für Android und iOS ansprechen lassen. Als Praxisbeispiel dient der LEGO Porsche GT4 e-Performance mit dem offiziellen LEGO Wireless Protocol, inklusive Hub-Service, Port-Erkennung und Motorsteuerung.

Lottie-Animationen mit Gesten und Scrollen kombinieren
Lottie-Animationen mit Gesten und Scrollen kombinieren

In diesem Artikel lernst du, wie du Lottie-Animationen in .NET MAUI integrierst und sie mit Gesten, Scroll-Positionen und CarouselViews verknüpfst. Du erfährst, wie Animationen per Tap, durch Tippen & Halten, über Scroll-Interaktionen sowie beim Wechseln von CarouselView-Seiten gesteuert werden. Zusätzlich bekommst du komplette XAML- und C#-Beispiele, Best Practices und fertige Demo-Videos, um interaktive und moderne UI-Erlebnisse in deiner MAUI-App umzusetzen.

Individuelle Karten in .NET MAUI: Custom Map-Handler einfach erklärt
Individuelle Karten in .NET MAUI: Custom Map-Handler einfach erklärt

Ich arbeite derzeit an der Portierung einer Xamarin Forms App zu .NET MAUI. Die App verwendet auch Karten von Apple oder Google Maps, um Standorte anzuzeigen. Obwohl es bis zur Veröffentlichung von .NET 7 keine offizielle Unterstützung in MAUI gab, möchte ich Ihnen eine Möglichkeit zeigen, Karten über einen benutzerdefinierten Handler anzuzeigen.