Wzorce projektowe w automatyzacji testów aplikacji webowych

23
Wzorce projektowe w automatyzacji testów aplikacji webowych 2015-10-15

Transcript of Wzorce projektowe w automatyzacji testów aplikacji webowych

Page 1: Wzorce projektowe w automatyzacji testów aplikacji webowych

Wzorce projektowe w automatyzacji testów aplikacji webowych

2015-10-15

Page 2: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 3: Wzorce projektowe w automatyzacji testów aplikacji webowych

• Wzorce – po co?

• Stabilność

• Utrzymanie

• Antywzorce

Agenda

2015-10-15 3

Page 4: Wzorce projektowe w automatyzacji testów aplikacji webowych

Wzorzec projektowy

=

Poprawne rozwiązana częstych problemów projektowych

Wzorce – po co?

2015-10-15 4

Page 5: Wzorce projektowe w automatyzacji testów aplikacji webowych

Stabilność

2015-10-15 5

Page 6: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 7: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 8: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 9: Wzorce projektowe w automatyzacji testów aplikacji webowych

STABILNOŚĆ

• Czekanie na zdarzenia

• Test sam zapewnia sobie dane

2015-10-15 9

Page 10: Wzorce projektowe w automatyzacji testów aplikacji webowych

Utrzymanie testów automatycznych

2015-10-15 10

Page 11: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 12: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 13: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 14: Wzorce projektowe w automatyzacji testów aplikacji webowych

Fluent interface

• Metoda zwraca instancję klasy

• Lepsza czytelność

UTRZYMANIE / Extended Page Object Pattern

2015-10-15 14

Page 15: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 16: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 17: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 18: Wzorce projektowe w automatyzacji testów aplikacji webowych

AntywzorceNajczęściej popełniane błędy

2015-10-15 18

Page 19: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 20: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 21: Wzorce projektowe w automatyzacji testów aplikacji webowych

ANTYWZORCE / Pułapki

• Lokatory

• Try/catch

• Nazewnictwo

• Asercje

2015-10-15 21

Page 22: Wzorce projektowe w automatyzacji testów aplikacji webowych

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

Page 23: Wzorce projektowe w automatyzacji testów aplikacji webowych

Dziękuję za uwagę!