Codeabdeckung für Android UI Automated Test

Yana Gusti 06/06/2019

 

Lassen Sie uns über Android Automated Test sprechen. Der Beruf vonQualitätssicherungsingenieur Früher war man mit Leuten verbunden, die „nicht gut genug“ sind, um Entwickler zu werden. Ich habe mehrmals gehört, dass „Der einfachste Weg in den IT-Bereich ist es, Tester zu werden”.

Tatsächlich ist es jedoch erforderlich, neue Technologien zu studieren und sich ständig zu verbessern, um ein professioneller Tester zu werden.

1. Die Testtrends 2017:

Integration, Automatisierung und mehr

Die Vorstellung „Qualitätskontrolle“, Wie es vor nicht allzu langer Zeit den eigenen Zweig der IT-Branche gab. Volle Testabteilungen gab es nur in großen Software- / Hardwareentwicklungsunternehmen, in denen die Fehler unzulässig waren.

Revolution bei der Schaffung der Standards ist der nächste Schritt geworden. Es wurde deutlich, dass bestimmte Regeln für das korrekte Funktionieren von IT-Produkten eingehalten werden müssen. So schienen die Support-Abteilungen die Rückmeldungen der Kunden zu erhalten und Probleme zu lösen.

top qa QS-Prioritäten

Heutzutage möchten die meisten CEOs und Manager, dass ihre Produkte alle Anforderungen erfüllen.

Firmenbegann zu investieren immer mehr im prozess der prüfung, daher der beruf derQualitätssicherungsingenieur steht erst am Anfang seiner Entwicklung.Codeabdeckung, Trends beim Testen, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

QA-Budget

Die beliebtesten Testtrends im Jahr 2016 sind die folgenden:

1.integriertes Testen – die Tester am Anfang des Entwicklungsprozesses und während des gesamten Lebenszyklus eines Produkts einzubeziehen. Wie gesagt: Es ist viel billiger, einen Fehler in einer Dokumentation zu beheben als während der Veröffentlichung.

Codeabdeckung, Trends beim Testen, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA Bug vs Feature

2.Automatisierungstests: Hilft bei der Substitution von Regressionstests, z. B. wird das Produkt mithilfe der agilen Methode entwickelt und so weiter.

Codeabdeckung, Trends beim Testen, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

Automatisierungstests

3.Wolkenservices, die virtuelle Testwerkzeuge bereitstellen;

4.Crowdsourcing-Tests – Testen, an dem eine große Anzahl von Benutzern beteiligt ist (effektiv für Beta-Tests).

Die Verwendung dieser Tools ist der Schlüssel zur Bereitstellung besserer mobiler Testservices. Die Zukunft des Testens gehört der Automatisierung

2. Die Zukunft des Testens gehört der Automatisierung

Heutzutage wird die Automatisierung von Prozessen in allen Bereichen des menschlichen Lebens populär.

Die Gesellschaft ist bestrebt, alle Routineaufgaben an Maschinen zu delegieren. Dinge, die vor einigen Jahren noch unmöglich erschienen, sind in unserer Zeit zu gewöhnlichen Prozessen geworden, und das Testen ist keine Ausnahme.

Allerdings nach den Daten von „PRÜFSTAND 2016“, der Prozentsatz von QA-Automatisierungsingenieure auf dem Markt ist nur gleich 8% Immer mehr Kunden fordern, die automatisierten Tests zur Überprüfung der Programme durchzuführen.

Codeabdeckung, Trends beim Testen, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA erhalten von qablog.practitest.com

Einheit, Benutzeroberflächenautomatisierung, Laden Tests sowie die Verwendung automatisierter Testtools werden immer beliebter, um die Kompatibilität auf verschiedenen Betriebssystemen und Geräten zu überprüfen.

Aber wie sich herausgestellt hat, ist das nicht genug. Wenn Sie die Tools nicht zum Berechnen der Codeabdeckung verwenden, kann das automatische Testen nicht das Testen aller Funktionen, Testfälle und Szenarien gewährleisten.

Klee, JaCoCo, Code-Abdeckung (die Standardwerkzeuge der Codeabdeckung IntellijIDEA) können für diesen Zweck verwendet werden. Die meisten von ihnen waren jedoch für die Berechnung von ausgelegt Unit-Test-Code-Abdeckung (Wenn Sie zum Beispiel den Test über Clover starten, erscheint die Meldung „Clover Test Optimization unterstützt nur JUnit-KonfigurationenWird von IDE angezeigt).

Codeabdeckung, Clover, Trends beim Testen, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

Kleetest Berichterstattung für Unit-Tests

Andernfalls gibt es keine fertige und umfassende Lösung für die Darstellung der Codeabdeckung von automatisierten UI-Tests auf dem Markt.

3. Wie präsentiert man die Ergebnisse eines automatisierten Android-Tests für die Benutzeroberfläche?

Wir haben begonnen, diese Probleme auf Kundenwunsch zu untersuchen, um das visuelle Ergebnis unserer automatisierten Tests für das Testen mobiler Apps zu präsentieren.

Nachdem wir einige Artikel, Blogs und Foren untersucht hatten, fanden wir das großartige Projekt von Oleksandr Kucherenko namens Android Test + Espresso + JaCoCo. Er hat geschaffen AndroidJacocoTestRunner, die wir erfolgreich genutzt haben, um die Codeabdeckung unserer automatisierten Tests zu erhalten.

Leider hat Espresso beim Schreiben von Code eine Reihe von Problemen. Diese Bibliothek bietet beispielsweise nicht die vorgefertigten Bildlaufmethoden usw.

Aus diesem Grund hat sich unser Team entschlossen, Oleksandrs Projekt auszuarbeiten, um mit der Robotium-Bibliothek interagieren zu können. Dank der Einfachheit und Klarheit des Quellcodes von AndroidJacocoTestRunner mussten nur ein paar Zeilen geändert werden:

  • Ändern Sie den Pfad zu AndroidJacocoTestRunner in build.gradle
defaultConfig { 
    applicationId "com.example.android"
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 1
    versionName "${ getBuildName() }"
    testInstrumentationRunner 
    "com.example.android.AndroidJacocoTestRunner"
}
  • Ändere die Abhängigkeit von Espresso zu Robotium und synchronisiere build.gradle
androidTestCompile'com.jayway.android.robotium:robotium-solo:5.4.1'

Nachdem das Projekt bereinigt und neu erstellt wurde, benachrichtigt die IDE über die erfolgreich durchgeführte Konfiguration 🙂

Das Team begann, Code zu schreiben. Code der Tests, mit denen geschrieben wurde Robotium unterscheidet sich nicht von einem üblichen Code und gibt uns die Möglichkeit, ein grafisches Ergebnis zu erhalten, und es ist nicht erforderlich, zusätzliche Bedingungen zu schreiben.

Zum Beispiel die Test für die Autorisierung in der App wurde erschaffen:

public class TestLogin extends 
ActivityInstrumentationTestCase2<SplashActivity> {
   private Solo solo;
   public TestLogin() {
      super(SplashActivity.class);
   }
   @Override
   public void setUp() throws Exception {
      super.setUp();
      solo = new Solo(this.getInstrumentation(), 
      getActivity());
   }
   @SmallTest
   public void testProfile() throws Exception{
   //check Logout or not
      if (solo.waitForView(R.id.search_button)) {
         solo.clickOnText("Staff");
         solo.scrollToBottom();
         solo.clickOnText("Logout");
      }
      solo.typeText(0, "username");
      solo.clickOnView(solo.getView(R.id.etPassword_ASM));
      solo.typeText(1, "123456");
      solo.clickOnText("LOG IN");
   }
   @Override
   public void tearDown() throws Exception {
      solo.finishOpenedActivities();
   }
}

Um ein anschauliches Ergebnis zu erhalten, kann der Test auf zwei Arten gestartet werden:

1. Über die Befehlszeile:gradlew: app: connectedAndroidTest

Codeabdeckung, Robotium, JaCoCo, Trends bei Tests, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

Führen Sie Robotium-Tests

2. von IDE aus – erstellen Sie Android Test inKonfiguration bearbeiten, wählenAndroidJacocoTestRunner und drücken Sie „Ausführen“. Startgradlew: app: jacocoTestReport mit einer Befehlszeile, um ein grafisches Ergebnis zu erhalten.

Codeabdeckung, Robotium, JaCoCo, Trends bei Tests, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

Führen Sie Robotium-Tests durch

Das Ergebnis in Form einer Tabelle (Datei „index.html“) befindet sich im Verzeichnis <Projektname> appbuildreportscoveragedebug:

Codeabdeckung, Robotium, JaCoCo, Trends bei Tests, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

Ergebnis von Automatisierungstests mit Codeabdeckung

Auch gibt es eine Möglichkeit zu bekommen Testzusammenfassung:

Codeabdeckung, Robotium, JaCoCo, Trends bei Tests, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

Ergebnis von Automatisierungstests mit Codeabdeckung

und Feststellung, welcher Test nicht bestanden wurde und warum:

Codeabdeckung, Robotium, JaCoCo, Trends bei Tests, Integration, Automatisierung, Testabdeckung, Benutzeroberfläche, Automatisierungstests, Android, EasyQA

Ergebnis von Automatisierungstests mit Codeabdeckung

Schlussfolgerungen

Die Verwendung der Tools zur Berechnung der Codeabdeckung automatisierter Tests erhöht die Geschwindigkeit und Effizienz vonArbeit des QA-Ingenieurs.

Es ist nicht erforderlich, manuelle Berichte zu erstellen und die Wirksamkeit Ihrer Arbeit zu demonstrieren. Der Kunde erhält das eindeutige Ergebnis, der Tester verzichtet auf die Verpflichtung zur manuellen Meldung. Also beide Seiten sind zufrieden :).

Das automatisierte Testen ist jedoch viel komplizierter als das manuelle. Lernen Sie es, es ist interessant, außergewöhnlich und vielversprechend. Und wir werden dieses Thema in unseren nächsten Artikeln weiter untersuchen!

Sie können auch unsere verwenden EasyQA Test Management Tool Verwenden mehrerer nützlicher Funktionen zur Verbesserung der Softwarequalität, z.

  • Build-Sharing
  • Stürze abfangen
  • Holen Sie sich Build direkt von GitHub oder GitLab
  • Fehler von App und anderen melden.

Registrieren Sie kostenlos einen neuen Account!