Android - testowanie interfejsu użytkownika

Android SDK udostępnia następujące narzędzia do obsługi zautomatyzowanych, funkcjonalnych testów interfejsu użytkownika w Twojej aplikacji.

  • uiautomatorviewer
  • uiautomator

uiautomatorviewer

Narzędzie GUI do skanowania i analizowania składników interfejsu użytkownika aplikacji na Androida.

Narzędzie uiautomatorviewer zapewnia wygodny interfejs wizualny do inspekcji hierarchii układu i przeglądania właściwości poszczególnych składników interfejsu użytkownika, które są wyświetlane na urządzeniu testowym. Korzystając z tych informacji, można później utworzyć testy uiautomator z obiektami selektorów, które są przeznaczone dla określonych składników interfejsu użytkownika do przetestowania.

Aby przeanalizować komponenty UI aplikacji, którą chcesz przetestować, wykonaj następujące kroki po zainstalowaniu aplikacji podanej w przykładzie.

  • Podłącz swoje urządzenie z Androidem do maszyny deweloperskiej
  • Otwórz okno terminala i przejdź do <android-sdk> / tools /
  • Uruchom narzędzie za pomocą tego polecenia
uiautomatorviewer

Polecenia byłyby wykonywane, jak pokazano poniżej

Pojawi się następujące okno. Jest to domyślne okno przeglądarki UI Automator Viewer.

  • Kliknij ikonę urządzeń w prawym górnym rogu. Rozpocznie się wykonywanie migawki XML UI ekranu aktualnie otwartego w urządzeniu. To byłoby coś takiego.

Następnie zobaczysz migawkę ekranu urządzenia w oknie uiautomatorviewer.

Po prawej stronie tego okna zobaczysz dwie partycje. Górna partycja wyjaśnia strukturę węzłów, sposób rozmieszczenia i zawartych komponentów interfejsu użytkownika. Kliknięcie każdego węzła powoduje wyświetlenie szczegółów w dolnej partycji.

Jako przykład rozważ poniższy rysunek. Po kliknięciu przycisku możesz zobaczyć w górnej partycji, że przycisk jest zaznaczony, aw dolnej partycji pokazane są jego szczegóły. Ponieważ ten przycisk jest zdolny do klikania, dlatego jego właściwość klikania jest ustawiona na wartość true.

UI Automator Viewer pomaga również w badaniu interfejsu użytkownika w różnych orientacjach. Na przykład po prostu zmień orientację urządzenia na poziomą i ponownie zrób zrzut ekranu. Przedstawiono to na poniższym rysunku -

uiautomator

Teraz możesz tworzyć własne przypadki testowe i uruchamiać je w programie uiautomatorviewer w celu ich zbadania. Aby stworzyć własny przypadek testowy, musisz wykonać następujące kroki -

  • W Eksploratorze projektów kliknij prawym przyciskiem myszy nowy projekt, który utworzyłeś, a następnie wybierz Właściwości> Ścieżka budowania Java i wykonaj następujące czynności -

  • Kliknij Dodaj bibliotekę> JUnit, a następnie wybierz JUnit3, aby dodać obsługę JUnit.

  • Kliknij Dodaj zewnętrzne pliki JAR ... i przejdź do katalogu SDK. W katalogu platform wybierz najnowszą wersję pakietu SDK i dodaj pliki uiautomator.jar i android.jar.

  • Rozszerz swoją klasę dzięki UiAutomatorTestCase

  • Popraw niezbędne przypadki testowe.

  • Po zakodowaniu testu wykonaj następujące kroki, aby zbudować i wdrożyć testowy plik JAR na docelowym urządzeniu testowym z systemem Android.

  • Utwórz wymagane pliki konfiguracyjne kompilacji, aby zbudować wyjściowy plik JAR. Aby wygenerować pliki konfiguracyjne kompilacji, otwórz terminal i uruchom następujące polecenie:

<android-sdk>/tools/android create uitest-project -n <name> -t 1 -p <path>
  • <name> to nazwa projektu, który zawiera pliki źródłowe testów uiautomator, a <path> to ścieżka do odpowiedniego katalogu projektu.

  • W wierszu poleceń ustaw zmienną ANDROID_HOME.

set ANDROID_HOME=<path_to_your_sdk>
  • Przejdź do katalogu projektu, w którym znajduje się plik build.xml, i utwórz testowy plik JAR.
ant build
  • Wdróż wygenerowany testowy plik JAR na urządzeniu testowym za pomocą polecenia adb push.
adb push <path_to_output_jar> /data/local/tmp/
  • Uruchom test, wykonując polecenie -
adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings

Przykład

Poniższy przykład demonstruje użycie UITesting. Zawiera podstawową aplikację, której można używać do uiautomatorviewer.

Aby poeksperymentować z tym przykładem, musisz uruchomić go na rzeczywistym urządzeniu, a następnie postępować zgodnie z instrukcjami uiautomatorviewer wyjaśnionymi na początku.

Kroki Opis
1 Użyjesz Android Studio do stworzenia aplikacji na Androida w pakiecie com.tutorialspoint.myapplication.
2 Zmodyfikuj plik src / MainActivity.java, aby dodać kod działania.
3 Zmodyfikuj plik XML układu res / layout / activity_main.xml, dodaj dowolny komponent GUI, jeśli jest to wymagane.
4 Utwórz plik src / second.java, aby dodać kod działania.
5 Zmodyfikuj plik XML układu res / layout / view.xml, dodaj dowolny komponent GUI, jeśli jest to wymagane.
6 Uruchom aplikację i wybierz działające urządzenie z systemem Android, zainstaluj na nim aplikację i sprawdź wyniki.

Oto treść MainActivity.java.

package com.tutorialspoint.myapplication;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends ActionBarActivity {
   Button b1;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1=(Button)findViewById(R.id.button);
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent in =new Intent(MainActivity.this,second.class);
            startActivity(in);
         }
      });
   }
}

Oto treść second.java.

package com.tutorialspoint.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class second extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.view);
      Button b1=(Button)findViewById(R.id.button2);
      
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(second.this,"Thanks",Toast.LENGTH_LONG).show();
         }
      });
   }
}

Oto treść activity_main.xml

W poniższym kodzie abc wskazuje logo tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="UI Animator Viewer"
      android:id="@+id/textView"
      android:textSize="25sp"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:textColor="#ff36ff15"
      android:textIsSelectable="false"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Button"
      android:id="@+id/button"
      android:layout_marginTop="98dp"
      android:layout_below="@+id/imageView"
      android:layout_centerHorizontal="true" />

</RelativeLayout>

Oto treść view.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">

   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text=" Button"
      android:id="@+id/button2"
      android:layout_gravity="center_horizontal"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" />
</RelativeLayout>

Oto treść Strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Oto treść AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.tutorialspoint.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
      <activity android:name=".second"></activity>
      
   </application>
</manifest>

Spróbujmy uruchomić aplikację do testowania interfejsu użytkownika. Zakładam, że podłączyłeś swoje rzeczywiste urządzenie mobilne z systemem Android do komputera. Aby uruchomić aplikację ze studia Android, otwórz jeden z plików aktywności projektu i kliknij

ikonę Uruchom na pasku narzędzi. Przed uruchomieniem aplikacji, Android Studio wyświetli następujące okno, aby wybrać opcję, w której chcesz uruchomić aplikację Android.

Wybierz swoje urządzenie mobilne jako opcję, a następnie sprawdź swoje urządzenie mobilne, na którym zostanie wyświetlony ekran aplikacji. Teraz wystarczy wykonać czynności wymienione u góry w sekcji przeglądarki automatyzatora interfejsu użytkownika, aby przeprowadzić testy interfejsu użytkownika w tej aplikacji.