Automatisches Testen für Cordova / Phonegap Webview auf Android

8

Ich bin derzeit auf der Suche nach einer Lösung zum automatischen Testen von Android Apps, nativen Android-Apps sowie hybriden Cordova / Phonegap-Apps.

Der UI Automator von Google sieht gut aus, kann aber nicht mit WebViews umgehen, was ihn für mich unbrauchbar macht. Dann fand ich den viel versprechenden Automatisierungsrahmen Appium auf Basis von Selenium, der auch mit hybriden Apps zurechtkommen soll, aber das konnte ich nicht Es funktioniert nicht mit WebViews, es scheint noch nicht vollständig implementiert zu sein, wie auch mehrere Posts beweisen.

Nachdem ich Appium ausprobiert hatte, fand ich einen Hinweis für Selendroid , das auch für hybride Apps funktionieren sollte, aber es scheint ziemlich viel zu sein Buggy und stürzt ständig den ganzen Computer ab.

Also, kennt hier jemand eine funktionierende Lösung zum Testen von Android Apps mit WebViews? Ich arbeite an Windows 7. Vielen Dank im Voraus für jede Hilfe.

    
qefzec 11.09.2013, 10:59
quelle

3 Antworten

6

Im ersten Fall müssen wir wissen, welche Art von Tests Sie fahren möchten. Ich denke, Sie möchten Funktionstests auf der Benutzeroberfläche ausführen? Das ist, worüber ich nach dem Lesen Ihrer Frage nachdenken kann.

Also lasst uns das durch die gegebene Umgebung teilen:

natives iOS

natives Android

natives Web wie phonegap / cordova Apps

native X - Die Out-of-the-Box-Lösung für alle Plattformen

  • Hier sind wir. Es gibt keinen ATM. Aber ... footage ist das hier:

Gappium basierend auf appium verwendet json zum Schreiben Ihrer Tests. Da ich den Thread richtig verstanden habe, wurde er für diesen Moment mit Web / iOS getestet. Android / Win scheint für diesen Moment nicht integriert zu sein:

Ссылка

Hinweis für Phonegap & amp; Apache Cordova Funktionstests:

Es ist möglich, Ripple und Selen zum Testen hybrider Apps zu verwenden. Denken Sie daran, dass einige native Funktionen / Plugins (die nativen Funktionen auf Hybrid-Apps ... =) nicht getestet werden können oder auf eine unbekannte Weise verspottet werden müssen. Das ist das Material für diesen Moment.

Vielleicht nützlich für Sie Continous Integration Server:

Ссылка

    
lin 22.01.2014 23:17
quelle
2

Im Allgemeinen ist das Testen von Hybrid-Apps eine Herausforderung mit API-basierten Ansätzen. Es kann getan werden, aber in der Regel müssen Sie die UI-Technologien (z. B. WebView, Native, OpenGL, ...) mit mehreren APIs oder einer Art Wrapper (wie Selendroid) integrieren.

Hier bei TestObject (ich bin einer der Mitbegründer) haben wir einen Ansatz für das Testen von Image-basierten UI speziell für Fälle wie Hybrid-Apps, Interaktion zwischen Apps usw. entwickelt. Dieser Black-Box-Ansatz basiert ausschließlich auf der Erfassung des Bildschirms - es ist uns egal, was darunter passiert.

Fühlen Sie sich frei, es mit Ihrer hybriden Cordova / Phonegap App auszuprobieren ( Ссылка ) und lassen Sie mich wissen, wie es im Vergleich zu UI Automator, Selendroid, Appium. Lassen Sie uns wissen, wenn Sie über irgendwelche Probleme stolpern.

    
enijkamp 11.09.2013 14:09
quelle
1

Ich stellte diese Herausforderung mit unserer eigenen Cordova-App (sourceforge.net/p/ustadmobil/codehtml5cordova/ci/master/tree/); und ich brauchte eine Möglichkeit, dies mit Jenkins CI zu integrieren. Wir haben Cordova-spezifischen Code (z. B. Dateisystemzugriff), so dass nur die Verwendung von PhantomJS und Grunt keine Option ist.

Im Wesentlichen habe ich die App mit der Testseite als index.html im Emulator gestartet, einen HTTP-Server ausgeführt und die Ergebnisse dann mithilfe der Testseite mit AJAX zurückgegeben.

  1. Script startet einen Emulator mit dem Paket
    $ / opt / adt / sdk / tools / emulator-x 86 -avd $ AVDNAME -qemu -m 2047 & amp;
    $ EMULATEPID = $!
    $ adb wait-for-device # wartet darauf, dass das Gerät startet $ adb shell input keyevent 82 #unlock Bildschirm

  2. Erstellen Sie eine Testseite mit qunit, die nach Abschluss die Testergebnisse mit einem AJAX-Aufruf kommuniziert.

  3. Erstellen Sie ein einfaches Nodejs-Serverskript, das auf diesen Ajax-Aufruf wartet und die Ergebnisse in einer Datei speichert. Ein Bash-Skript kann dann diese Datei lesen und feststellen, ob die Tests bestanden oder fehlgeschlagen sind: siehe Ссылка
  4. Warten Sie im Build-Skript, bis die Ergebnisdatei kommt, und beenden Sie dann den Emulator und den NodeJS-Server - siehe Ссылка

Bemerkenswert ist auch, dass dieser Ansatz für den plattformübergreifenden Charakter von Cordova funktioniert: Es sollte möglich sein, den gleichen Ansatz wie iOS, Windows Phone Emulatoren usw. zu verwenden (ich verwende diese Testmethode auch für unsere NodeWebKit-Desktop-Version, die die meisten teilt) der Code).

Hoffe, das hilft,

-Mike

    
Mike Dawson 01.07.2014 07:16
quelle