Android Samouczek testowania aplikacji z wykorzystaniem frameworka automatyzacji

โšก Inteligentne podsumowanie

Android Testowanie aplikacji weryfikuje kompilacjฤ™ na rozproszonym ล›rodowisku urzฤ…dzeล„, ล‚ฤ…czฤ…c kontrole jednostek, integracji, operacji i systemu z ramami automatyzacji, ktรณre dziaล‚ajฤ… na urzฤ…dzeniu lub bezpoล›rednio na maszynie wirtualnej Java (JVM).

  • ๐Ÿ”˜ Dlaczego jest to waลผne: Android dziaล‚a na niezliczonej liczbie urzฤ…dzeล„ i kombinacji wersji, wiฤ™c problemy z kompatybilnoล›ciฤ… sฤ… niemal pewne.
  • ๏ธ Cztery poziomy testu: Testowanie jednostkowe, integracyjne, operacyjne i systemowe pozwala wykryฤ‡ rรณลผne klasy defektรณw.
  • โœ… Struktura na urzฤ…dzeniu: Android struktura testowa opiera siฤ™ na JUnit i instrumentacji.
  • ๐Ÿงช Alternatywa dla JVM: Cienie roboelektryczne Android Klasy, dziฤ™ki ktรณrym zestawy klas dziaล‚ajฤ… na maszynie wirtualnej Java (JVM) bez urzฤ…dzenia lub emulatora.
  • ๐Ÿ› ๏ธ. Szerszy zestaw narzฤ™dzi: Espresso, Automatyzator interfejsu uลผytkownika i Appium rozszerzyฤ‡ zasiฤ™g poza klasy wbudowane.
  • ๐Ÿ“Š Mity, ktรณrych naleลผy unikaฤ‡: Same emulatory, kilka telefonรณw komรณrkowych czy testy eksploracyjne w ostatniej chwili prowadzฤ… do bล‚ฤ™dรณw w produkcji.

Android samouczek dotyczฤ…cy testowania aplikacji, obejmujฤ…cy poziomy testรณw, ramy automatyzacji i pokrycie urzฤ…dzeล„

Czemu Android Testujesz?

Android jest najwiฤ™kszym systemem operacyjnym na ล›wiecie. Jednoczeล›nie, Android jest rozdrobniony: jest mnรณstwo urzฤ…dzeล„ i Android wersje, z ktรณrymi musi byฤ‡ kompatybilna Twoja aplikacja.

Niezaleลผnie od tego, ile czasu zainwestujesz w projekt i wdroลผenie, bล‚ฤ™dy sฤ… nieuniknione, a usterki i tak siฤ™ pojawiฤ….

Android Strategia testowania

Prawidล‚owy Android strategia testowania powinna obejmowaฤ‡ nastฤ™pujฤ…ce elementy

  1. Test jednostkowy
  2. Test integracyjny
  3. OperaTest narodowy
  4. Test systemu

Testy jednostkowe

Testy jednostkowe to zestawy programรณw zaprojektowane w celu weryfikacji atomowej jednostki kodu ลบrรณdล‚owego, na przykล‚ad metody lub klasy.

Android platforma jest wstฤ™pnie zintegrowana z JUnit Framework 3.0. Jest to framework open source do automatyzacji Testรณw jednostkowychi umoลผliwia programistom pisanie efektywnych programรณw testรณw jednostkowych.

Uzupeล‚nieniem testรณw jednostkowych sฤ… testy interfejsu uลผytkownika (UI). Obejmujฤ… one komponenty UI aplikacji docelowej i zapewniajฤ…, ลผe zwraca ona poprawne dane wyjล›ciowe dla sekwencji dziaล‚aล„ uลผytkownika na urzฤ…dzeniu.

Typowe dziaล‚ania interfejsu uลผytkownika na Android aplikacja taka jak stukanie, pisanie i przesuwanie

Typowym sposobem przeprowadzania testรณw interfejsu uลผytkownika na urzฤ…dzeniu jest Android Oprzyrzฤ…dowanie. Ale wiฤ…ลผe siฤ™ to z problemami z wydajnoล›ciฤ…. Jedno z najlepszych narzฤ™dzi do przeprowadzania testรณw interfejsu uลผytkownika Android is Robotium.

โš ๏ธ Uwaga dotyczฤ…ca wersji: JUnit 3 klasy takie jak Przypadek testowy oprzyrzฤ…dowania zostaล‚y uznane za przestarzaล‚e w API 24; obecne projekty korzystajฤ… z AndroidTest X, Espresso i Automatyzatora interfejsu uลผytkownika. Robotium nie zostaล‚ wydany od 2016 roku.

Testy integracyjne

In Testy integracyjne, wszystkie moduล‚y testowane jednostkowo sฤ… ล‚ฤ…czone i weryfikowane. Android czฤ™sto oznacza to sprawdzenie integracji z komponentami takimi jak Usล‚uga, Aktywnoล›ฤ‡ i Testowanie Dostawcy Treล›ci.

Rodzaje testรณw integracyjnych Android obejmujฤ…ce testowanie dostawcรณw usล‚ug, aktywnoล›ci i treล›ci

Do przeprowadzania testรณw integracyjnych uลผywa siฤ™ wielu struktur testowych Android, takich jak Troyd, Robolectric i Robotium.

Operatesty cjonalne

OperaTesty funkcjonalne, zwane takลผe testami akceptacyjnymi lub funkcjonalnymi, to testy wysokiego poziomu, ktรณre sprawdzajฤ… kompletnoล›ฤ‡ i poprawnoล›ฤ‡ aplikacji.

In Android, FitNesse jest oprogramowaniem typu open source, ktรณre uล‚atwia przeprowadzanie testรณw operacyjnych w aplikacjach docelowych.

Testy systemowe

In Testowanie systemu system jest testowany jako caล‚oล›ฤ‡ i sprawdzana jest interakcja pomiฤ™dzy komponentami, oprogramowaniem i sprzฤ™tem.

In Android, Testowanie systemu zwykle obejmuje

  • Testy GUI
  • Testy uลผytecznoล›ci
  • Testy wydajnoล›ci
  • Testy warunkรณw skrajnych

Na powyลผszej liล›cie Test wydajnoล›ci poล›wiฤ™ca siฤ™ wiฤ™cej uwagi. Moลผesz uลผyฤ‡ narzฤ™dzi takich jak Tracopinia do przeprowadzania testรณw wydajnoล›ciowych AndroidTo narzฤ™dzie pomoลผe Ci debugowaฤ‡ aplikacjฤ™ i okreล›liฤ‡ jej wydajnoล›ฤ‡. Traceview jest teraz przestarzaล‚y na rzecz Profiler procesora.

zautomatyzowane Android Testy

As Android jest rozdrobniony, konieczne jest testowanie na wielu urzฤ…dzeniach, a to kosztuje. Zautomatyzowane Android Testowanie pomaga obniลผyฤ‡ te koszty.

Korzyล›ci z automatyzacji Android testowanie

  • Skrรณฤ‡ czas wykonywania przypadkรณw testowych
  • Zwiฤ™ksz produktywnoล›ฤ‡ swojego procesu rozwoju
  • Wczesne wykrywanie bล‚ฤ™dรณw, oszczฤ™dnoล›ฤ‡ kosztรณw konserwacji oprogramowania
  • Szybko znajdลบ i napraw bล‚ฤ™dy podczas wdraลผania
  • Zadbaj o jakoล›ฤ‡ oprogramowania

Przyjrzymy siฤ™ nastฤ™pujฤ…cym dwรณm ramom

  • Android Ramy testowe
  • Ramy testรณw robotoelektrycznych

Android framework testowy

Jeden ze standardowych frameworkรณw testowych dla Android aplikacje to Android framework testowy. Jest dobrze zintegrowany z Android Narzฤ™dzia SDK i ich architektura skล‚adajฤ… siฤ™ z trzech czฤ™ล›ci.

  1. Pakiet aplikacji to aplikacja docelowa, ktรณrฤ… naleลผy przetestowaฤ‡.
  2. InstrumentationTestRunner to Przypadek testowy Runner, ktรณry wykonuje przypadki testowe w aplikacji docelowej. Zawiera:
    • Narzฤ™dzia testowe: Narzฤ™dzia SDK do tworzenia testรณw. Sฤ… zintegrowane ze ล›rodowiskiem IDE lub uruchamiane z wiersza poleceล„.
    • Maล‚pi Biegacz: Narzฤ™dzie zapewniajฤ…ce interfejsy API do pisania programรณw kontrolujฤ…cych Android urzฤ…dzenie lub emulator poza Android kod.
  3. Pakiet testowy jest zorganizowany w projekty testowe i stosuje konwencjฤ™ nazewnictwa. Jeล›li testowana aplikacja ma nazwฤ™ pakietu โ€žcom.mydomain.myappโ€, to pakiet testowy powinien mieฤ‡ nazwฤ™ โ€žcom.mydomain.myapp.testโ€. Pakiet testowy zawiera 2 obiekty:
    • Klasy przypadkรณw testowych: zawierajฤ… metody testowe, ktรณre majฤ… zostaฤ‡ wykonane w aplikacji docelowej.
    • Obiekty pozorowane: zawieraฤ‡ dane pozorowane, ktรณre bฤ™dฤ… wykorzystane jako przykล‚adowe dane wejล›ciowe dla przypadkรณw testowych.

Android Klasy przypadkรณw testowych

AndroidDiagram klasy TestCase pokazujฤ…cy JUnit i hierarchia przypadkรณw testowych instrumentacji

  1. TestCase zawiera JUnit metody biegania JUnit test
  2. TestSuite sล‚uลผy do uruchamiania zestawu przypadkรณw testowych
  3. InstrumentationTestSuite to pakiet testowy, ktรณry wstrzykuje Instrumentation do InstrumentationTestCase przed ich uruchomieniem.
  4. InstrumentationTestRunner uruchamia przypadki testowe w aplikacji docelowej.
  5. AndroidTestCase rozszerza siฤ™ JUnit Przypadek testowy z metodami dostฤ™pu do zasobรณw, takich jak kontekst aktywnoล›ci.
  6. ApplicationTestCase weryfikuje klasy aplikacji w kontrolowanym ล›rodowisku.
  7. InstrumentationTestCase weryfikuje konkretnฤ… funkcjฤ™ lub zachowanie, na przykล‚ad dane wyjล›ciowe interfejsu uลผytkownika aplikacji.
  8. ActivityTestCase to klasa bazowa, ktรณra obsล‚uguje testowanie dziaล‚aล„ aplikacji.
  9. ProviderTestCase to klasa sล‚uลผฤ…ca do testowania pojedynczego ContentProvider.
  10. ServiceTestCase testuje klasy usล‚ug w ล›rodowisku testowym i obsล‚uguje cykl ลผycia usล‚ugi.
  11. SingleLaunchActivityTestCase sล‚uลผy do testowania pojedynczej aktywnoล›ci za pomocฤ… InstrumentationTestCase.
  12. ActivityUnitTestCase sล‚uลผy do testowania pojedynczej, izolowanej aktywnoล›ci.
  13. Przypadek testowy ActivityInstrumentation2 rozszerza JUnit Klasa TestCase ล‚ฤ…czy Ciฤ™ z aplikacjฤ… docelowฤ… za pomocฤ… instrumentacji, dziฤ™ki czemu moลผesz uzyskaฤ‡ dostฤ™p do komponentรณw GUI i wysyล‚aฤ‡ zdarzenia interfejsu uลผytkownika, takie jak naciล›niฤ™cia klawiszy lub dotkniฤ™cia.

Poniลผej znajduje siฤ™ przykล‚ad ActivityInstrumentationTestCase. Weryfikuje on dziaล‚anie interfejsu uลผytkownika aplikacji Kalkulator i sprawdza poprawnoล›ฤ‡ wynikรณw interfejsu uลผytkownika.

Przykล‚ad ActivityInstrumentationTestCase2 weryfikujฤ…cy dane wyjล›ciowe interfejsu uลผytkownika kalkulatora Android

Ramy testรณw Robolectric

Testowanie przy uลผyciu Android Framework testowy z urzฤ…dzeniem lub emulatorem jest trudny. Budowanie i uruchamianie testรณw jest powolne i wymaga duลผego nakล‚adu pracy programistycznej. Aby rozwiฤ…zaฤ‡ ten problem, istnieje inne rozwiฤ…zanie: framework testowy Robolectric.

Robolectric pozwala na bieganie Android testy bezpoล›rednio na JVM bez potrzeby korzystania z urzฤ…dzenia lub emulatora.

Zajฤ™cia przypadkรณw testowych Robolectric

Robolectric moลผe wykonywaฤ‡ nastฤ™pujฤ…ce czynnoล›ci:

  • Zarejestruj siฤ™ i utwรณrz klasฤ™ Shadow
  • Przerwaฤ‡ ล‚adowanie Android klasa
  • Uลผywa Javapomรณc w zastฤ…pieniu ciaล‚ metod Android klasa
  • Powiฤ…ลผ obiekt Shadow z Android klasa

Umoลผliwia to wykonanie testowanego kodu bez Android ล›rodowisko.

Inne struktury testowe

Oprรณcz wyลผej wymienionych ram testowych istnieje wiele innych, takich jak:

  • Android Raport Junit, niestandardowy moduล‚ uruchamiajฤ…cy testy oprzyrzฤ…dowania dla Android generujฤ…cy raporty XML w celu integracji z innymi narzฤ™dziami.
  • Espresso
  • Appium

Mity Android Testy

Wiele przedsiฤ™biorstw rozwija Android Testy strategii opartych na powszechnych bล‚ฤ™dnych przekonaniach. W tej czฤ™ล›ci przyjrzymy siฤ™ kilku popularnym mitom i rzeczywistoล›ciom na temat Android testowanie.

Mit nr 1: Wszystko Android urzฤ…dzenia sฤ… takie same, wiฤ™c wystarczy je przetestowaฤ‡ na emulatorach

Aplikacja moลผe dziaล‚aฤ‡ doskonale na emulatorach, jednak ulegaฤ‡ awarii podczas uruchamiania na niektรณrych rzeczywistych urzฤ…dzeniach.

Android okno dialogowe awarii aplikacji wyล›wietlane podczas wykonywania na prawdziwym urzฤ…dzeniu

Emulatory nie wystarczฤ… do testowania aplikacji mobilnych. Musisz przetestowaฤ‡ swojฤ… aplikacjฤ™ na prawdziwych urzฤ…dzeniach.

Mit nr 2: Wystarczy przetestowaฤ‡ na kilku popularnych urzฤ…dzeniach

Twoja aplikacja wyglฤ…da inaczej na rรณลผnych urzฤ…dzeniach, poniewaลผ sprzฤ™t, rozmiary ekranรณw i pamiฤ™ฤ‡ rรณลผniฤ… siฤ™. Przetestuj na rรณลผnych urzฤ…dzeniach, wersjach systemu operacyjnego, sieciach operatorรณw i lokalizacjach.

Mit nr 3: Testowanie eksploracyjne tuลผ przed uruchomieniem jest wystarczajฤ…ce

  • W wiฤ™kszoล›ci przypadkรณw testowania projektujemy przypadki testowe, a nastฤ™pnie je wykonujemy; w przypadku testowania eksploracyjnego projektowanie i wykonywanie testรณw odbywajฤ… siฤ™ jednoczeล›nie.
  • Nie ma planu ani przygotowania, wiฤ™c tester uruchamia dowolne testy. Niektรณre funkcje sฤ… testowane wielokrotnie, podczas gdy inne nie sฤ… w ogรณle testowane.

Mit nr 4: Jeล›li w aplikacji wystฤ™pujฤ… jakieล› bล‚ฤ™dy, uลผytkownicy to zrozumiejฤ…

  • Jeล›li aplikacja nie dziaล‚a lub zawiera bล‚ฤ™dy, uลผytkownicy powinni jฤ… odinstalowaฤ‡.
  • Problemy z jakoล›ciฤ… sฤ… pierwszym powodem zล‚ych recenzji Google Graj, niszczฤ…c swojฤ… reputacjฤ™ i tracฤ…c zaufanie klientรณw.

Dlatego tak waลผne jest posiadanie odpowiedniego Android wdroลผona strategia testowania.

Najlepsze praktyki w Android Testy

  • Twรณrcy aplikacji powinni tworzyฤ‡ przypadki testowe w tym samym czasie, gdy piszฤ… kod
  • Wszystkie przypadki testowe powinny byฤ‡ przechowywane w systemie kontroli wersji wraz z kodem ลบrรณdล‚owym
  • Korzystaj z ciฤ…gล‚ej integracji i uruchamiaj testy za kaลผdym razem, gdy zmieniany jest kod
  • Unikaj polegania wyล‚ฤ…cznie na emulatorach i zrootowanych urzฤ…dzeniach; potwierdลบ wyniki na prawdziwym sprzฤ™cie za pomocฤ… inspektora, takiego jak przeglฤ…darka uiautomatorviewer

FAQ

Nie. Nowoczesne projekty wykorzystujฤ… AndroidTest X z JUnit 4 i AndroidJUnitBiegacz. JUnit Opisane tutaj 3 klasy przypadkรณw testowych zostaล‚y uznane za przestarzaล‚e w API 24 i pozostajฤ… jedynie w starszych pakietach.

Uczenie maszynowe naprawia lokalizatory po zmianie ukล‚adu, grupuje zduplikowane raporty awarii i ANR oraz przewiduje, ktรณre testy zostanฤ… przerwane w wyniku zmiany, dziฤ™ki czemu na kaลผde zatwierdzenie przypada krรณtszy zestaw uruchamiany.

Copilot zapisuje wspรณlne wzorce onView i check z opisanego scenariusza. Nie moลผe znaฤ‡ identyfikatorรณw widoku ani czasu, dlatego uruchamia kaลผdฤ… sugestiฤ™ raz i najpierw dostosowuje dopasowania.

Espresso Testuje w obrฤ™bie wล‚asnej aplikacji i jest szybki i stabilny. UI Automator przekracza granice aplikacji, dziฤ™ki czemu jest odpowiedni dla powiadomieล„, ustawieล„ i okien dialogowych systemu. Wiele pakietรณw korzysta z obu tych funkcji.

Interfejs API ActivityScenario w AndroidTest X, zazwyczaj z reguล‚ฤ… ActivityScenarioRule. Przeprowadza aktywnoล›ฤ‡ przez zdefiniowane stany cyklu ลผycia bez rozszerzania przestarzaล‚ej klasy przypadkรณw testowych.

Zacznij od telefonu z niลผszej pรณล‚ki, ล›redniej pรณล‚ki i najnowszego flagowego modelu obejmujฤ…cego dwa lub trzy Android wersje plus tablet. Dodaj urzฤ…dzenia dziaล‚ajฤ…ce w chmurze przed premierฤ… zamiast kupowaฤ‡ wiฤ™cej sprzฤ™tu.

Dziaล‚ajฤ… na maszynie wirtualnej Java (JVM) maszyny budujฤ…cej z klasami cienia zamiast na prawdziwym urzฤ…dzeniu, wiฤ™c nie wymagajฤ… pakowania, instalacji ani rozruchu emulatora. Dziฤ™ki temu sฤ… praktyczne przy kaลผdym zatwierdzeniu.

GoogleAktualny zestaw bibliotek testowych. Zawiera JUnit i rozszerzenia Truth, ActivityScenario, Espresso i UI Automator za jednฤ… grupฤ… zaleลผnoล›ci, ktรณra dziaล‚a na urzฤ…dzeniach, emulatorach i Robolectric.

Podsumuj ten post nastฤ™pujฤ…co: