Test-Driven Development w języku C++

Zakres szkolenia

Na szkoleniu omawiane są techniki Test Driven Development w języku C++. Uczestnicy szkolenia zapoznają się z zasadami projektowania oprogramowania obiektowego pod kątem testów - SOLID OOP, Dependency Injection, itp. Szczególny nacisk położony jest na praktyczną naukę pisania testów jednostkowych z wykorzystaniem obiektów pozorujących (stub i mock) i organizowanie ich w projekcie rozwijanym w metodologii TDD.


Plan szkolenia

Wprowadzenie do Test-Driven Development

  • Podstawowe zasady i praktyki TDD
  • Stosowanie cyklu TDD Red-Green-Refactor
  • Zalety i wady TDD
  • TDD Kata i Dojo

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

Testy jednostkowe

  • Definicja testu jednostkowego
  • Atrybuty testów jednostkowych - FIRST
  • Organizacja testów i kolejność testowania
  • Przegląd framework’ów testów jednostkowych
    • Google Test
    • Catch
  • 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
  • Użycie obiektów Stub - weryfikacja stanu obiektów w testach
  • Behaviour-Based Testing – obiekty Mock
  • Biblioteki mockujące w C++
    • Google Mock
    • Trompeloeil

Dependency Injection w TDD

  • Stosowanie Dependency Injection w TDD
  • Praca z biblioteką Boost.DI

Refaktoring

  • Ekstrakcja klas lub interfejsów
  • Zmiana nazw zmiennych, pól, metod i klas
  • Enkapsulacja pól
  • Zastępowanie instrukcji warunkowych polimorfizmem
  • Refaktoring do wzroców projektowych
  • Refaktoring kodu legacy

Testy integracyjne i Code-Coverage

  • Testy integracyjne
  • Testy End-to-End
  • Narzędzia do Code-Coverage

Szkolenie przeznaczone dla programistów C++. Wymagana znajomość podstaw C++.

3 dni po 8 godzin lekcyjnych