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

  1. Rodzaje testów na przykładach:

    • Jednostkowe

    • Dymne

    • Analiza statyczna

    • Mutacyjne

    • Regresyjne

    • Funkcjonalne

    • Interfejsu

    • Obciążeniowe

    • Integracyjne

    • Bezpieczeństwa

  2. 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

  3. 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

  4. 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.