1.1. Agenda
Working hours 9:00 - 17:00
Lunch break 13:15 - 14:00
10 min break every 1.5 hour
1.1.1. Day 1
10 min - Intro: welcome message, course introduction, agenda, spreadsheet
60 min - Setup: IDE, Git, repository, Python, doctest
30 min - Placement test: evaluating participant skills
60 min - Placement test: live coding solution, IDE demonstration, ie. debugging, working with VCS, refactoring, quick documentation, type annotations, function signatures
1.1.2. Day 2
1.1.3. Day 3
1.1.4. Day 4
1.1.5. Day 5
20 min - Dragon: introduction to Dragon project and sprints
30 min - Dragon v1: programming
15 min - Dragon v1: code review
30 min - Dragon v1: solution, live coding, TDD, debugging
30 min - Dragon v2: programming
15 min - Dragon v2: code review
30 min - Dragon v2: solution, live coding, TDD, refactoring
30 min - Dragon v3: programming
15 min - Dragon v3: code review
30 min - Dragon v3: solution, live coding, TDD, refactoring
30 min - Dragon v4: programming
15 min - Dragon v4: code review
30 min - Dragon v4: solution, live coding, TDD, refactoring
30 min - Dragon v5: programming
15 min - Dragon v5: code review
30 min - Dragon v5: solution, live coding, TDD, refactoring
25 min - Dragon: closing remarks
1.2. About
Working hours 9:00 - 17:00
Lunch break 13:15 - 14:00
10 min break every 1.5 hour
1.3. Installation requirements
Python 3.11 lub 3.12 (preferowana)
PyCharm Community Edition lub PRO w wersji 2023.1 lub 2023.2 (preferowana)
Git w wersji 2.39 lub nowszej
Aktywne konto na Github (proszę znać username)
Instrukcja instalacji: https://python3.info/install.html
Możliwość instalacji modułów używając pip
1.4. Goals
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
1.5. Advantages
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
Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
1.6. Addressed to
Programistów i testerów
Osób odpowiedzialnych jakość wytwarzanego oprogramowania
1.7. Prerequisites
Umiejętność wytwarzania oprogramowania w języku Python
Znajomość obiektowego paradygmatu wytwarzania oprogrogramowania
Umiejętność biegłego posługiwania się komputerem
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
1.8. Agenda
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 (kilka iteracji)
Demonstracja TDD oraz opcji refaktoringu w środowisku IDE (PyCharm)
Testy aplikacji asynchronicznych
Automatyzacja testów:
Ekosystem narzędzi deweloperskich
Continuous Integration
Continuous Delivery
Continuous Deployment
Definiowanie Pipeline CI/CD
Automatyzacja testów na środowisku testowym
Zarządzanie zależnościami aplikacji
Refaktoryzacja:
Rename
Extract Method
Extract Superclass
Inline
Introduce Variable
Introduce Constant
Introduce Field
Introduce Parameter
Pull Members Up
Push Members Down
1.9. Certificate
Szkolenie obejmowało 24 godziny wykładów oraz warsztatów. Zagadnienia poruszone na szkoleniu:
tworzenie aplikacji w języku Python,
użycie biblioteki standardowej i instalacja zewnętrznych,
tworzenie testów do pisanych funkcji,
TDD z wykorzystaniem unittest i doctest,
korzystanie z funkcji refaktoringu w środowisku IDE,
wykorzystanie Python w testowaniu,
wykorzystanie narzędzi DevOps do procesu CI/CD,
dobre praktyki i standardy kodowania.