Zakres szkolenia
Na szkoleniu omawiane są techniki Test Driven Development w języku Python. Uczestnicy szkolenia zapoznają się z zasadami projektowania oprogramowania obiektowego pod kątem testów - SOLID OOP, wstrzykiwanie zależności, refaktoring. Szczególny nacisk położony jest na praktyczne pisanie testów jednostkowych z wykorzystaniem obiektów pozorujących (stub i mock) i organizowanie ich w projekcie TDD. W trakcie szkolenia dokonany zostanie przegląd dostępnych frameworków do testów jednostkowych w Pythonie oraz narzędzi do Code-Coverage.
Plan szkolenia
Wprowadzenie do metodologii Test-Driven Development
- Podstawowe zasady i praktyki TDD
- Stosowanie cyklu TDD Red-Green-Refactor
- Inside-Out vs. Outside-In Development
- Zalety i wady TDD
Projektowanie obiektowe pod kątem testów
-
SOLID OOP
- Zasada pojedynczej odpowiedzialności - Single-Responsibility Principle
- Zasada otwarte-zamknięte - Open/Close Principle
- Zasada podstawiania Liskov - Liskov Substitution Principle
- Zasada segregacji interfejsów - Interface Segregation Principle
- Zasada odwracania zależności - Dependency Inversion Principle
Techniki refaktoryzacji kodu
- Usuwanie duplikacji kodu
- Ekstrakcja metody lub funkcji
- Ekstrakcja klasy
- Zastępowanie instrukcji warunkowych polimorfizmem
- Refaktoring do wzorców projektowych
Testy jednostkowe
- Atrybuty testów jednostkowych - F.I.R.S.T.
- Organizacja testów i kolejność testowania
-
Przegląd frameworków testów jednostkowych
- moduł unittest
- moduł doctest
- moduł nose2
- moduł pytest
Wzorce testów jednostkowych
- Four-Phase Test
- State Verification
- Guard Assertion
- Delta Assertion
- Custom Assertion
- Behavior Verification
Izolacja testów
- Obiekty pozorujące - Fake, Dummy, Stub i Mock
- Weryfikacja stanu obiektów - użycie obiektów Stub
- Weryfikacja zachowania - Behaviour-Based Testing - obiekty Mock
-
Biblioteka unittest.Mock
- Asercje zachowań mock'ów
- mocking i patching w Pythonie
Testy integracyjne
- Pisanie i uruchamianie testów integracyjnych
- Testy integracyjne End-to-End
BDD - Behaviour-Driven Design
- BDD jako "TDD done right"
- Testy akceptacyjne dla User Stories - framework Behave!
-
Testy jednostkowe w BDD
- moduł nose2.Such - styl wykonywalnej specyfikacji
Pokrycie kodu testami
- Przegląd narzędzi do Code-Coverage
Znajomość tematów ze szkoleń:
3 dni po 8 godzin lekcyjnych