Was ist Detox?

Detox-Framework ist ein Werkzeug, das Entwicklern dabei hilft, automatisierte Tests für ihre mobilen Anwendungen zu erstellen und durchzuführen. Es wurde ursprünglich von Wix.com für die Qualitätssicherung von React Native-Anwendungen entwickelt.

Eines der Hauptziele von Detox ist es, die Integration von automatisierten Tests in den Entwicklungsprozess zu vereinfachen und zu verbessern. Dies ermöglicht es Entwicklern, sicherzustellen, dass ihre Anwendungen ordnungsgemäß funktionieren, indem sie wiederholbare Tests durchführen, die potenzielle Fehler aufdecken und beheben können, bevor sie in die Produktion gelangen.

Das Detox-Framework verwendet einen Black-Box-Ansatz, bei dem es sich nicht um die inneren Funktionen einer Anwendung kümmert, sondern nur auf die Benutzeroberfläche und die Art und Weise, wie ein Benutzer mit der Anwendung interagiert. Dies ermöglicht es, Tests zu schreiben, die sehr nahe an der Art und Weise liegen, wie ein echter Benutzer die Anwendung verwenden würde, was wiederum dazu beiträgt, potenzielle Probleme frühzeitig zu identifizieren.

Vorteile von Detox

Das Detox-Framework wurde entwickelt, um die Testautomatisierung von mobilen Anwendungen zu vereinfachen. Es bietet eine einfache API, die es Entwicklern ermöglicht, ihre Tests in JavaScript zu schreiben. Ein weiterer Vorteil des Detox-Frameworks ist, dass es eine echte Geräteumgebung simuliert, wodurch sichergestellt wird, dass die Tests so nah wie möglich an der tatsächlichen Benutzererfahrung sind. Dies ist wichtig, da die Verwendung von Emulatoren oder simulierten Umgebungen oft zu inkonsistenten Ergebnissen führen kann.

Verwendung Detox

Um Detox zu benutzen, müssen Sie zunächst das Detox-Paket in Ihrem Projekt installieren. Dies kann mit dem Befehl npm install detox –save-dev ausgeführt werden.

Sobald Detox installiert ist, müssen Sie eine Konfigurationsdatei erstellen, in der die Einstellungen für Ihre Testumgebung festgelegt werden. Diese Datei wird normalerweise detox.config.js genannt und muss im Stammverzeichnis Ihres Projekts gespeichert werden.

Hier ist ein Beispiel für eine einfache Detox-Konfigurationsdatei:

const config = require('detox/configurations/ios.sim.release');
config.binaryPath = './myapp.app';
config.device = 'iPhone 11';
config.name = 'MyApp';
module.exports = config;

In dieser Konfigurationsdatei werden die Einstellungen für eine iOS-Simulator-Umgebung festgelegt. Die Pfadangabe für die Anwendungsdatei wird geändert, das Zielgerät wird auf das iPhone 11 festgelegt und der Name der Anwendung wird auf „MyApp“ festgelegt. Weitere Einstellungen können in dieser Datei festgelegt werden, um die Testumgebung für Ihr spezielles Projekt anzupassen.

Sobald das Projekt initialisiert wurde, können Sie Testfälle schreiben, die das Framework ausführen und die Funktionalität Ihrer Anwendung überprüfen.

Ein einfaches Beispiel für einen Testfall könnte wie folgt aussehen:

 
const detox = require('detox');
const config = require(detox.config.js');

before(async () => {
  await detox.init(config);
});

beforeEach(async () => {
  await device.reloadReactNative();
});

afterEach(async () => {
  await detox.cleanup();
});

it('should have welcome screen', async () => {
  await expect(element(by.id('welcome'))).toBeVisible();
});

Dieses Beispiel testet, ob die Willkommens-Anzeige in der mobilen Anwendung sichtbar ist. Dazu wird zunächst das Detox-Modul importiert und initialisiert, dann wird die mobile Anwendung neu geladen und zuletzt wird überprüft, ob das Element mit der ID „welcome“ sichtbar ist.

 

Um den Test auszuführen, können Sie den Befehl detox test verwenden. Dieser Befehl lädt die Anwendung, führt den Test aus und gibt die Ergebnisse auf der Konsole aus. Weitere Informationen zum Schreiben und Ausführen von Detox-Tests finden Sie in der Detox-Dokumentation.

Unterschied Appium / Detox

Appium und Detox sind beides Tools zum Testen von mobilen Anwendungen. Der Hauptunterschied zwischen den beiden ist, dass Appium ein Open-Source-Tool ist, das für die Verwendung mit verschiedenen Betriebssystemen wie Android und iOS entwickelt wurde, während Detox ein proprietäres, auf React Native aufbauendes Tool ist, das nur für die Verwendung mit React Native-Anwendungen geeignet ist. Aufgrund ihres unterschiedlichen Ansatzes können sie auch unterschiedlich gut für verschiedene Testanforderungen geeignet sein, so dass es wichtig ist, die Vor- und Nachteile beider Tools zu berücksichtigen, bevor man sich für eines entscheidet.