SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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
Antywzorce
Najczęś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ę!

Contenu connexe

Tendances

Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Ricard Clau
 
Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium Edureka!
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredJúlio de Lima
 
Example mapping - slice any story into testable examples - SoCraTes 2022.pdf
Example mapping - slice any story into testable examples - SoCraTes 2022.pdfExample mapping - slice any story into testable examples - SoCraTes 2022.pdf
Example mapping - slice any story into testable examples - SoCraTes 2022.pdfSeb Rose
 
Virtudes do medo gavin de becker
Virtudes do medo   gavin de beckerVirtudes do medo   gavin de becker
Virtudes do medo gavin de beckerFernando Costa
 
Htc Global Services Us Dol Determination Letter
Htc Global Services Us Dol Determination LetterHtc Global Services Us Dol Determination Letter
Htc Global Services Us Dol Determination Letterguest558a6b
 
GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?Qaladies
 

Tendances (9)

Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014
 
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONSSERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
 
Plano de teste
Plano de testePlano de teste
Plano de teste
 
Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
 
Example mapping - slice any story into testable examples - SoCraTes 2022.pdf
Example mapping - slice any story into testable examples - SoCraTes 2022.pdfExample mapping - slice any story into testable examples - SoCraTes 2022.pdf
Example mapping - slice any story into testable examples - SoCraTes 2022.pdf
 
Virtudes do medo gavin de becker
Virtudes do medo   gavin de beckerVirtudes do medo   gavin de becker
Virtudes do medo gavin de becker
 
Htc Global Services Us Dol Determination Letter
Htc Global Services Us Dol Determination LetterHtc Global Services Us Dol Determination Letter
Htc Global Services Us Dol Determination Letter
 
GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?
 

En vedette (10)

„Złoty środek na wszelkie zło”, czyli jak zabrać się do pisania testów automa...
„Złoty środek na wszelkie zło”, czyli jak zabrać się do pisania testów automa...„Złoty środek na wszelkie zło”, czyli jak zabrać się do pisania testów automa...
„Złoty środek na wszelkie zło”, czyli jak zabrać się do pisania testów automa...
 
Automatyczne testy end-to-end aplikacji JavaScript.
Automatyczne testy end-to-end aplikacji JavaScript.Automatyczne testy end-to-end aplikacji JavaScript.
Automatyczne testy end-to-end aplikacji JavaScript.
 
Patterns in Test Automation
Patterns in Test AutomationPatterns in Test Automation
Patterns in Test Automation
 
Testowanie ponad granicami. Czynniki kulturowe w zapewnieniu jakości
Testowanie ponad granicami. Czynniki kulturowe w zapewnieniu jakościTestowanie ponad granicami. Czynniki kulturowe w zapewnieniu jakości
Testowanie ponad granicami. Czynniki kulturowe w zapewnieniu jakości
 
Database solutions test automation
Database solutions test automationDatabase solutions test automation
Database solutions test automation
 
Co nowego w Javie piszczy – Java 8
Co nowego w Javie piszczy – Java 8Co nowego w Javie piszczy – Java 8
Co nowego w Javie piszczy – Java 8
 
Odnaleźć się w nanokosmosie
Odnaleźć się w nanokosmosieOdnaleźć się w nanokosmosie
Odnaleźć się w nanokosmosie
 
How Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian KarlHow Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian Karl
 
JavaStart - kurs Java Podstawy
JavaStart - kurs Java PodstawyJavaStart - kurs Java Podstawy
JavaStart - kurs Java Podstawy
 
Quality Built In @ Spotify
Quality Built In @ SpotifyQuality Built In @ Spotify
Quality Built In @ Spotify
 

Similaire à Wzorce projektowe w automatyzacji testów aplikacji webowych

MS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMarcin Samsonowski
 
Bartek Mozyrko, Testing methods for mobile applications
Bartek Mozyrko, Testing methods for mobile applicationsBartek Mozyrko, Testing methods for mobile applications
Bartek Mozyrko, Testing methods for mobile applicationsIxDA_Poznan
 
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31kraqa
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...Future Processing
 
Najlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NETNajlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NETMarcin Daczkowski
 
Certyfikacja ISTQB - fakty i mity
Certyfikacja ISTQB - fakty i mityCertyfikacja ISTQB - fakty i mity
Certyfikacja ISTQB - fakty i mityRadoslaw Smilgin
 
XIII Targi eHandlu - AtomStore - Łukasz Plutecki
XIII Targi eHandlu - AtomStore - Łukasz PluteckiXIII Targi eHandlu - AtomStore - Łukasz Plutecki
XIII Targi eHandlu - AtomStore - Łukasz Pluteckiecommerce poland expo
 
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSeeQuality.net
 
[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagań
[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagań[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagań
[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagańFuture Processing
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaBartłomiej Cymanowski
 
Bezstratna kompresja listy przypadków testowych
Bezstratna kompresja listy przypadków testowychBezstratna kompresja listy przypadków testowych
Bezstratna kompresja listy przypadków testowychPiotr Piotrowski
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testowWiktor Żołnowski
 
Context Driven School of testing w prostych przykładach
Context Driven School of testing w prostych przykładachContext Driven School of testing w prostych przykładach
Context Driven School of testing w prostych przykładachRadoslaw Smilgin
 
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Serviceskraqa
 
Testowanie aplikacji mobilnych (IxDA 2012)
Testowanie aplikacji mobilnych (IxDA 2012) Testowanie aplikacji mobilnych (IxDA 2012)
Testowanie aplikacji mobilnych (IxDA 2012) Bartosz Mozyrko
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Deckraqa
 
Kult Cargo - czyli błędy przy wprowadzaniu Agile
Kult Cargo - czyli błędy przy wprowadzaniu AgileKult Cargo - czyli błędy przy wprowadzaniu Agile
Kult Cargo - czyli błędy przy wprowadzaniu AgileJakub Drzazga
 
Edukacja testerska na Quality in IT
Edukacja testerska na Quality in ITEdukacja testerska na Quality in IT
Edukacja testerska na Quality in ITRadoslaw Smilgin
 

Similaire à Wzorce projektowe w automatyzacji testów aplikacji webowych (20)

MS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowych
 
Bartek Mozyrko, Testing methods for mobile applications
Bartek Mozyrko, Testing methods for mobile applicationsBartek Mozyrko, Testing methods for mobile applications
Bartek Mozyrko, Testing methods for mobile applications
 
[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych
 
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
 
Najlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NETNajlepsze praktyki testowania aplikacji ASP.NET
Najlepsze praktyki testowania aplikacji ASP.NET
 
Certyfikacja ISTQB - fakty i mity
Certyfikacja ISTQB - fakty i mityCertyfikacja ISTQB - fakty i mity
Certyfikacja ISTQB - fakty i mity
 
XIII Targi eHandlu - AtomStore - Łukasz Plutecki
XIII Targi eHandlu - AtomStore - Łukasz PluteckiXIII Targi eHandlu - AtomStore - Łukasz Plutecki
XIII Targi eHandlu - AtomStore - Łukasz Plutecki
 
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
 
[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagań
[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagań[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagań
[Quality Meetup #14] Agnieszka Opilska – Testowanie wymagań
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
Bezstratna kompresja listy przypadków testowych
Bezstratna kompresja listy przypadków testowychBezstratna kompresja listy przypadków testowych
Bezstratna kompresja listy przypadków testowych
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
Context Driven School of testing w prostych przykładach
Context Driven School of testing w prostych przykładachContext Driven School of testing w prostych przykładach
Context Driven School of testing w prostych przykładach
 
Usability Tools
Usability Tools Usability Tools
Usability Tools
 
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
 
Testowanie aplikacji mobilnych (IxDA 2012)
Testowanie aplikacji mobilnych (IxDA 2012) Testowanie aplikacji mobilnych (IxDA 2012)
Testowanie aplikacji mobilnych (IxDA 2012)
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
 
Kult Cargo - czyli błędy przy wprowadzaniu Agile
Kult Cargo - czyli błędy przy wprowadzaniu AgileKult Cargo - czyli błędy przy wprowadzaniu Agile
Kult Cargo - czyli błędy przy wprowadzaniu Agile
 
Edukacja testerska na Quality in IT
Edukacja testerska na Quality in ITEdukacja testerska na Quality in IT
Edukacja testerska na Quality in IT
 

Plus de Stowarzyszenie Jakości Systemów Informatycznych (SJSI)

Plus de Stowarzyszenie Jakości Systemów Informatycznych (SJSI) (20)

Star Trek: BDD Enterprise
Star Trek: BDD EnterpriseStar Trek: BDD Enterprise
Star Trek: BDD Enterprise
 
Model based testing as a BA tool
Model based testing as a BA toolModel based testing as a BA tool
Model based testing as a BA tool
 
Communication - Language of Leader
Communication - Language of LeaderCommunication - Language of Leader
Communication - Language of Leader
 
Miękkie umiejętności w pracy analityka biznesu
Miękkie umiejętności w pracy analityka biznesuMiękkie umiejętności w pracy analityka biznesu
Miękkie umiejętności w pracy analityka biznesu
 
Błędy w analizie z praktyki (nowe wydanie  )
Błędy w analizie z praktyki (nowe wydanie  )Błędy w analizie z praktyki (nowe wydanie  )
Błędy w analizie z praktyki (nowe wydanie  )
 
7 Skills for highly effective teams - workshop
7 Skills for highly effective teams - workshop7 Skills for highly effective teams - workshop
7 Skills for highly effective teams - workshop
 
Dancing with the devil - how to cooperate with a problematic customer
Dancing with the devil - how to cooperate with a problematic customerDancing with the devil - how to cooperate with a problematic customer
Dancing with the devil - how to cooperate with a problematic customer
 
Cosmic truths about software requirements
Cosmic truths about software requirementsCosmic truths about software requirements
Cosmic truths about software requirements
 
Zagraj w zaangażowanie
Zagraj w zaangażowanieZagraj w zaangażowanie
Zagraj w zaangażowanie
 
Analiza prawdziwie biznesowa - skąd biorą się projekty
Analiza prawdziwie biznesowa - skąd biorą się projektyAnaliza prawdziwie biznesowa - skąd biorą się projekty
Analiza prawdziwie biznesowa - skąd biorą się projekty
 
Internet of Things loves data - analysis of Industry 4.0
Internet of Things loves data - analysis of Industry 4.0Internet of Things loves data - analysis of Industry 4.0
Internet of Things loves data - analysis of Industry 4.0
 
Start with Accessibility: Why, How and What
Start with Accessibility: Why, How and WhatStart with Accessibility: Why, How and What
Start with Accessibility: Why, How and What
 
Agile business analyst
Agile business analystAgile business analyst
Agile business analyst
 
Analityk i architekt w czasach automatyzacji i robotyzacji biznesu
Analityk i architekt w czasach automatyzacji i robotyzacji biznesuAnalityk i architekt w czasach automatyzacji i robotyzacji biznesu
Analityk i architekt w czasach automatyzacji i robotyzacji biznesu
 
Jak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BA
Jak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BAJak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BA
Jak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BA
 
7 Skills for highly effective teams
7 Skills for highly effective teams7 Skills for highly effective teams
7 Skills for highly effective teams
 
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
 
[TestWarez 2017] Przychodzi tester na rozmowę...
[TestWarez 2017] Przychodzi tester na rozmowę...[TestWarez 2017] Przychodzi tester na rozmowę...
[TestWarez 2017] Przychodzi tester na rozmowę...
 
[TestWarez 2017] A proper gun makes testing fun
[TestWarez 2017] A proper gun makes testing fun[TestWarez 2017] A proper gun makes testing fun
[TestWarez 2017] A proper gun makes testing fun
 
[TestWarez 2017] „Przypadek Testowy” a „Kliencki Przypadek Użycia”
[TestWarez 2017] „Przypadek Testowy” a „Kliencki Przypadek Użycia”[TestWarez 2017] „Przypadek Testowy” a „Kliencki Przypadek Użycia”
[TestWarez 2017] „Przypadek Testowy” a „Kliencki Przypadek Użycia”
 

Wzorce projektowe w automatyzacji testów aplikacji webowych

  • 1. Wzorce projektowe w automatyzacji testów aplikacji webowych 2015-10-15
  • 2. 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
  • 3. • Wzorce – po co? • Stabilność • Utrzymanie • Antywzorce Agenda 2015-10-15 3
  • 4. Wzorzec projektowy = Poprawne rozwiązana częstych problemów projektowych Wzorce – po co? 2015-10-15 4
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. STABILNOŚĆ • Czekanie na zdarzenia • Test sam zapewnia sobie dane 2015-10-15 9
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. Fluent interface • Metoda zwraca instancję klasy • Lepsza czytelność UTRZYMANIE / Extended Page Object Pattern 2015-10-15 14
  • 15. 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
  • 16. 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
  • 17. 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
  • 19. 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
  • 20. 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
  • 21. ANTYWZORCE / Pułapki • Lokatory • Try/catch • Nazewnictwo • Asercje 2015-10-15 21
  • 22. 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