Tworzenie i testowanie aplikacji z użyciem Test-Driven Development (C++)
Opis
TDD, czyli Test-Driven Development to najpopularniejsze obecnie podejście do pisania kodu. Jego największym wyróżnikiem jest pisanie testów do sprawdzania funkcjonalności przed ich powstaniem. Przyjęcie takiego cyklu programowania ułatwia testowanie aplikacji i pozwala stworzyć czystą strukturę kodu (Clean Code). Nie bez powodu jest to technika stosowana przez programistów pracujących dla największych graczy na rynku IT (m.in. Apple, Microsoft czy Google). Szkolenie Test-Driven Development pozwala na zdobycie praktycznych umiejętności z zakresu wykorzystania techniki i ich natychmiastową implementację w codziennej pracy.
Tworząc szkolenie TDD, postawiliśmy na kompleksowe przedstawienie informacji potrzebnych do zastosowania tej cenionej metody tworzenia kodu. Jego program powstał na podstawie praktycznych doświadczeń i szerokiej wiedzy. Zdobyte umiejętności można wykorzystać w środowisku C++, choć możliwe jest też przystosowanie programu kursu do potrzeb programistów Java, C# lub innych języków programowania. Szkolenie Test-Driven Development prowadzone jest głównie w formie warsztatowej, co ułatwia szybkie przyswajanie przedstawionych metod. Może być zorganizowane również w formie zamkniętej – zapraszamy do kontaktu.
Dla kogo
Programiści Java, C#, C++ lub innego języka programowania (według potrzeb)
Wymagane umiejętności
- Uczestnik zna programowanie obiektowe na poziomie szkolenia POB
Podstawowy program
Moduł. 1
Wprowadzenie do TDD
Moduł. 2
CPPUNIT jako narzędzie testowania
Moduł. 3
Wzorce testowania xUnit
Moduł. 5
Refaktoring w kontekście TDD
Moduł. 7
gmock jako narzędzie do tworzenia mocków
Moduł. 8
Testowanie end-to-end
Moduł. 9
Behaviour-Driven Development
Moduł. 10
Testowanie z udziałem komponentów zewnętrznych
Moduł. 11
Warsztat praktyczny
Szczegółowy program
Moduł. 1
Wprowadzenie do TDD
- Cykl programowania
- Cykl TDD red-green-refactor
- Programowanie przyrostowe
- Zasady tworzenia testów jednostkowych
- Przykład pracy z użyciem TDD
Moduł. 2
CPPUNIT jako narzędzie testowania
- Tworzenie testów jednostkowych z użyciem CPPUNIT
- Wybrane atrybuty konfiguracji CPPUNIT
- CPPUNIT_TEST_SUITE
- CPPUNIT_TEST
- Metoda setUp()
- Metoda tearDown()
- CPPUNIT_TEST_EXCEPTION
- CPPUNIT_TEST_FAIL
- Wybrane asercje CPPUNIT
- CPPUNIT_ASSERT
- Testowanie pozytywne
- Testowanie negatywne
- Testowanie wyjątków
- Wzorce TDD
- Co testować
- Testowanie stanu
- Testowanie zachowania
Moduł. 3
Wzorce testowania xUnit
- Asercja stanu końcowego
- Asercja pomocnicza
- Asercja delta
- Asercja własna
- Asercja interakcji
- Metoda fabryki
- Klasy pomocnicze
- Matka obiektów
- Testy parametryzowane
- Autopodstawianie
- Uprzywilejowany dostęp
- Dodatkowy konstruktor
- Podklasa na potrzeby testu
Moduł. 4
Praktyki TDD
- Strategie testowania
- Ogół - szczegół
- Znane - nieznane
- Ścieżka pozytywna – negatywna
- Strategie implementacji
- Faking it
- Traingulation
- Obvious implementation
- Pojęcia TDD
- Fixture
- Test doubles (Stubs/Fakes/Mocks)
- Testowanie stanu i interakcji
Moduł. 5
Refaktoring w kontekście TDD
- Refaktoryzacje przydatne w TDD
- Elementy refaktoryzacji do wzorców projektowych
- Paradygmaty testowalnego kodu
- Refaktoryzacja testów jednostkowych
- Usuwanie redundancji w testach
Moduł. 6
Testowalny kod
- Kompozycja i dziedziczenie a TDD
- Elementy statyczne i singletony
- Izolowanie i wstrzykiwanie zależności
- Architektura warstwowa
Moduł. 7
gmock jako narzędzie do tworzenia mocków
- Cykl życia mocka w gmock
- Testowanie zachowania
- Stubbing
- Weryfikacja ilości wywołań
Moduł. 8
Testowanie end-to-end
- Testowanie akceptacyjne
- Testowanie end-to-end
- Jakość zewnętrzna i wewnętrzna
- Dobre praktyki testowania end-to-end
Moduł. 9
Behaviour-Driven Development
- Wprowadzenie do BDD
- Testowanie zachowania
- BDD a User Stories
- Specyfikacja poprzez przykłady
Moduł. 10
Testowanie z udziałem komponentów zewnętrznych
- Strategie testowania z udziałem komponentów zewnętrznych
- Warstwa adapterów
Moduł. 11
Warsztat praktyczny
- Inkrementacyjny rozwój przykładowego systemu z użyciem TDD