Zakres szkolenia
W trakcie szkolenie zostaną omówione narzędzia i techniki test-driven development w procesie tworzenia aplikacji w języku C#. Uczestnicy szkolenia zapoznają się z zasadami projektowania oprogramowania obiektowego pod kątem testów - SOLID OOP i techniką wstrzykiwania zależności - DI. Szczególny nacisk położony jest na praktyczne pisanie testów jednostkowych z wykorzystaniem obiektów pozorujących (stub i mock) i organizowanie testów w projekcie. W trakcie szkolenia dokonany zostanie również przegląd scenariuszy testów w aplikacjach .NET (wzorce MVP i MVC).
Plan szkolenia
Wprowadzenie do metodologii Test-Driven Development
- Podstawowe zasady i praktyki TDD
- Stosowanie cyklu TDD Red-Green-Refactor
- Zalety i wady TDD
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
-
Dependency Injection
- Praca z frameworkami DI – Ninject, SimpleInjector
-
Refaktoring
- Ekstrakcja klas lub interfejsów
- Zmiana nazw zmiennych, pól, metod i klas
- Enkapsulacja pól
- Zastępowanie instrukcji warunkowych polimorfizmem
- Opóźnianie typowania – słowo kluczowe var
Testy jednostkowe
- Definicja testu jednostkowego
- Organizacja testów i kolejność testowania
-
Przegląd framework’ów testów jednostkowych
-
Wzorce testów jednostkowych
- Four-Phase Test
- State Verification
- Guard Assertion
- Delta Assertion
- Custom Assertion
- Behavior Verification
Izolacja testów
- Obiekty naśladujące Fake, Dummy, Stub i Mock
- Użycie obiektów Stub - weryfikacja stanu obiektów
- Behaviour-Based Testing – obiekty Mock
- Biblioteka Moq – dynamiczne tworzenie obiektów naśladujących
Testy integracyjne
- Pisanie i uruchamianie testów integracyjnych
- Testy integracyjne End-to-End
BDD - Behaviour-Driven Design
- BDD jako "TDD done right"
- Testy akceptacyjne dla User Stories - framework SpecFlow
- Testy jednostkowe w BDD - framework Machine.Specification
Scenariusze testów w .NET Framework - Case Studies
- TDD i WebForms – wzorzec MVP
- TDD i ASP.NET MVC
Pokrycie kodu testami
- Przegląd narzędzi do Code-Coverage
3 dni po 8 godzin lekcyjnych