Na rynku pojawia się coraz więcej aplikacji oraz gier dostępnych na mobilne urządzenia, więc aby wyróżnić się spośród konkurencji należy zadbać, aby aplikacja miała jak najlepsze oceny i opinie w sklepie. By zapewnić sobie wysoką pozycję w rankingach należy mieć pewność, że aplikacja lub gra spełnia nie tylko wysokie oczekiwania użytkowników pod względem logiki, użyteczności itd., ale także pod względem jakościowym. Przecież każdy chciałby aby zainstalowana aplikacja działała na jego urządzeniu mobilnym i żeby była wolna od bugów czy crashy. Dynamicznie rozwijający się rynek wymusił na developerach elastyczność i mobilność – teraz ich produkty muszą być kompatybilne z wieloma platformami, systemami operacyjnymi oraz muszą obsługiwać więcej niż jeden typ wyświetlacza. Dlatego tak ważne są testy aplikacji mobilnych – zarówno te manualne jak i te automatyczne. Dzięki automatyzacji możliwe jest usprawnienie procesu testowania, unikamy powtarzania pracy, możemy testować 24h na dobę, mamy gwarantowaną szybkość i dokładność zgłaszanych błędów. Dodatkowymi korzyściami są zaufanie Klientów, wysokie oceny w sklepie, pewność, że aplikacja działa na każdym urządzeniu oraz minimalizacja kosztów związanych z naprawianiem aplikacji po udostępnieniu jej użytkownikom.
Na co jeszcze można się natknąć, czyli wyzwania w testach aplikacji mobilnych
Z czym przyjdzie się mierzyć testerowi podczas przeprowadzanych testów:
- Błędy mają swoje źródła zarówno po stronie hardware’u jak i software’u, więc tester będzie musiał zmierzyć się z ograniczeniami narzucanymi przez określony OS
- Emulatory nie odzwierciedlają prawdziwego zachowania aplikacji na urządzeniu – w końcu procent użytkowników, którzy używają aplikacji na emulatorze to całe 0% ;), dlatego ważne są testy na realnych urządzeniach
- Jeśli aplikacja nie instaluje się na urządzeniu to ni można jej na nim przetestować – co wtedy?
- Aplikacje się crashują, zużywają dużo pamięci – czym może to być spowodowane? Co z użyciem baterii, jak aplikacja zachowa się podczas rozładowania urządzenia, co się stanie kiedy nadejdzie połączenie, co ze współpracą aplikacji z wtyczkami np. lokalizacja
- I największy problem czyli GUI – problemy z poprawnym wyświetlaniem aplikacji na różnych rozdzielczościach
Czym testować?
Powyżej przedstawiono rodzinę frameworków, które można wykorzystać do automatyzacji testów aplikacji mobilnych. Pokrótce opowiem o większości, zaś jeden zostanie omówiony szerzej.
Robotium
Jest to framework przeznaczony do tworzenia łatwych, solidnie zautomatyzowanych przypadków testowych UI dla aplikacji Android. Ze wsparciem Robotium developerzy mogą pisać funkcje przypadków użycia, scenariusze testów systemowych obejmujących wiele aktywności Androida. Robotium jest na licencji open source, zawiera wiele użytecznych metod do testów UI, wspiera aplikacje natywne, webowe oraz hybrydowe. Dodatkowym plusem są częste aktualizacje. Robotium jest podobne do Selenium – wykorzystywany jest zarówno wtedy kiedy kod źródłowy jest znany i dostępny oraz kiedy dostępne jest tylko API a szczegóły implementacji są niejawne.
Zalety Robotium:
- Kod łatwy do pisania
- Kod jest dość krótki
- Automatyczny pomiar czasu i opóźnień
- Automatyczne przełączenie bieżącej aktywności
- Automatyczne wyszukiwanie Views
- Automatycznie podejmuje własne decyzje jak np. kiedy konieczne jest scrollowanie
- Wykonywanie testów jest szybkie
Przykład kodu:
Public class EditorTest extends ActivityInstrumentationTestCase2<EditorActivity> {
private Solo solo;
public EditorTest() {
super("com.test.editor", EditorActivity.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void testPreferenceIsSaved() throws Exception {
solo.sendKey(Solo.MENU);
solo.clickOnText("More");
solo.clickOnText("Preferences");
solo.clickOnText("Edit File Extensions");
Assert.assertTrue(solo.searchText("rtf"));
solo.clickOnText("txt");
solo.clearEditText(2);
solo.enterText(2, "robotium");
solo.clickOnButton("Save");
solo.goBack();
solo.clickOnText("Edit File Extensions");
Assert.assertTrue(solo.searchText("application/robotium"));
}
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
}
Chcesz lepiej zrozumieć aplikacje i systemy, które testujesz? Dołącz do ModernTester, poznaj najpotrzebniejsze narzędzia, frameworki oraz języki programowania i ćwicz na specjalnie przygotowanych środowiskach testowych: Platforma e-learningowa ModernTester
Zostaw komentarz