Wczesne testy oprogramowania potwierdzają poprawność projektu

"Testuj wcześnie i często" to strategia z zakresu zwinnego inżynieringu oprogramowania, która ewoluowała i stała się obowiązującą zasadą dla programistów w każdej dziedzinie. Wczesne testowanie oprogramowania jest szczególnie ważne dla programistów pracujących nad aplikacjami działającymi na różnych platformach, którzy muszą wspierać urządzenia mobilne o zróżnicowanych parametrach technicznych i funkcjach systemu operacyjnego.

MobileTogether oferuje funkcje umożliwiające włączenie wczesnych testów oprogramowania do procesu tworzenia, eliminując czasochłonne cykle kompilacji, wdrażania i debugowania dla każdej platformy mobilnej. Na stronie internetowej firmy Altova można znaleźć informacje o funkcji [automated-testing-for-mobile-apps|symulatora MobileTogether umożliwiającej wczesne testy oprogramowania, a na naszym blogu opisaliśmy możliwość nagrywania i ponownego odtwarzania określonych sekwencji działań w ramach [przypadków testowych]].

Ten artykuł opisuje funkcję "Testowanie na urządzeniu". Jest ona zintegrowana z programem MobileTogether Designer, aby umożliwić programistom natychmiastowe sprawdzanie projektów aplikacji oraz weryfikację logiki i funkcjonalności na dowolnym obsługiwanym urządzeniu mobilnym lub platformie – Android, iOS, a także na komputerach z systemem Windows lub telefonach z systemem Windows Phone.

Testowanie na urządzeniu klienta jest szczególnie przydatne we wczesnych etapach testowania aplikacji, zwłaszcza tych, które:

  • Wykorzystaj funkcje mobilne, które nie są dostępne w programie Designer na platformie Windows, takie jak wysyłanie wiadomości SMS
  • Wykorzystuj akcje, które działają nieco inaczej w zależności od systemu operacyjnego, na przykład akcja "Pokaż lokalizację", która otwiera domyślną aplikację mapową klienta
  • Należy przetestować to na zupełnie nowym modelu telefonu komórkowego, którego wymiary ekranu mogą nie odpowiadać urządzeniu używanemu do podglądu projektów

Testowe uruchomienie na urządzeniu klienta ma bardzo proste wymagania: urządzenie mobilne, na którym ma być przeprowadzony test, musi mieć zainstalowaną aplikację MobileTogether Client, urządzenie mobilne i stacja robocza MobileTogether Designer muszą być podłączone do tej samej sieci, a adres sieciowy stacji Designer musi być skonfigurowany jako serwer MobileTogether na urządzeniu mobilnym.

Po przygotowaniu urządzenia klienta, programista może rozpocząć testowanie na urządzeniu klienta, korzystając z menu "Projekt" w programie projektowania lub z wygodnego paska narzędzi

Przyjrzyjmy się aplikacji, która jest w fazie rozwoju i wykorzystuje funkcje GPS. Twórca aplikacji wybrał model iPhone 6 Plus jako urządzenie do testów i demonstracji.

Najwcześniejszą możliwością przetestowania aplikacji jest uruchomienie jej w symulatorze MobileTogether Simulator, który jest funkcją programu MobileTogether Designer i jest dostępny w każdej fazie procesu tworzenia.

Główne okno symulatora wyświetla aplikację tak, jak będzie ona wyglądać na wybranym urządzeniu podglądu. Programiści mogą zmieniać wybrane urządzenie, aby zobaczyć interfejs użytkownika tak, jak będzie on wyglądał na różnych urządzeniach iOS, Android, Windows i innych, a także przełączać się w czasie rzeczywistym między orientacją pionową i poziomą.

Symulator również aktualizuje zmiany zachodzące w strukturze danych źródła strony, w miarę jak aplikacja jest wykonywana. Okno "Wiadomości" w interfejsie projektowania wyświetla szczegółowy, krok po kroku raport aktywności podczas wykonywania, w tym komunikaty między aplikacją kliencką a serwerem. Elementy sterujące, które wymagają interakcji użytkownika, są aktywne podczas symulacji.

Oto jak aplikacja wygląda podczas działania w emulatorze:

Natychmiast pojawiają się dwa problemy: symulator nie wyświetla rzeczywistych współrzędnych GPS. Zamiast tego, wykorzystuje plik danych do symulacji ruchu urządzenia mobilnego oraz aktualizacji współrzędnych GPS. Ponadto, przycisk "Widok mapy" w aplikacji otwiera mapy Bing na stacji roboczej z systemem Windows, na której działa program Designer, podczas gdy powinien otwierać aplikację Apple Maps, która jest domyślną aplikacją mapową na prawdziwym urządzeniu iPhone.

Możemy użyć opcji "Testowanie na urządzeniu" ("Trial Run on Client"), aby uruchomić aplikację na rzeczywistym urządzeniu mobilnym, co pozwoli na przetestowanie funkcjonalności GPS i zweryfikowanie działania przycisku "Widok mapy". Do pierwszego testu użyjemy telefonu z systemem Android. Kliknięcie przycisku "Testowanie na urządzeniu" otwiera nowe okno w interfejsie projektowania:

W tym momencie aplikacja Designer pełni również funkcję serwera MobileTogether. Okno komunikacji wewnętrznej otwiera się, gdy urządzenie klienckie uruchamia aplikację.

Programista klika "Tak" w oknie dialogowym projektanta, aby kontynuować, a aplikacja uruchamia się na urządzeniu klienta. Natychmiast zauważamy nieoczekiwany problem. Domyślny rozmiar tekstu jest wyjątkowo mały:

Moglibyśmy po prostu dodać przycisk "Abc+" do powiększania tekstu i wymagać, aby użytkownicy końcowi robili to samo, ale byłoby to rozwiązanie nieporęczne i niezbyt przyjazne dla użytkownika. Dokonując dalszych analiz, możemy użyć okna "Testowanie na kliencie" w programie Designer, aby zobaczyć strukturę danych aplikacji podczas jej działania:

Element "textSize" w strukturze danych trwale przechowywanych zawiera wartość, która określa rozmiar czcionki dla etykiet tekstowych i przycisków, wyrażony w absolutnych pikselach. Wartość 20 została wybrana jako domyślna i wyglądała dobrze na urządzeniu iPhone 6 Plus podczas projektowania, ale nie działa prawidłowo na obecnym urządzeniu.

Możemy łatwo zmienić domyślny rozmiar tekstu z wartości stałej na wartość zależną od wymiarów pikseli, dostosowaną do każdego unikalnego urządzenia klienta. Następnie możemy natychmiast przeprowadzić nowe testy.

MobileTogether udostępnia zmienne globalne, które pozwalają programistom uzyskiwać dostęp do różnych charakterystyk urządzenia końcowego podczas działania aplikacji. Okno "Zmienne globalne" w środowisku projektowania wyświetla wartości dla wybranego urządzenia testowego. Poniżej znajduje się zrzut ekranu pokazujący wartości dla urządzenia iPhone 6 Plus:

Zamiast przypisywać domyślną wartość 20 pikseli do elementu textSize, możemy stworzyć funkcję opartą na globalnej zmiennej MT_DeviceHeight. Dzieląc 20 przez 736, otrzymujemy około 2,7 procent, więc wykorzystamy tę wartość do stworzenia funkcji XPath, która będzie ustawiać początkową wartość textSize w zależności od urządzenia klienta:

Teraz możemy przeprowadzić kolejne testy na urządzeniu klienta, korzystając z telefonu z systemem Android, aby sprawdzić wynik.

Okno podglądu (Trial Run) powyżej pokazuje nową, obliczoną wartość domyślnego rozmiaru tekstu, a poniżej znajduje się nowy zrzut ekranu z telefonu:

Domyślny rozmiar tekstu, obliczany na podstawie wysokości ekranu urządzenia, jest znacznie bardziej rozsądny i przyjazny dla użytkownika! Ponadto, rozmiar tekstu można nadal precyzyjnie dostosować za pomocą przycisków "Abc-" i "Abc+", ponieważ te przyciski jedynie zmniejszają lub zwiększają wartość elementu "textSize".

Teraz możemy wrócić do naszego pierwotnego zadania, którym było sprawdzenie prawidłowego działania przycisku "Widok mapy" w aplikacji. Poniżej znajdują się zrzuty ekranu strony z aplikacji oraz odpowiadającego jej widoku mapy na telefonie z systemem Android:

A oto te same widoki, ale wyświetlane na iPhonie:

Wszystkie cztery zrzuty ekranu przedstawione powyżej zostały wykonane podczas testów na urządzeniu klienta. Dokładny wygląd map na każdej platformie zależy od funkcji i ustawień użytkownika w danej aplikacji map. Na przykład, aplikacja Google Maps na telefonie z systemem Android oferuje funkcję Street View, natomiast aplikacja Maps firmy Apple jej nie posiada.

Można przetestować wczesne wersje oprogramowania za pomocą funkcji "Trial Run on Client", a także skorzystać z pozostałych funkcji MobileTogether do tworzenia eleganckich aplikacji, poprzez pobieranie bezpłatnego programu MobileTogether Designer, które zawiera wbudowaną pomocą, samouczkami oraz licznymi przykładami.