Hallo allerseits! Am Vorabend des Starts des Mobile QA Engineer- Kurses hatten wir eine traditionelle offene Lektion. Es gab so viele Informationen, dass das Webinar zwei Tage dauerte ( Tag 1 , Tag 2 ). Tatsächlich war es eine echte zweitägige QA-intensive mobile Phase , die für alle nützlich sein wird, die beabsichtigen, ein Profi in Richtung automatisierter Tests mobiler Anwendungen auf Android und iOS zu werden.
Dozent - Dmitry Yarygin, QA-Testingenieur mit 8 Jahren Erfahrung, von denen 5 er
an einem Vertrag mit Google arbeitete .
Beim Webinar berücksichtigt:
- Was wird im Allgemeinen getestet und warum ist Automatisierung erforderlich?
- minimale Java-Grundlagen für die Automatisierung (Variablen, Objekte, Klassen, OOP);
- Was ist Webdriver und Appium?
- So finden Sie Objekte in einer Webanwendung mithilfe verschiedener Locators;
- Automatisierung einer Webanwendung (Login auf Facebook) mit Appium und einem Android-Emulator und vieles mehr.
Übrigens, wenn Sie die meiste Interaktivität aus diesen Webinaren herausholen möchten, installieren Sie die folgenden Anwendungen, bevor Sie mit dem Ansehen beginnen:
- Android Studio
- Appium Desktop .
Geschichte und Funktionen des mobilen Testens
Mobile Tests als Klasse erschienen um 2007 - zu diesem Zeitpunkt wurde das erste iPhone angekündigt, das die gesamte Branche völlig veränderte. Ja, mobile Tests gab es bis 2007, aber die Anwendungen dieser Zeit waren recht einfach und primitiv. Nach 2007 wurde die Entwicklung auf iOS und Android besonders aktiv, was sich wiederum nur auf die Tests auswirken konnte.
Natürlich hat das Testen von Mobilgeräten seine eigenen Besonderheiten und unterscheidet sich vom Desktop:

Trotz der offensichtlichen Einfachheit und geringen Größe der verwendeten Gadgets müssen Sie in der mobilen Qualitätssicherung viele Dinge mit Tests abdecken (manchmal gibt es im Vergleich zu Desktop-Tests sogar noch mehr davon). Und wer hat gesagt, dass es einfach sein würde?
Arten von mobilen Anwendungen
Mobile Anwendungen sind:
- Native (native).
- Hybrid (Hybrid).
- Webanwendungen (Web).
Schauen Sie sich nun die folgende Anwendung an:

Und sagen Sie mir, was ist das: eine Hybrid-, native oder Webanwendung?
Die Antwort lautet:Versteckter TextDies ist eine Webanwendung
Zunächst versteht es sich, dass die Webanwendung im Browser ausgeführt wird bzw. arbeitet. Alle Schnittstellenelemente werden, wie sie sagen, in einem Webstil ausgeführt.
Bei Hybridanwendungen handelt es sich im Wesentlichen um den Versuch, eine Webanwendung in einen speziellen Container zu „stopfen“ und in diesem Container auszuführen, wobei sie leicht „verschönert“ wird, um wie eine native Anwendung auszusehen.
Beispiele für
Hybridanwendungen :

Hybridanwendungen unterscheiden sich nicht in besonderer Schönheit: Die Schaltflächen sind weiterhin webbasiert, Links werden im Webformat angezeigt usw.
Schauen wir uns die Funktionen von Hybridanwendungen an:

Und jetzt ein Beispiel für eine "native" Anwendung aus dem AppStore:

Achten Sie auf die Qualität der Benutzeroberfläche dieser Anwendung und auf die Tatsache, dass alle Elemente „wie native“ aussehen, da die Funktionalität vollständig in das Betriebssystem integriert ist. Grob gesagt ist eine native Anwendung eine Anwendung, die unter Berücksichtigung "nativer" Technologien entwickelt wurde. In unserem Fall handelt es sich um Xcode für iOS.
Die Hauptparameter mobiler Anwendungen
Die Parameter sind wie folgt:
- Leistung
- Kompatibilität
- Bildschirm (Drehungen, Modi),
- Geolokalisierung
- Offline-Modus
- Dateisystem-Interaktion,
- mit Kontakten arbeiten
- Synchronisation
- arbeite mit dem Gedächtnis
- Batterie.
Funktionen zum Testen mobiler Anwendungen
Machen wir uns nun mit den Funktionen zum Testen von Anwendungen für mobile Geräte vertraut:

Interaktion von Testern und Entwicklern
Im Prinzip unterscheidet sich die Interaktion beim Desktop-Testen praktisch nicht von der Interaktion in einer normalen Umgebung. Trotzdem:
- Der Entwickler erstellt neue Funktionen.
- Der Tester testet Funktionen auf verschiedenen Geräten.
- Sobald die Fehler gefunden wurden, erstellt der Tester Fehlerberichte und zeigt die Problembereiche der Entwickler an.
- Entwickler behebt Fehler;
- Der Entwickler gibt die Anwendung für zusätzliche Tests zurück.
- Wenn es kein Problem gibt, ist die Anwendung zur Veröffentlichung bereit.

OOP für den Tester
Und jetzt OOP in 5 Minuten )). Wenn Sie also automatisierte Tests durchführen möchten, sollten Sie Folgendes wissen:
- Klassen, Objekte, Methoden;
- Vererbung;
- Zeichenfolgen, Ganzzahlen;
- Polymorphismus;
- Arrays
- Neudefinition / Überlastung;
- Konstruktoren;
- Schnittstellen.
Kurz und ohne komplexe Begriffe, dann ist OOP (objektorientierte Programmierung) eine Kombination aus Daten und Code, um sie in einem Objekt zu verarbeiten.
Vererbung ist ein Sprachmechanismus, mit dem Sie eine neue Klasse basierend auf einer vorhandenen erstellen können.
Die Kapselung ist ein Sprachmechanismus, der den Zugriff auf die Komponenten eines Objekts (Variablen und Methoden) einschränkt und sie nur innerhalb des Objekts zugänglich macht (privat). Mit anderen Worten, Ausblenden einer Klassenimplementierung.
Polymorphismus ist die Fähigkeit einer untergeordneten Klasse, die Implementierung der übergeordneten Klasse zu ändern, aber die Schnittstelle beizubehalten.
Gehen wir nun von der Theorie zur
Praxis über , um die Grundlagen von OOP zu verstehen.
Interaktiv
Öffnen Sie zunächst den
folgenden Link . Wir haben den folgenden Java-Code, in dem es drei Hauptklassen gibt:
1. Haupt:public class Main { public static void main (String[]args) { Cat cat = new Cat (); cat.setAge (5); cat.setName ("Alisa"); System.out.println (cat.getName ()); System.out.println (cat.getAge ()); } }
2. Tier: public class Animal { private String name; private int age; public Animal() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
3. Katze: public class Cat extends Animal { private String name; public String getName() { return "Cat name is: " + name; } public void setName(String name) { this.name = name; } }
Main ist die Hauptklasse, die zum Ausführen anderer Klassen benötigt wird. Die Tierklasse listet Attribute wie Alter und Name des Tieres auf. Die
Cat- Klasse erbt alle Eigenschaften der
Animal- Klasse (Cat erweitert Animal), überschreibt jedoch die vorhandenen Methoden für die Arbeit mit unserer Klasse.

Versuchen Sie nun, das folgende Problem selbst zu lösen:
- mache die
Dog
und erbe die Animal
; - Erstellen Sie eine
getName()
-Methode in der Dog
Klasse, die “Dog name is: [ ]”
anzeigt. - Erstellen Sie eine
setName()
-Methode in der Dog
Klasse, die den Namen zurückgibt. - Erstellen Sie in der
setName()
eine Instanz der Dog
Klasse, legen Sie den Namen mit setName()
und führen Sie die Methode getName()
, um den Namen getName()
.
Die Lösung des Problems .
Automatisierung Wann wird es benötigt und wann wird es nicht benötigt?
In folgenden Fällen benötigen wir Automatisierung:
- komplexe Anwendung mit einer großen Anzahl von Bildschirmen;
- großes Arsenal an Geräten;
- häufige Updates;
- eine große Anzahl von Benutzern;
- Die Anwendung funktioniert in vielen Ländern und Anwendungsmärkten.
- Testgeschwindigkeit ist wichtig;
- Leistungstests sind erforderlich.
Wenn keine Automatisierung erforderlich ist:
- ein oder zwei Bildschirme in der Anwendung;
- Die Anwendung ist in einem Land und auf einem Markt tätig.
- seltene Updates;
- kleine Anzahl von Benutzern;
- Die Automatisierungskosten übersteigen das Budget.
Automatisierung: Prinzipien und Mittel
Automatisierungsprinzipien:
- Suchen Sie ein Objekt auf dem aktuellen Anwendungsbildschirm.
- Überprüfen Sie den Zustand und stellen Sie sicher, dass er verfügbar ist.
- Führen Sie Aktionen mit dem Objekt aus.
Automatisierungsklassifizierung:
- Automatisierungstools, die keinen Zugriff auf den Quellcode benötigen (Webdriver, Appium).
- Automatisierungstools, die Zugriff auf den Quellcode erfordern (Espresso, KIF).
Die Automatisierung ist natürlich großartig, aber Sie sollten immer daran denken, dass nicht alles "automatisiert" werden kann.
Automatisierung mit Appium
Appium ist ein Server, der auf dem WebDriver-Protokoll basiert (WebDriver ist ein Framework zur Automatisierung von Webanwendungen). Appium akzeptiert Anforderungen von der Clientseite, konvertiert sie und überträgt sie an den Emulator oder das Gerät.

Während der Ausführung von Appium können Sie alle Anforderungen anzeigen, die vom Client an den Server gesendet werden:


Wie ist die Einrichtung der Systemumgebung Appium:

Freunde, wir haben nur über den
ersten Teil des Webinars gesprochen . Wir empfehlen daher, dass Sie sich das Video in der Aufnahme unbedingt ansehen, um nichts zu verpassen. Es wird auch
über Anmerkungen in Tests, die Initialisierung von Appium für native Anwendungen und die Suche nach Elementen mit Appium unter Android gesprochen. Lesen Sie außerdem den
zweiten Teil der offenen Lektion, in dem bereits tiefere praktische Kenntnisse auf dem Gebiet der Automatisierung im Allgemeinen und Appium im Besonderen vermittelt werden.
Und natürlich melden Sie sich für den
Mobile QA Engineer- Kurs an, der sehr bald beginnt!