TDD – w poszukiwaniu źródeł jakości.
-
Upload
future-processing -
Category
Technology
-
view
267 -
download
1
description
Transcript of TDD – w poszukiwaniu źródeł jakości.
Test Driven Developmentw poszukiwaniu źródeł jakości
Szymon Homa
Co to znaczy, że oprogramowanie jest wysokiej jakości?
Oprogramowanie jest bez błędów.
Oprogramowanie spełnia wymagania klienta.
Oprogramowanie działa szybko.
Błędy są rzadkie i łatwe w lokalizacji.
Oprogramowanie daje się łatwo dostosować do wymagań klienta.
Oprogramowanie da się skalować, a „wąskie gardła wydajności” są łatwe w lokalizacji.
A może…
TDD - Test Driven Development
„Nie można zacząć pisać kodu produkcyjnego do momentu napisania niespełnionego testu jednostkowego.”
„Nie można napisać więcej testów jednostkowych, które są wystarczające do niespełnienia testu, a brak kompilacji jest jednocześnie nieudanym testem.”
„Nie można pisać większej ilości kodu produkcyjnego, niż wystarczy do spełnienia obecnie niespełnianego testu.”
Robert C. Martin, „Czysty Kod, Podręcznik Dobrego Programisty”, Helion S.A. 2010
TDD - Test Driven Development
Implementacja
Test
TDD - Test Driven Development
Implementacja
Test
Implementacja
Test
Implementacja
Test
Implementacja
Test
Implementacja
Test
Każda linijka kodu ma swoje uzasadnienie w teście
Klasy mają małą odpowiedzialność
Klasy są częściej zależne od abstrakcji niż od konkretów
Klasy są mniejsze i bardziej spójne
Klasy są łatwe w użyciu
Kod klasy jest możliwie prosty
Implementację klasy można bezpiecznie modyfikować
SOLID
Refaktoryzację
KISS (Keep It Simple and Stupid)
YAGNI (You Aren’t Gona Need It)
Czysty Kod
Czym tak naprawdę jest TDD?
1. Techniką projektowania.
2. Techniką pisania testów.
3. Techniką prowadzenia dokumentacji.
Czy TDD jest dla każdego?
Szablonowy
Znikoma zmienność wymagań Nie stanowi o
konkurencyjności firmy
Ciągła zmienność wymagań i rozwój
Może zaważyć na sukcesie lub porażce firmy
Innowacyjność i jakość są kluczowe
Utility Strategic
Czy TDD jest dla każdego?
Utility StrategicLicz
ba p
roje
któw
Wyboje na drodze
Brak umiejętności i wiedzy.
Brak pomocy dla niewdrożonych programistów
Brak czasu na pracę z niewdrożonymi programistami
Brak zaangażowania w projekt
Dziękuję za uwagę.
Co Dalej?• Andrew Hunt, David Thomas, „Pragmatyczny programista. Od czeladnika do mistrza”, Helion S.A. 2011
• Martin Fowler, Kent Beck, „Refaktoryzacja: Ulepszanie struktury istniejącego kodu”, Helion S.A. 2011
• Robert C. Martin, „Czysty Kod, Podręcznik Dobrego Programisty”, Helion S.A. 2010
• Gerard Meszaros, „xUnit Test Patterns: Refactoring Test Code”, Addison-Wesley 2007
• Martin Fowler, „Patterns of Enterprise Application Architecture”, Addison-Wesley 2002
• Eric Evans, „Domain Driven Design: Tackling Complexity in the Heart of Software”, Addison-Wesley 2003