| Tytuł: | Testowanie z Pytest |
| Kod: | craft-test-pytest |
| Kategoria: | Testowanie automatyczne |
| Forma: | 20% wykłady, 80% warsztaty |
| Czas trwania: | 3 dni |
| Odbiorcy: | developerzy, architekci, testerzy |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Przewodnik po technikach testowania wspomagających pracę programisty i testera automatyzującego.
Szkolenie łączy poznawanie dobrych praktyk testowania z opanowywaniem tajników pytesta. Program i ćwiczenia oparte o studium przypadku.
Dzień 1: pisanie scenariuszy akceptacyjnych, podstawy testów akceptacyjnych, jednostkowych i zaślepianie
Dzień 2: “Dobre praktyki” (weryfikacja, testowanie interfejsu zamiast implementacji, nazewnictwo testów)
Dzień 3: Opanowywanie narzędzia pytest oraz rozwiązywanie problemów z testami
Wyróżniki szkolenia
- Wzorce i antywzorce
- Strategia testowania
- Testowalny kod
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
Piszemy testy z myślą o celu- Wzorce
- Sterowanie implementacji testami
- Ochrona przed regresją
- Stabilne dostarczanie oprogramowania
- Wspomaganie programisty, nie spowalnianie
- Sterowanie implementacji testami
- Antywzorce
- Pisanie testów tylko po to, by spełnić cel pokrycia testsami
- Pisanie testów, które sprawdzają implementację zamiast zachowania
- Pisanie testów zawsze na końcu pracy nad zadaniem
- Pisanie testów tylko po to, by spełnić cel pokrycia testsami
- Wzorce
-
Struktura testu- Pisanie testów tak, by mogły być uruchomione przez pytest
- Kroki
- Arrange
- Act
- Assert
- Kiedy łamiemy zasady?
- Arrange
- Pisanie testów tak, by mogły być uruchomione przez pytest
-
Testy jednostkowe- Czym jest jednostka?
- Techniki zaślepiania
- Dummy
- Fake
- Stub
- Mock
- Dedykowane biblioteki dla określonych przypadków (np. responses, vcr.py, moto)
- Dummy
- Co i kiedy zaślepiać?
- Mock z biblioteki standardowej - jak go poprawnie wykorzystywać?
- Inne narzędzia do pisania obiektow - dublerów - mockito
- Czym jest jednostka?
-
Testy akceptacyjne - sprawdzające spełnienie wymagań biznesowych- Pisanie scenariuszy akceptacyjnych
- Wybór poziomu testowania akceptacyjnego - wady i zalety
- UI
- API
- Service layer
- UI
- Pisanie scenariuszy akceptacyjnych
-
Dobre praktyki testowania- Sprawdzanie obserwowalnych wyników działania
- Rodzaje obserwowalnych wyników
- Zwracany rezultat
- Rzucany wyjątek lub jego brak
- Stan
- Interakcje
- Zwracany rezultat
- Zastosowanie w różnych rodzajach testów
- testy jednostkowe
- testy akceptacyjne
- testy jednostkowe
- Rodzaje obserwowalnych wyników
- Testy implementacji kontra testy interfejsu
- Zapach testów - powielona implementacja w teście i testowanym kodzie
- Weryfikujemy zachowania wybranej jednostki
- Zapach testów - powielona implementacja w teście i testowanym kodzie
- Nazewnictwo testów
- Konwencje i dlaczego nie działają
- Używanie zdań oznajmujących
- Pozbywanie się szumu takiego jak “should”, “must”
- Nazywanie testu jako okazja do przemyślenia czy to dobry test
- Konwencje i dlaczego nie działają
- Sprawdzanie obserwowalnych wyników działania
-
Pokrycie kodu testami- Po co mierzyć pokrycie kodu testami?
- Rodzaje pokrycia kodu testami
- Line coverage
- Branch coverage
- Conditional coverage
- Line coverage
- pytest-cov i konfiguracja
- 100% pokrycia jako cel
- Jak dojść do 100% pokrycia testami i nie napracować się zbytnio?
- Jak dojść do 100% pokrycia testami i nie napracować się zbytnio?
- Techniki testowania wspomagające pokrycie
- Testy mutacyjne
- Property-based testing
- Testy mutacyjne
- Po co mierzyć pokrycie kodu testami?
-
Strategia testowania- Piramida testów według Mike Cohn’a
- Testy jednostkowe
- Testy serwisów
- Testy end-to-end
- Ocena wzorcowej piramidy
- Testy jednostkowe
- Budowanie własnej strategii
- Gdy testy wyższego poziomu wystarczają
- Gdy testy wyższego poziomu wystarczają
- Dobieranie strategii a architektura projektu
- Wygląd i możliwości pisania testów jest pochodną sposobu napisania kodu
- Typowy CRUD w Django
- czysta architektura / porty i adaptery
- Wygląd i możliwości pisania testów jest pochodną sposobu napisania kodu
- Piramida testów według Mike Cohn’a
-
Testowalny kod- Stosowanie luźnego powiązania
- Odwracanie zależności
- Wydzielanie stabilnych interfejsów
- Stosowanie luźnego powiązania
-
Testy akceptacyjne - rozwinięcie- Własny DSL
- Przykład z giełdą i order bookiem
- Przykład z giełdą i order bookiem
- BDD z behave lub pytest-bdd
- Taktyki zaślepiania w testach akceptacyjnych
- Znalezienie stabilnych punktów zaślepiania
- Znalezienie stabilnych punktów zaślepiania
- Własny DSL
-
Testy kontraktowe- Narzędzie do lepszej współpracy między zespołami budującymi rozproszony system
- Consumer-Driven Contract Testing
- Producer-Driven Contract Testing
- Przegląd narzędzi dostępnych w Pythonie
- Pact
- Pact
- Narzędzie do lepszej współpracy między zespołami budującymi rozproszony system
-
System fikstur w pytest- Przenoszenie części lub całości kroku arrange do fikstur
- Sprzątanie w fiksturze po teście dzięki instrukcji yield
- Zakresy fikstur
- Parametryzowane fikstury
- Przenoszenie części lub całości kroku arrange do fikstur
-
Taktyki przyspieszania testów- Metryki
- Czas od uruchomienia do przejścia pierwszego testu
- Czas od uruchomienia do zakończenia całego zestawu testów
- Czasy trwania poszczególnych testów
- Czas od uruchomienia do przejścia pierwszego testu
- Namierzanie wolnych testów
- Szybka powtórka z teorii ograniczeń
- Szukamy wąskich gardeł i je optymalizujemy
- Szybka powtórka z teorii ograniczeń
- Przyspieszanie wolnych testów
- Profilowanie
- Używanie stałych fikstur
- Profilowanie
- Szybkie i proste tweaki
- Metryki
-
Taktyki poprawiania niestabilnych testów- Fikstura kontrolna
- Naprawianie izolacji testów
- Transakcje
- Logiczna separacja
- Transakcje
- Testy niestabilne z definicji
- Odseparowanie od głównego zestawu przy pomocy markerów
- Wbudowujemy mechanizmy ponawiania w kod produkcyjny
- Ponawiamy przy pomocy pytest-rerun
- Odseparowanie od głównego zestawu przy pomocy markerów
- Fikstura kontrolna
Pobierz program w formacie PDF
Trenerzy
Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.