Wzorce projektowe w automatyzacji testów aplikacji webowych
-
Upload
stowarzyszenie-jakosci-systemow-informatycznych-sjsi -
Category
Software
-
view
1.215 -
download
1
Transcript of Wzorce projektowe w automatyzacji testów aplikacji webowych
Wzorce projektowe w automatyzacji testów aplikacji webowych
2015-10-15
Natalia Krawczyk
• Kilkuletnie doświadczenie w testowaniu manualnym i automatycznym
• Team Leader zespołu testerów automatycznych
• Prelegentka WrotQA
• Uczestniczka Testing Cup
2015-10-15
• Wzorce – po co?
• Stabilność
• Utrzymanie
• Antywzorce
Agenda
2015-10-15 3
Wzorzec projektowy
=
Poprawne rozwiązana częstych problemów projektowych
Wzorce – po co?
2015-10-15 4
Stabilność
2015-10-15 5
Główna zasada:
• Własne metody akcji
• Oczekiwania na zdarzenia w metodzie
Możliwe pułapki:
• Niekończące się „waity”
• Fałszywie negatywne wyniki
Plusy:
• Stabilniejsze testy
• Nie trzeba pamiętać o „waitach”
Minusy:
• Zmiana przyzwyczajeń
• Konieczność poznania wszystkich akcji
STABILNOŚĆ / Action Wrapper Pattern
2015-10-15 6
Główna zasada:
• Test sam zapewnia sobie dane testowe
• Nie dba o stan aplikacji
Możliwe pułapki:
• Zbyt „czyste” środowisko
• Selektywne pokrycie
Plusy:
• Bardziej deterministyczne wyniki
• Możliwość równoległego uruchamiania testów
Minusy:
• Dłuższy czas trwania testów
• Nie odzwierciedlają rzeczywistości
STABILNOŚĆ / Hermetic Test Pattern
Stabilność 2015-10-15 7
STABILNOŚĆ / Black Hole Proxy Pattern
Główna zasada:
• Ucinamy wszystkie zapytania do pobocznych usług/serwisów
2015-10-15 8
Plusy:• Bardziej deterministyczne
wyniki• Szybsze testy
Minusy:• Nie odzwierciedlają
rzeczywistości
STABILNOŚĆ
• Czekanie na zdarzenia
• Test sam zapewnia sobie dane
2015-10-15 9
Utrzymanie testów automatycznych
2015-10-15 10
UTRZYMANIE / Dobre praktyki w inżynierii oprogramowania
DRY (Don’t Repeat Yourself)
KISS (Keep it simple, stupid!)
YAGNI (You ain’t gonna need it)
2015-10-15 11
Główna zasada:• 1 strona = 1 klasa • Klasa = Definicje elementów +
operacje na stronie
Możliwe pułapki:• Za duży poziom zagnieźdzenia • Niepoprawna organizacja
struktury projektu
Plusy:
• Porządek
• Łatwiejsze tworzenie nowych testów
Minusy:
• Dodatkowy wysiłek na starcie
UTRZYMANIE / Page Object Pattern
Stabilność 2015-10-15 12
Module Object Pattern
• 1 moduł = 1 klasa
• Klasa = definicje elementów + operacje na module
• Page = moduły + definicje unikalnych elementów + unikalne operacje na stronie
Base Pages:
• Metody wspólne dla wszystkich stron definiujemy w Base Page
UTRZYMANIE / Extended Page Object Pattern
Stabilność 2015-10-15 13
Fluent interface
• Metoda zwraca instancję klasy
• Lepsza czytelność
UTRZYMANIE / Extended Page Object Pattern
2015-10-15 14
Główna zasada:
• Testy korzystają z domyślnych danych
• Pliki konfiguracyjne
• Generatory danych
Możliwe pułapki:
• Zbyt skomplikowane generatory danych
• Wiele źródeł danych testowych
Plusy:
• Czytelniejsze testy
• Szybka zmiana danych
Minusy:
• Jednorodne dane
• Cięzko określić pokrycie
UTRZYMANIE / Default values pattern
Stabilność 2015-10-15 15
Główna zasada:• Scenariusz = przykład
działania• Reużywalne kroki
Możliwe pułapki:• Zbyt szczegółowe scenariusze• Zbyt długie scenariusze• Pisane z myślą o ich
implementacji
Plusy:
• Czytelność
• „Żywa dokumentacja”
• Współpraca przy tworzeniu scenariuszy
Minusy:
• Dodatkowy framework
UTRZYMANIE / Behaviour Driven Development
Stabilność 2015-10-15 16
UTRZYMANIE
• Testy automatyczne to też aplikacja
• Porządek w kodzie poprzez Page Object Pattern
• Test korzysta z domyślnych danych, które konfigurowane są w jednym miejscu
• Porządek w scenariuszach testowych poprzez zastosowanie BDD
2015-10-15 17
AntywzorceNajczęściej popełniane błędy
2015-10-15 18
Główna zasada:• Test wykorzystuje dane
utworzone w poprzednim teście
• Testy uruchamiane są w konkretnej kolejności
Możliwe pułapki:• Złe dane testowe• Bardzo długi „łańcuch”
Plusy:
• Szybsze testy
• Bardziej rzeczywiste
Minusy:
• Trudne debugowanie
• Brak możliwości uruchamiania testów równolegle
• Testy zależne od stanu aplikacji
ANTYWZORCE / Chain linked pattern
Stabilność 2015-10-15 19
Główna zasada:
• Duża ilość instrukcji warunkowych
• Zagnieżdzenia
Możliwe pułapki:
• Częsta duplikacja kodu
Plusy:
• Szybki start
• Szybki efekt
Minusy:
• Trudne debugowanie
• Brak możliwości uruchamiania testów równolegle
• Testy zależne od stanu aplikacji
ANTYWZORCE / Spaghetti code
Stabilność 2015-10-15 20
ANTYWZORCE / Pułapki
• Lokatory
• Try/catch
• Nazewnictwo
• Asercje
2015-10-15 21
STABILNOŚĆ
• Własne metody akcji zawierające oczekiwania na zdarzenia
• Test nie zależy od danych znajdujących się w aplikacji
UTRZYMANIE
• Porządek w kodzie poprzez Page Object Pattern
• Porządek w danych testowych
Podsumowanie
UWAŻAJ NA
• Lokatory
• Try/catch
• Nazewnictwo
• Asercje
2015-10-15 22
Dziękuję za uwagę!