Samouczek testowania aplikacji na Androida z platformą automatyzacji

Spisie treści:

Anonim

Dlaczego testowanie Androida?

Android to największy system operacyjny na świecie. Jednocześnie Android jest rozdrobniony. istnieje mnóstwo urządzeń i wersji Androida, z którymi Twoja aplikacja musi być zgodna.

Nie ma znaczenia, ile czasu poświęcisz na projektowanie i wdrażanie, błędy są nieuniknione i pojawią się błędy.

W tym samouczku nauczysz się:

  • Dlaczego testowanie Androida?
  • Strategia testowania Androida
    • Testy jednostkowe
    • Testy integracyjne
    • Testy operacyjne
    • Testy systemowe
  • Zautomatyzowane TESTOWANIE ANDROIDA
    • Framework do testowania Androida
    • Framework do testowania robolectric
  • Mity testowania Androida
  • Sprawdzone metody testowania Androida

Strategia testowania Androida

Prawidłowa strategia testowania Androida powinna obejmować następujące elementy

  1. Test jednostkowy
  2. Test integracyjny
  3. Test operacyjny
  4. Test systemu

Testy jednostkowe

Testy jednostkowe obejmują zestawy jednego lub większej liczby programów, które są przeznaczone do weryfikowania niepodzielnej jednostki kodu źródłowego, takiej jak metoda lub klasa.

Platforma Android jest wstępnie zintegrowana z platformą Junit 3.0. Jest to platforma open source do automatyzacji testów jednostkowych. Android Testing Framework to potężne narzędzie dla programistów do pisania efektywnego programu do testów jednostkowych.

Integracja Androida i JUnit

Dodatkiem do testów jednostkowych są testy interfejsu użytkownika (UI). Te testy dotyczą składników interfejsu użytkownika aplikacji docelowej. Testy interfejsu użytkownika zapewniają, że aplikacja zwraca poprawne dane wyjściowe interfejsu użytkownika w odpowiedzi na sekwencję działań użytkownika na urządzeniu.

Typowe działania interfejsu użytkownika w aplikacji

Typowym sposobem przeprowadzania testów interfejsu użytkownika na urządzeniu jest Android Instrumentation. Ale to ma problemy z wydajnością. Jednym z najlepszych narzędzi do przeprowadzania testów interfejsu użytkownika w systemie Android jest Robotium.

Testy integracyjne

W testowaniu integracji wszystkie testowane moduły są łączone i weryfikowane. W systemie Android testy integracyjne często obejmują sprawdzenie integracji z komponentami systemu Android, takimi jak testy usług, testy aktywności, testy dostawców treści itp.

Rodzaje testów integracji na Androidzie

Istnieje wiele platform testowych służących do przeprowadzania testów integracyjnych dla Androida, takich jak Troyd, Robolectric, Robotium.

Testy operacyjne

  • Operacyjne są również nazywane testami funkcjonalnymi lub testami akceptacji. Są to testy wysokiego poziomu mające na celu sprawdzenie kompletności i poprawności aplikacji.
  • W Androidzie FitNesse to framework open source, który ułatwia przeprowadzanie testów operacyjnych dla aplikacji docelowej.

Testy systemowe

Podczas testowania systemu system jest testowany jako całość i sprawdzana jest interakcja między komponentami, oprogramowaniem i sprzętem.

W systemie Android testowanie systemu zwykle obejmuje

  • Testy GUI
  • Testy użyteczności
  • Testy wydajności
  • Testy warunków skrajnych

Na powyższej liście większy nacisk kładzie się na testy wydajności . Możesz użyć narzędzi takich jak Traceview do przeprowadzenia testu wydajności w systemie Android. To narzędzie może pomóc w debugowaniu aplikacji i profilowaniu jej wydajności.

Zautomatyzowane TESTOWANIE ANDROIDA

Ponieważ Android jest pofragmentowany, konieczne jest testowanie na wielu urządzeniach. Ale będzie to również kosztować pieniądze. Zautomatyzowane testowanie Androida może pomóc obniżyć koszty

Korzyści z automatycznego testowania Androida

  • Skróć czas wykonywania przypadków testowych
  • Zwiększ produktywność swojego procesu rozwoju
  • Wczesne wykrywanie błędów, oszczędność kosztów utrzymania oprogramowania
  • Szybko znaleźć i naprawić błędy podczas implementacji
  • Zapewnij jakość oprogramowania

Przeanalizujemy następujące 2 ramy

  • Struktura testowania systemu Android
  • Framework do testowania robolectric

Framework do testowania Androida

Jedną ze standardowych platform testowych dla aplikacji na Androida jest platforma testowa dla systemu Android . Jest to potężne i łatwe w użyciu środowisko testowe, które jest dobrze zintegrowane z narzędziami Android SDK.

Architektura platformy testowania systemu Android

  1. Pakiet aplikacji to aplikacja docelowa, która musi zostać przetestowana
  2. InstrumentationTestRunner to program uruchamiający przypadek testowy, który wykonuje przypadek testowy w aplikacji docelowej. Obejmuje:

2a) Narzędzia testowe: narzędzia SDK do tworzenia testów. Są zintegrowane z Eclipse IDE lub uruchamiane jako wiersz poleceń.

2b) MonkeyRunner: narzędzie, które udostępnia interfejsy API do pisania programów, które kontrolują urządzenie z Androidem lub emulator poza kodem Androida.

  1. Pakiet testowy jest podzielony na projekty testowe. Ten pakiet jest zgodny z konwencją nazewnictwa. Jeśli testowana aplikacja ma nazwę pakietu „com.mydomain.myapp”, wówczas pakiet testowy powinien mieć postać „com.mydomain.myapp.test”. Pakiet testowy zawiera 2 obiekty, jak poniżej:

3a) Klasy przypadków testowych: obejmują metody testowe do wykonania w aplikacji docelowej.

3b) Obiekty pozorowane: obejmuje pozorowane dane, które będą używane jako przykładowe dane wejściowe dla przypadków testowych.

Klasy przypadków testowych systemu Android

Diagram klasy AndroidTestCase

  1. TestCase zawiera metody JUnit do uruchamiania testu JUnit
  2. TestSuite służy do uruchamiania zestawu przypadków testowych
  3. InstrumentationTestSuite to TestSuite, który wstrzykuje Instrumentation do InstrumentationTestCase przed ich uruchomieniem.
  4. InstrumentationTestRunner to narzędzie do uruchamiania przypadków testowych, które wykonuje przypadek testowy w aplikacji docelowej.
  5. AndroidTestCase rozszerza JUnit TestCase. Zawiera metody uzyskiwania dostępu do zasobów, takich jak kontekst działania.
  6. ApplicationTestCase weryfikuje klasy aplikacji w kontrolowanym środowisku.
  7. InstrumentationTestCase weryfikuje określoną funkcję lub zachowanie aplikacji docelowej, np. Weryfikuje dane wyjściowe interfejsu użytkownika aplikacji.
  8. ActivityTestCase to klasa bazowa, która obsługuje testowanie działań aplikacji.
  9. ProviderTestCase to klasa do testowania pojedynczego dostawcy treści .
  10. ServiceTestCase służy do testowania klas usług w środowisku testowym. Obsługuje również cykl życia usługi.
  11. SingeLauchActivityTestCase służy do testowania pojedynczego działania za pomocą InstrumentationTestCase.
  12. ActivityUnitTestCase służy do testowania pojedynczej izolowanej aktywności.
  13. ActivityInstrumentationTestCase2 rozszerza klasę JUnit TestCase. Łączy Cię z aplikacją docelową z oprzyrządowaniem. Dzięki tej klasie można uzyskać dostęp do komponentu GUI aplikacji i wysłać zdarzenie interfejsu użytkownika (naciśnięcie klawisza lub zdarzenie dotyku) do interfejsu użytkownika.

Poniżej znajduje się przykład ActivityInstrumentationTestCase. Weryfikuje działanie UI aplikacji Kalkulator, sprawdza poprawność wyników UI.

Przykład testowania ActivityInstrumentationTestCase2

Framework do testowania robolectric

Testowanie przy użyciu platformy Android Testing z urządzeniem lub emulatorem jest trudne. Tworzenie i uruchamianie testów jest powolne i wymaga dużego wysiłku programistycznego. Aby rozwiązać ten problem, istnieje inny wybór - platforma testowania Robolectric .

Framework Robolectric umożliwia uruchamianie testów systemu Android bezpośrednio na JVM bez konieczności posiadania urządzenia lub emulatora.

Zaawansowane funkcje Robolectric

Klasy przypadków testowych robolectric

Działanie Robolectric

  • Jak pokazano powyżej, Robolectric może wykonywać następujące czynności:
  • Zarejestruj się i utwórz klasę Shadow
  • Przechwyć ładowanie klasy Androida
  • Używa javaassist do przesłonięcia treści metod klasy Androida
  • Powiązanie obiektu Shadow z klasą systemu Android
  • Dzięki temu testowany kod może działać bez środowiska Android.

Inne ramy testowe

Oprócz wspomnianych powyżej frameworków testowych istnieje wiele innych frameworków testowych, takich jak:

  • Android Junit Report, niestandardowe narzędzie do uruchamiania testów instrumentacji dla systemu Android, które generuje raporty XML do integracji z innymi narzędziami.
  • Expresso
  • Appium

Mity testowania Androida

Wiele przedsiębiorstw opracowuje strategie testowania Androida, które są oparte na powszechnych błędnych przekonaniach. W tej sekcji omówiono kilka popularnych mitów i realiów testowania Androida.

Mit 1: Wszystkie urządzenia z Androidem są takie same… wystarczy test na emulatorach

Zacznijmy od prostego przykładu. Aplikacja działa doskonale na emulatorach, ale na niektórych rzeczywistych urządzeniach ulega awarii podczas wykonywania

Aplikacja ulega awarii podczas wykonywania na prawdziwym urządzeniu

Emulatory niewystarczające do testów mobilnych. Musisz przetestować swoją aplikację na prawdziwych urządzeniach.

Mit nr 2: wystarczy przetestowanie na niektórych typowych urządzeniach

  • Na różnych urządzeniach Twoja aplikacja wygląda inaczej, ponieważ różne urządzenia mają inny sprzęt, rozmiary ekranu, pamięć itp. Musisz przetestować swoją aplikację na różnych urządzeniach, wersjach systemu operacyjnego, sieciach operatorów i lokalizacjach.

Mit 3: Testy eksploracyjne tuż przed uruchomieniem są wystarczające

  • Generalnie we wszystkich testach projektujemy przypadki testowe, a następnie wykonujemy je. Jednak w przypadku testów eksploracyjnych projektowanie i wykonywanie testów będzie odbywać się razem.
  • W testowaniu eksploracyjnym nie ma planu ani przygotowania, wtedy tester robiłby testy, które chciałby zrobić. Niektóre funkcje będą testowane wielokrotnie, podczas gdy niektóre nie będą testowane całkowicie.

Mit 4: Jeśli w aplikacji są jakieś błędy, użytkownicy to zrozumieją

  • Jeśli aplikacja nie działa i zawiera błędy, użytkownicy odinstalowują ją
  • Problemy z jakością to pierwszy powód złej recenzji w Google Play. Wpływa to na twoją reputację i tracisz zaufanie klientów.

Dlatego ważne jest, aby mieć odpowiednią strategię testowania Androida

Sprawdzone metody testowania Androida

  • Programiści aplikacji powinni tworzyć przypadki testowe w tym samym czasie, gdy piszą kod
  • Wszystkie przypadki testowe powinny być przechowywane w kontroli wersji - razem z kodem źródłowym
  • Używaj ciągłej integracji i uruchamiaj testy za każdym razem, gdy kod zostanie zmieniony
  • Unikaj używania emulatorów i zrootowanych urządzeń