Testy interfejsu użytkownika
Ten wpis jest kontynuacją serii dotyczącej różnych poziomów testów. Przed przystąpieniem do czytania zachęcam Cię do zapoznania się z poprzednimi postami o testach jednostkowych i testach integracyjnych. W tym wpisie postaram się przybliżyć testy na poziomie interfejsu użytkownika.
Aplikacja
Nasza aplikacja nie zmienia się pod względem funkcjonalności, którą dostarcza. Nie będzie to już zwykły kalkulator, a aplikacja która liczy ile wybranej waluty możemy otrzymać, gdy posiadamy konkretną ilość polskich złotych. W tym wpisie Nasza aplikacja zyskuje interfejs graficzny i jest gotowa do interakcji z realnymi użytkownikami.
Testowana funkcjonalność
Nasza aplikacja posiada interfejs użytkownika dostępny pod adresem: https://testeroprogramowania.github.io/selenium/CurrencyCalculator.html Interfejs graficzny składa się z 3 elementów – dwóch pól tekstowych oraz przycisku. W pierwszym polu tekstowym wprowadzamy ilość złotówek, które chcemy wymienić, a w drugim polu podajemy nazwę waluty. Po wprowadzeniu danych wybieramy przycisk „Przelicz” co zwraca Nam ilość waluty jaką otrzymamy za konkretną ilość złotówek.
Jak przeprowadzić test?
W celu przeprowadzenie testu należy wykonać następujące kroki:
1. Przejść na stronę https://testeroprogramowania.github.io/selenium/CurrencyCalculator.html
2. Wprowadzić wartość w pole ilość zł
3. Wprowadzić wartość w pole nazwa waluty.
4. Kliknąć na przycisk „Przelicz”
5. Zweryfikować czy przeliczona wartość jest zgodna z oczekiwaną
Jak działa aplikacja?
Użytkownik wprowadza wymagane wartości do pól na stronie internetowej. Po kliknięciu przycisku Przelicz, dane z pola ilość złotówek i waluta są wysyłane do metody która była testowana podczas testów integracyjnych ( calculate()). Następnie metoda calculate() łączy się z serwisem NBP i pobiera aktualny kurs wybranej waluty, a następnie wykorzystuje go w metodzie div() kalkultora. Wynik działania jest pobierany i przedstawiany użytkownikowi w postaci alertu.
Pierwszy test – happy path
Pierwszy test będzie tzw. happy pathem, czyli sytuacją w której podajemy bardzo proste dane wejściowe, które nie powinny zepsuć naszej aplikacji. Załóżmy, że wprowadzamy wartość 1000 zł oraz nazwę waluty jako USD. Po naciśnięciu przycisku przelicz powinien pojawić się alert z wynikiem dzielenia wartości 1000 zł przez wartość kursu dolara na dany dzień dostępnego w serwisie NBP. W naszym przypadku dla kursu dolara (4 zł) oczekiwany rezultat to 250 USD. Opisany test zakończył się sukcesem. Wynik jest zgodny z oczekiwanym.
Drugi test
Drugi test będzie zakładał, że użytkownik przez pomyłkę lub celowo wprowadzi nieodpowiednie wartości. Pamiętamy, że w przypadku, gdy wprowadzimy nieodpowiednie wartości to nasza aplikacja powinna zwrócić wartość 0 jako wynik działania. Spróbujemy przetestować działanie naszej aplikacji dla różnych walut i różnych ilości polskich złotych.
Nasza aplikacja nie zachowuje się poprawnie. Dostajemy komunikat o treści „Error” co nie jest zgodne z oczekiwanym zachowaniem programu. Możemy zgłosić błąd i oczekiwać na odpowiedź od programisty. Posiadając w projekcie testy jednostkowe i integracyjne jesteśmy w stanie w łatwy sposób określić, że problem jest powiązany z komunikacją między interfejsem użytkownika i warstwą logiki biznesowej.
Podsumowanie
W tym wpisie na prostym przykładzie przedstawiłem ideę testów UI . Jest to poziom testów najłatwiejszy do zrozumienia, ponieważ każdy z Nas był kiedyś użytkownikiem jakiejś aplikacji i weryfikował jej działanie poprzez interakcję z przygotowanym interfejsem użytkownika. Testy UI nie wymagają umiejętności programowania i zagłębiana się w kod źródłowy. Oczywiście warto wiedzieć jak powinna działać aplikacja, aby poprawnie weryfikować wyniki testów