Całościowe podejście do testowania automatycznego dla programistów Java/C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Kod: NET-craft-auto
Kategoria: Craftsmanship dla programistów .NET
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3
Grupa docelowa: developerzy

Podczas szkolenia uczestnicy poznają techniki programowania i testowania ułatwiające codzienną pracę z kodem.

Podczas warsztatów praktycznych uczestnicy posiądą umiejętność pisania i utrzymywania testów oraz pracy techniką Test-Driven Development.

Program szkolenia integruje popularne narzędzia (do wyboru w zależności od języka) w celu wsparcia procesu polegającego na tworzeniu wykonywalnych specyfikacji.

Przez wykonywalne specyfikacje rozumiemy dosłownie tekst Scenariusza Akceptacyjnego (wchodzącego w skład User Story), który można uruchomić aby upewnić się czy jest aktualnie spełniany.

Uruchomienie scenariusza może nastąpić na dowolnym poziomie architektury systemu: poprzez GUI lub warstwę API.

Materiały wstępne

Przed szkoleniem możesz zapoznać się z serią naszych artykułów: Testowanie automatyczne.

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Zagadnienia architektury aplikacji wspierającej testowalność kodu
  • Najlepsze wzorce i praktyki
  • Aspekty Behavior Driven Development i Spec by Example

Program Szkolenia

Pobierz program w formacie PDF
  1. Podstawy testowania
    1. Strategia racjonalnego testowania: CO x PO CO x JAK
      1. Zakres testów
          Jednostkowe Integracyjne End 2 End
      2. Rola testów
          Akceptacyjne Regresyjne
      3. Skupienie testów
          Testy funkcjonalne Testy bezpieczeństwa Testy wydajności
    2. Wybór strategii testowania w projekcie
    3. Strategia budowania piramidy testów
  2. Projektowanie przypadków testowych
    1. Podejście do dokumentowania testów
      1. User Story i Scenariusze akceptacyjne
      2. Wykonywalne specyfikacje - techniki Behavior Driven Development
    2. Testowanie przypadków granicznych
      1. Nacisk na testy jednostkowe w celu osiągnięcia wysokiego pokrycia testami
      2. Architektura wspierająca wysokie pokrycie testami
      3. Modelowanie logiki przy pomocy Building Blocks z Domain Driven Design
    3. Powtarzalność testów, wyeliminowanie losowości z testów
    4. Najlepsze praktyki tworzenia przypadków testowych
  3. Architektura aplikacji otwartej na testowanie
    1. Rozwarstwienie logiki na aplikacyjną i domenową
    2. Piramida testów - jak ją interpretować w kontekście warstw
      1. Logika aplikacji - testy End 2 End
      2. Logika domenowa - testy jednostkowe
    3. Kiedy warto stosować zaślepki (Mock) a kiedy jest to zbędny koszt
  4. Najlepsze techniki testowania - ogólne projektowanie testów, które można utrzymywać w przyszłości
    1. Wprowadzenie
      1. Czego nie testować
      2. Struktury przypadków testowych
    2. Organizacja kodu testowego
      1. Klasa testowa per klasa produkcyjna
      2. Klasa testowa per funkcjonalność
      3. Klasa testowa per setup
      4. Testy parametryzowane
    3. Przygotowanie stanu (test fixture setup)
      1. Testy wykorzystujące źródło danych (data-driven testing)
      2. Użycie wzorca Asemblera (odmiana Builder Design Pattern)
      3. Wzorce i szablony
          Object Mother Assembler (aka Builder) - sensowne i mniej sensowne podejścia
    4. Weryfikacja
      1. Value Object, weryfikacja przez equals
      2. Własne asercje
      3. Weryfikacja przy użyciu specyfikacji (Matcher object)
      4. Upraszczanie asercji z użyciem Assert Object
      5. Poprawna weryfikacja przypadków negatywnych
      6. Wzorce i szablony
          Assert Object
    5. Uprzątniecie po teście (fixture teardown)
      1. Kiedy warto stosować
      2. Manualne
      3. Automatyczne
      4. Wzorce i szablony
    6. Antywzorce testowania (ponad 20 typowych błędów i pułapek)
    7. Wykrywanie "Zapachów" złego kodu testowego
      1. Delikatne testy (fragile)
      2. Nieczytelne testy
      3. Wolne testy
      4. Testy niedeterministyczne
    8. Techniki organizacji kodu testowego - standardy, wzorce i najlepsze praktyki
      1. Wsparcie refaktoryzacji ze strony IDE
      2. Techniki refaktoryzacji kodu testowego
      3. Efektywne sposoby utrzymania dużej liczby testów
  5. Testowanie jednostkowe
    1. Szablony testów w xUnit
    2. Tworzenie własnych asercji
    3. Techniki: Mock, Stub, Fake
      1. Dobór technik do potrzeb - czym się kierować
    4. Mockowanie
      1. Zalety testowania w izolacji
      2. Nagrywanie zachowania
      3. Weryfikacja wywołań
      4. Antywzorce testów wykorzystujące mockowanie
    5. Co sprawia że czas poświęcony na napisanie testu zwróci się
    6. Testability - podatność kodu na testy
      1. Jak pisać kod, który daje się testować
      2. Najlepsze praktyki: SOLID, GRASP
      3. Wybrane wzorce projektowe, które zwiększają testability: Factory, Strategy, Value Object
      4. Pułapki i typowe błędy
      5. Code smell - "zapachy" nietestowalnego kodu
  6. Test Driven Development
    1. Cykl czerwony-zielony-refaktoring
    2. Wady i zalety TDD
    3. Kiedy warto, dla kogo jest TDD
    4. Ewolucyjny sposób rozwój kodu
    5. Podstawowe techniki refactoringu
  7. Testowanie akceptacyjne
    1. Technika User Story
    2. Tworzenie testów akceptacyjnych na podstawie User Story
    3. Zyski i koszty różnych technik testowania akceptacyjnego
    4. Efektywne narzędzia wspierające:
      1. Testowanie poprzez warstwę GUI
      2. Testowanie poprzez warstwę serwisów
      3. Przygotowywanie stanu początkowego
    5. Podejścia
      1. Testowanie przez GUI
          Selenium
      2. Testowanie przez warstwę serwisów (API systemu)
          Zdalne wywołanie obiektów (Spring Remoting/Remote EJB/Seam - do wyboru)
      3. Unifikacja podejść dzięki Agentom BDD
  8. Wstęp do Behaviour Driven Development
    1. Zalety bliskiej współpracy z klientem
      1. Rola dostawcy, rola klienta w testach akcpetacyjneych
    2. Tworzenie aplikacji podejściem BDD
    3. Podejście dwuwarstwowe
      1. Warstwa Flow - User Story
      2. Warstwa Automatyzacji interakcji z systemem
    4. Narzędzia i wzorce
      1. JBehave/Spock/SpecFlow - najlepsze praktyki
          Integracja z Selenieum
      2. Page Object - modelowanie użytkownika
    5. Technika ujednolicania testów wykonywanych poprzez GUI i Servisy - Agenty
  9. Wstęp do Specification by Example
    1. Wzorce i techniki tworzenie wykonywalnych specyfikacji
    2. Podejście trójwarstwowe
      1. Warstwa Specyfikacji - cele biznesowe
      2. Warstwa Flow - User Story
      3. Warstwa Automatyzacji interakcji z systemem
    3. Narzędzia automatyzacji
  10. Kompleksowy proces - podsumowanie szkolenia
    1. Strategiczny design - Domain Driven Design
    2. Korzystanie z user story, BDD i TDD w codziennej pracy
    3. Automatyzacja - korzystanie z serwera Continous Integration
    4. Narzędzia (do wyboru)
      1. Java: JUnit/TestNG, JBehave/Spock, Selenium
      2. .NET: nUnit, NDbUnit, nBehave, nSubstitute, nCover, Selenium
      3. PHP: Behat, phpunit, mockery, prophecy
    5. Wykorzystanie najlepszych praktyk, wskazanie typowych błędów i pułapek
    6. Przykładowy projekt

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń