Python TDD: Test Driven Development and CI/CD
Czas trwania szkolenia:3 dni (24h)
Kod kursu:PYTHON/TDD
Poziom zaawansowania:
O szkoleniu Python TDD: Test Driven Development and CI/CD
W cenie otrzymasz:
- Materiały szkoleniowe
- Certyfikat ukończenia szkolenia
- W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Dla kogo?
- Programistów i testerów
- Osób odpowiedzialnych jakość wytwarzanego oprogramowania
Wymagania
- Umiejętność wytwarzania oprogramowania w języku Python
- Znajomość obiektowego paradygmatu wytwarzania oprogrogramowania
- Umiejętność korzystania z konsoli systemu operacyjnego
- Znajomość podstawowych koncepcji związanych z infrastrukturą
- Wiedza o procesach obejmujących wytwarzanie oprogramowania
- Uczestnictwo w co najmniej jednym projekcie związanym z wytwarzaniem oprogramowania
Zalety
- Uczestnik zapozna się z procesem TDD i będzie potrafił wytwarzać oprogramowanie stosując tą technikę
- Omówione zostanie wykorzystanie mocków i stubów, a także problem precyzji IEEE-754 oraz testowania wartości pseudolosowych
- Zapoznanie się ze wszystkimi elementami składowymi procesów związanych z wydaniami ciągłymi oprogramowania
Cele szkolenia
- Nauka wytwarzania oprogramowania w procesie TDD
- Umiejętność wykorzystania narzędzi i frameworków wspierających TDD tj. mock oraz stub
- Określenie dobrych i złych praktyk, związanych z procesem ciągłej integracji
- Praktyczne budowanie planu testów i komunikacji w ramach CI Ponadto uczestnictwo w szkoleniu Python z zakresu Test-Driven Development (TDD) obejmuje zarówno rozwój umiejętności programistycznych, jak i doskonalenie praktyk związanych z tworzeniem oprogramowania, tj:
- Zrozumienie metodologii TDD: Zdobycie pełnego zrozumienia idei Test-Driven Development, czyli pisanie testów jednostkowych przed napisaniem właściwej implementacji.
- Nauka praktycznych umiejętności związanych z TDD w pythonie: Opanowanie praktycznych umiejętności korzystania z narzędzi i frameworków do testowania jednostkowego w języku Python, takich jak unittest, pytest czy nose.
- Rozwój umiejętności testowania jednostkowego: Doskonalenie umiejętności tworzenia skutecznych testów jednostkowych, które są łatwe w utrzymaniu i dostarczają wartościowe informacje zwrotne.
- Zastosowanie testów jako dokumentacji kodu: Nauczenie się korzystania z testów jako formy dokumentacji kodu, umożliwiającej zrozumienie funkcji i wymagań.
- Zwiększenie jakości oprogramowania: Celowym użyciem TDD można poprawić jakość oprogramowania poprzez wcześniejsze wykrywanie i rozwiązywanie błędów.
- Zrozumienie korzyści długoterminowych: Zrozumienie korzyści, jakie TDD może przynieść w dłuższej perspektywie, takie jak zwiększona łatwość utrzymania kodu, szybsze wprowadzanie zmian, czy też zwiększona pewność co do działania kodu.
- Integracja testów w proces tworzenia oprogramowania: Nauczenie się, jak efektywnie integrować testy jednostkowe w procesie tworzenia oprogramowania, zarówno na etapie deweloperskim, jak i w procesie CI/CD.
- Zdobycie doświadczenia w refaktoryzacji: Wykorzystanie TDD do prowadzenia refaktoryzacji kodu z zachowaniem pełnej funkcjonalności, co pozwala na poprawę struktury kodu bez obawy o wprowadzenie błędów.
- Efektywne używanie narzędzi do testowania w pythonie: Zdobycie praktycznych umiejętności korzystania z narzędzi automatyzujących proces testowania w języku Python.
- Skupienie na tworzeniu wartościowych rozwiązań: Zrozumienie, jak TDD może pomóc w skupieniu się na tworzeniu rozwiązań, które rzeczywiście dostarczają wartość dla użytkowników. Uczestnictwo w szkoleniu TDD w Pythonie może pomóc w osiągnięciu tych celów, co przyczynia się do profesjonalnego rozwoju w dziedzinie tworzenia oprogramowania.
Program
Rodzaje testów na przykładach
- Jednostkowe
- Dymne
- Analiza statyczna
- Mutacyjne
- Regresyjne
- Funkcjonalne
- Interfejsu
- Obciążeniowe
- Integracyjne
- Bezpieczeństwa
Test Driven Development
- Test first vs test last development
- Mock vs Stub
- Problem precyzji liczb float (IEEE-754)
- Testowanie wartości pseudolosowych oraz pojęcie ziarna losowości
- Framework unittest vs doctest
- Uruchamianie testów w środowisku IDE (PyCharm) oraz z konsoli
- Demonstracja TDD
Samodzielny projekt TDD (kilkanaście iteracji)
- Demonstracja TDD
- Techniki Code review i zespołowej oceny kodu
- Opcje refaktoringu w środowisku IDE (PyCharm)
- Testy aplikacji asynchronicznych
Refaktoryzacja
- Rename
- Extract Method
- Extract Superclass
- Inline
- Introduce Variable
- Introduce Constant
- Introduce Field
- Introduce Parameter
- Pull Members Up
- Push Members Down