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).
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
- Test jednostkowy
- Test integracyjny
- OperaTest narodowy
- 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.
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.
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.
- Pakiet aplikacji to aplikacja docelowa, ktรณrฤ naleลผy przetestowaฤ.
- 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.
- 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
- TestCase zawiera JUnit metody biegania JUnit test
- TestSuite sลuลผy do uruchamiania zestawu przypadkรณw testowych
- InstrumentationTestSuite to pakiet testowy, ktรณry wstrzykuje Instrumentation do InstrumentationTestCase przed ich uruchomieniem.
- InstrumentationTestRunner uruchamia przypadki testowe w aplikacji docelowej.
- AndroidTestCase rozszerza siฤ JUnit Przypadek testowy z metodami dostฤpu do zasobรณw, takich jak kontekst aktywnoลci.
- ApplicationTestCase weryfikuje klasy aplikacji w kontrolowanym ลrodowisku.
- InstrumentationTestCase weryfikuje konkretnฤ funkcjฤ lub zachowanie, na przykลad dane wyjลciowe interfejsu uลผytkownika aplikacji.
- ActivityTestCase to klasa bazowa, ktรณra obsลuguje testowanie dziaลaล aplikacji.
- ProviderTestCase to klasa sลuลผฤ ca do testowania pojedynczego ContentProvider.
- ServiceTestCase testuje klasy usลug w ลrodowisku testowym i obsลuguje cykl ลผycia usลugi.
- SingleLaunchActivityTestCase sลuลผy do testowania pojedynczej aktywnoลci za pomocฤ InstrumentationTestCase.
- ActivityUnitTestCase sลuลผy do testowania pojedynczej, izolowanej aktywnoลci.
- 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.
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.
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





