Zaprojektowanie i zakodowanie aplikacji mobilnej, która jest pozbawiona błędów to utopijne marzenie każdego programisty. Niestety (lub stety!), zanim aplikacja ujrzy światło dzienne musi przejść przez testy, które mają na celu wykrycie ewentualnych błędów zanim zrobią to realni użytkownicy. Testowanie aplikacji to złożone i wieloetapowe zadanie, mimo to w niniejszym artykule w pigułce przedstawiamy garść podstawowych informacji odnoszących się do tego zagadnienia.
Nawet rzetelne testowanie oprogramowania z reguły nie jest w stanie wykryć wszystkich defektów aplikacji. W grę wchodzą nie tylko kwestie techniczne, ale także zgodność z wymaganiami i oczekiwaniami klienta. W praktyce spora część problemów z aplikacją wynika z problemów, jakie zostały popełnione w fazie definiowania wymagań. Z ekonomicznego punktu widzenia korzystne jest wczesne wykrycie defektu, gdyż z reguły wcześniejsza diagnoza wiąże się z niższymi kosztami naprawy (oczywiście nie jest to regułą).
Testy mogą dotyczyć różnych aspektów/warstw aplikacji. Z reguły można się spotkać z podziałem na testy białoskrzynkowe (strukturalne) oraz czarnoskrzynkowe (testowanie interfejsu). Z reguły na początku wykonywane są testy jednostkowe, które mają na celu zweryfikowanie poprawności działania określonych fragmentów kodu (np. obiektów lub procedur). Jeśli nie ma rażących błędów w kodzie to można przejść do testów biało oraz czarnoskrzynkowych.
Po testach automatycznych z reguły stosowane są testy manualne, które mają formę ręcznego klikania i testowania interfejsu użytkownika. Testy tego typu są wykonywane przez testera oprogramowania. Testy manualne mogą mieć charakter audytu, który potwierdza, że wcześniejsze testy automatyczne zostały wykonane prawidłowo. Poza tym, testy tego typu mogą sprawdzać bezpieczeństwo aplikacji oraz ogólne wrażenia z użytkowania. Zatem tutaj oceniany jest nie tylko UI (User Interface) ale także UX (User Experience).
Podsumowując, testowanie aplikacji (zarówno testowanie aplikacji mobilnych jak i testowanie aplikacji webowych) to wieloetapowe zadanie, które wymaga wiedzy technicznej w połączeniu ze zrozumieniem potrzeb przyszłych użytkowników aplikacji.