Powrót do katalogu

Podaj maila aby obejrzeć webinar z Node.js

Wyrażam zgodę na otrzymywanie informacji o promocjach i produktach oferowanych Czytaj więcej przez Vavatech Sp z o.o. Zgodę możesz cofnąć w każdym czasie.
Termin sugerowany
2018-09-18
Warszawa

Zapisz się jako pierwszy!

2 100 / 3 dni
Zgłoś chęć udziału
Termin sugerowany
2018-10-10
Warszawa

Zapisz się jako pierwszy!

2 100 / 3 dni
Zgłoś chęć udziału
Zaproponuj własny termin
Postaramy się uruchomić nowy termin dla Ciebie
Zgłoś chęć udziału

Inżynieria oprogramowania > Warsztat programisty

Szkolenie: Test Driven Development

Kod: [J-TDD]
Pobierz program

Wprowadzenie

Nie ma wątpliwości, że testowanie jest nieodłączną częścią procesu tworzenia oprogramowania. Jest to najbardziej popularna i najefektywniejsza w praktyce metoda wersyfikacji poprawności oprogramowania (choć zawsze należy pamiętać, że testowanie nie zapewnia 100% poprawności). Jednak tradycyjne „kaskadowe” podejście do tworzenia oprogramowania, w którym faza testów następuje po zakończeniu fazy implementacji, okazuje się nieefektywne i jest powszechnie krytykowane. Współczesne „iteracyjne” metodologie wytwarzania oprogramowania zalecają wykonywanie testów wraz z tworzeniem implementacji i przyrostowe budowanie poprawnego oprogramowania.

Idea programowania w oparciu o testy (Test-Driven Development) idzie jeszcze dalej i postuluje tworzenie w wielu mikro-iteracjach najpierw testu, a następnie implementacji realizującej ten test. Aby zapobiegać tworzeniu sztucznych rozwiązań spełniających tylko wybrany test, powstały kod należy jeszcze za każdym razem refaktoryzować.

Idea TDD jest wykorzystywana w metodyce tworzenia oprogramowania Extreme Programmingi innych metodykach z rodziny „zwinnych” ( agile). Stosowanie TDD wpływa na sposób pracy w projekcie, a także na kształt wynikowego oprogramowania. O tym, czy ostatecznie wpływ ten jest pozytywny, trwają zażarte dyskusje. Idea TDD i metodologie „zwinne” uzyskały mimo wszystko dużą popularność w latach 2000-nych i wciąż są bardzo popularne w przemyśle, dlatego na pewno warto je poznać i wypróbować w praktyce.

Aby efektywnie pracować zgodnie z TDD, potrzebne są odpowiednie narzędzia. Wymagana jest przede wszystkim biblioteka do testowania jednostkowego ( unit testing), ale przydatne mogą być także narzędzia do łatwego tworzenia obiektów zastępczych ( stub lub mock) i biblioteki do testowania jednostkowego w specyficznych zastosowaniach (np. bazy danych, interfejs użytkownika).

Cel szkolenia

Szkolenie koncentruje się przede wszystkim na praktycznym stosowaniu idei Test-Driven Development w Javie. Uczestnicy poznają szczegółowo bibliotekę JUnit, a dodatkowo także biblioteki Mockito, DBUnit, JFCUnit i HTTPUnit. Na szkoleniu przedstawione są także ogólne, niezależne od języka programowania, idee TDD i metodyk „zwinnego” tworzenia oprogramowania.

Podczas szkolenia, zgodnie z ideą TDD i jej różnymi wariantami, od podstaw tworzona jest przykładowa aplikacja. Wykorzystywana jest Java SE, baza danych (domyślnie SQLite), wspomniane narzędzia i biblioteki oraz środowisko programistyczne Eclipse.

Po zakończeniu szkolenia aktywny uczestnik:

  • zna ideę tworzenia oprogramowania w oparciu o testy,
  • potrafi tworzyć oprogramowanie w Javie w oparciu o testy,
  • potrafi używać testu jako narzędzia do projektowania aplikacji,
  • potrafi refaktoryzować kod aplikacji i kod testowy,
  • potrafi korzystać z biblioteki JUnit,
  • potrafi rozszerzać funkcjonalność dostępną w JUnit poprzez własne reguły, wzorce i zaawansowane sposoby uruchamiania testów,
  • potrafi tworzyć testy zachowania, korzystając z obiektów zastępczych (stub i mock) tworzonych ze wsparciem biblioteki Mockito,
  • potrafi pisać testy warstwy dostępu do bazy danych z wykorzystaniem biblioteki DBUnit,
  • potrafi pisać testy GUI (swing) z wykorzystaniem biblioteki JFCUnit,
  • potrafi pisać testy serwera HTTP (np. interfejsu WWW) z wykorzystaniem biblioteki HTTPUnit.

Adresaci szkolenia

Szkolenie przeznaczone jest dla programistów Javy, którzy chcą podnieść komfort i jakość swojej pracy poprzez tworzenie testów dających informację zwrotną programiście, ułatwiających projektowanie klas i wspierających dobre praktyki programowania obiektowego. Wymagana jest praktyczna znajomość języka Java.

Czas i forma szkolenia

21 godzin (3 dni x 7 godzin), w tym wykłady i warsztaty praktyczne.

Plan szkolenia

  1. Szybki start
    1. podstawowe idee TDD,
    2. JUnit – tworzenie i uruchamianie prostych testów.
  2. JUnit 4
    1. klasa Assert i asercje,
    2. klasa Assume i warunki wstępne,
    3. inicjalizacja i porządki, pojęcie fixture,
    4. obsługa wyjątków i timeoutów,
    5. reguły (Rule) i wzorce (Matcher): przegląd wbudowanych, tworzenie własnych,
    6. grupowanie testów w zestawy,
    7. różne sposoby uruchamiania testów, m.in. Runner, Request,
    8. porównanie z JUnit 3.
  3. Idee TDD
    1. proces budowy oprogramowania – różne metodyki,
    2. „zwinne” (agile) tworzenie oprogramowania,
    3. zasady pracy w w TDD, mikroiteracja,
    4. wpływ TDD na architekturę systemu i estetykę kodu,
    5. praktyczne odstępstwa od ortodoksyjnego TDD.
  4. Wzorce i dobre praktyki TDD, refaktoryzacja.
  5. Testowanie stanu a testowanie zachowania
    1. klasyczne podejście do testowania w oparciu o stan,
    2. idea programowania opartego o zachowanie (Behaviour-Driven Development),
    3. testowanie zachowania za pomocą obiektów zastępczych (stub i mock),
    4. biblioteka Mockito.
  6. Organizacja, utrzymanie i refaktoryzacja kodu testowego.
  7. Szczególne przypadki w testowaniu i TDD oraz związane z nimi narzędzia dla Javy:
    1. testowanie bazy danych – SQLUnit,
    2. testowanie warstwy dostępu do bazy danych – DBUnit,
    3. testowanie interfejsu użytkownika (GUI) – JFCUnit,
    4. testowanie przez sieć (tu HTTP) – HTTPUnit.

Opinie uczestników

  • Ciekawe połączenie teorii TDD z praktycznym zastosowaniem w trakcie szkolenia. Prowadzący posiada dużą wiedzę w temacie. Szkolenie ciekawe i polecam je osobom które chciały by poznać inną metodologię tworzenia oprogramowania. Dziękuję

    Inżynier oprogramowania - Genesys Telecommunications Laboratories Sp. z o. o.

  • Szkolenie ocenia bardzo dobrze. Prowadzący przekazał posiadaną wiedzę w sposób profesjonalny i przejrzysty. Pozyskana wiedza napewno umożliwi bardziej wydajną pracę oraz testy aplikacji.

    Inżynier oprogramowania - Genesys Telecommunications Laboratories Sp. z o. o.

  • Bardzo dobra jakość warsztatów i wykładów. Doskonałe przygotowanie trenera, elastyczne podejście do uczestników. Dzięki przeważającej części praktycznej uczestnicy mogli lepiej przyswoić wiedzę.

    Programista Java - Allegro sp. z o.o.