
Das Publikum
QS-Ingenieure, Tester fĂŒr mobile Anwendungen, Automatisierung.
Das Problem
WĂ€hrend des Testens von Anwendungen fĂŒr Android (nicht nur, sondern weiter werden wir nur ĂŒber diese Plattform sprechen) mĂŒssen Sie viele Baugruppen des getesteten Produkts / der getesteten Produkte installieren. Dieser Prozess erfordert Zeit und MĂŒhe, was effizienter ist, um Fehler zu finden.
In diesem Artikel werden wir uns eine vorhandene Lösung ansehen, unsere eigene in Python schreiben und sie vergleichen.
SchlĂŒsselfertige Lösung
Die derzeit vielleicht beliebteste Lösung fĂŒr dieses Problem ist der Crashlytics-Dienst, zu dem auch das Beta-Installationsprogramm gehört.
Betrachten Sie einen typischen Anwendungsinstallationsprozess mit Crashlytics Beta:
- Wir finden das Beta-Symbol (1) â tippen Sie auf (2) = die Anwendung startet.
- Wir finden das gewĂŒnschte Projekt (3) â tippen Sie auf (4) = ein Bildschirm mit einer Liste von Baugruppen wird geöffnet.
- Suchen Sie die gewĂŒnschte Baugruppe (5) â Tippen Sie auf âHerunterladenâ (6) = Die Installationsdatei wird auf das GerĂ€t heruntergeladen.
- Ein Bildschirm mit einem Vorschlag zur Installation der Anwendung wird angezeigt â Tippen Sie auf âInstallierenâ (7) = Der Installationsbildschirm wird angezeigt.
- Suchen Sie die installierte Anwendung (8) â Tippen Sie auf (9) = Die Anwendung wird gestartet. bereit zum Testen.
Um einen Anwendungsbuild mit Crashlytics Beta zu installieren und auszufĂŒhren, mĂŒssen Sie insgesamt mindestens neun Aktionen ausfĂŒhren. Wir werden uns auf diese Indikatoren konzentrieren und versuchen, ein Installationsprogramm zu erstellen, das weniger Aktionen erfordert, um Ă€hnliche Probleme zu lösen.
Kundenspezifische Lösung
Wir wĂ€hlen Python als Programmiersprache, weil es fĂŒr unsere Aufgabe geeignet und sehr beliebt ist, auch bei QS-Ingenieuren.
FĂŒr die Interaktion mit Android verwenden wir adb, das Teil des Standard-Android-SDK ist.
Dateien herunterladen - Wget.
In unserem Fall werden Baugruppen in TeamCity ausgefĂŒhrt.
Fahren wir nun mit dem Schreiben von Code fort.
ZunĂ€chst importieren wir das Unterprozessmodul in das Projekt. Es ist erforderlich, die Befehle wget und adb auszufĂŒhren.
import subprocess
FĂŒgen Sie die erforderlichen Einstellungen fĂŒr Wget hinzu.
settings = {'user': 'âuser=__teamcity', 'password': 'âpassword=__teamcity', 'way': '____'}
Wir werden Anwendungen anhand der Build-Nummer installieren und dem Skript beibringen, nach diesem Parameter zu fragen.
number = input(' â : ')
Nehmen wir an, wir mĂŒssen zwei Baugruppen gleichzeitig installieren: Test und Kampf. Wir werden sie von TeamCity herunterladen. Dazu lernen wir den vollstĂ€ndigen Pfad zu den Dateien, indem wir die Serviceseite öffnen und die Baugruppe in den Artefakten finden. Die URL vor der Montage sieht ungefĂ€hr so ââaus:
https://teamcity.mysite.com/repository/app/_/_/myapp-_-_.apk
In der Adresse sehen Sie anstelle der Baugruppennummer die ID, z. B. / 1234: id /. Hier geben wir nicht die ID, sondern die Baugruppennummer an.
Wir werden eine Funktion zum Herunterladen der angegebenen Baugruppen schreiben.
def download(type_b): url = 'http://teamcity.mysite.com/repository/app/{0}/{1}/myapp-{0}-{1}.apk'.format(number, type_b)
Wir werden eine Funktion zum Installieren und AusfĂŒhren von Anwendungen schreiben. Entfernen Sie zuerst zuvor installierte Baugruppen. Vergessen Sie nicht, dass das Skript mit einem Fehler endet, wenn sich mindestens eine Anwendung nicht auf dem GerĂ€t befindet. Um dies zu vermeiden, werden wir Fehler ignorieren.
In diesem imaginÀren Beispiel zwei Pakete:
- com.myapp.prod
- com.myapp.test
StartaktivitÀten:
- com.myapp.prod/com.myapp.StartActivity
- com.myapp.test / com.myapp.StartActivity
Ihre Paket- und AktivitÀtsnamen sind unterschiedlich.
def install(type_b): try:
Alle notwendigen Funktionen sind geschrieben. Jetzt können sie angewendet werden.
DarĂŒber hinaus fĂŒgen wir einen Handler fĂŒr den Fall hinzu, dass sich die angegebene Assembly nicht in TeamCity befindet.
while True: try:
Das Skript ist fertig. Wir speichern es zum Beispiel unter dem Namen installer.py
FĂŒgen Sie einen Alias ââhinzu, z. B. den Alias ââinst = 'python ~ / scripts / installer.py'.
ĂberprĂŒfen Sie
Um eine Assembly mit Crashlytics Beta zu installieren, mĂŒssen Sie 9 Aktionen ausfĂŒhren. Zum Vergleich messen wir diesen Indikator im Skript.
- Wir starten das Skript mit dem Befehl inst (1) = Es wird ein Vorschlag zum Festlegen der Build-Nummer angezeigt.
- Stellen Sie die Baugruppennummer (2) ein = alte Baugruppen werden gelöscht; Laden Sie neue herunter, installieren Sie sie und starten Sie sie. Die Anwendung ist zum Testen bereit.
Ergebnis
Beta (1 Build) - 9 Aktionen (ohne Löschen alter Builds).
Ihr eigenes Skript (so viele Assemblys wie Sie möchten) - 2 Aktionen.
Ein zusĂ€tzlicher Vorteil der benutzerdefinierten Lösung besteht darin, dass sie skalierbar ist (HinzufĂŒgen der Installation mehrerer Produkte zu einer Reihe von GerĂ€ten usw.) und sich auch problemlos an die Aufgaben des automatischen Testens anpassen lĂ€sst.
Quellen