SlideShare a Scribd company logo
1 of 13
TDD KATA
JAK STAĆ SIĘ LEPSZYM?!
POCZĄTKUJĄCY
Uczymy się podstawowych zasad, wykonujemy określone
akcje nie zastanawiając się nad tym dlaczego akurat
te, powtarzamy wszystkie czynności jak najdokładniej niczym
mantrę – kata.
PRZEŁAMANIE
Zaczynamy rozumieć wykonywane akcje, poprzez praktykę
zdobywamy doświadczenie w używaniu wyuczonych technik w
codziennym życiu, zaczynamy dostrzegać wyjątki i uczymy się
jak sobie z nimi radzić.
UWOLNIENIE
Rozumiemy to co robimy i dlaczego to robimy, możemy
rezygnować z narzuconych wcześniej reguł ale nie pozbywając
się ich zupełnie, zasady są nam niepotrzebne gdyż w pełni
rozumiemy naturę tego co robimy.
RI
SHU
HA
KATA
to ciągłe powtarzanie
określonych czynności
według zdefiniowanego
schematu
TDD KATA:
„STRING CALCULATOR”
Zasady:
- Pracujemy tylko nad jednym wymaganiem na raz.
- Nie interesuje nas to co będzie w następnych wymaganiach.
- Piszemy tylko tyle kodu ile jest potrzebne by wymaganie zostało
spełnione.
- Testujemy tylko pozytywne scenariusze (chyba, że w wymaganiu jest
inaczej)
- Pracujemy zgodnie z zasadmi TDD – Red, Green, Refactor
- Pracujemy w parach
- Jedna osoba programuje, druga steruje.
- Co 8 minut następuje zmiana osób
- Osoby na sali mogą komentować i doradzać programującej parze, ale to
do osób przy klawiaturze należy ostateczna decyzja co do
implementacji.
1. PROSTY
KALKULATOR
- Utwórz prostą metodę przyjmującą wyrażenie typu String
jako parametr.
- Metoda może przyjmować 0, 1 lub 2 liczby oddzielone
przecinkami i zwraca ich sumę (pusty string zwraca
0), przykład: „” lub „1” lub „1,2”
- Zacznij od testu dla pustego parametru.
- Następnie test dla jednego parametru i w następnym kroku
dla dwóch.
- Pamiętaj o tym by rozwiązania, które implementujeszy były
jak najprostsze.
- Po każdym przechodzącym teście pamiętaj o refactoringu.
2. DOWOLNA ILOŚĆ
PARAMETRÓW
- Spraw by kalkulator przyjmował dowolną ilość parametrów i
zwracał ich sumę.
3. LICZBY ODDZIELONE
ZNAKIEM NOWEJ LINII
- Spraw by liczby przekazywane do naszej metody mogłby
być oddzielane przy użyciu nowej lini a nie tylko przecinka.
- Przykład:
„1n2,3” powinno zwrócić 6
4. WSPARCIE DLA RÓŻNYCH
SEPARATORÓW
- Aby zmienić separator na inny niż domyślny należy podać w
parametrach wejściowych nowy separator w poniższy
sposób:
„//[delimiter]n[numbers...]”
- Przykład:
„//;n1,2” powinno zwrócić 3.
- Pierwsza linia z separatorem jest opcjonalna – poprzednia
funkcjonalność powinna działać bez zmian.
5. DODAJEMY TYLKO
LICZBY DODATNIE
- Jeśli zostały przekazane liczby ujemne, powinien zostać
rzucony wyjątek „negatives not allowed”.
- Wszystkie ujemne liczby powinny zostać wyświetlone w
wiadomości o wyjątku.
6. OGRANICZAMY
ZAKRES
- Liczby większe niż 1000 powinny być ignorowane.
- Przykład:
2000 + 2 = 2
7. SEPARATOR
DOWOLNEJ DŁUGOŚCI
-Separator powinien być dowolnej długości a nie tylko
ograniczony do jednego znaku.
- Dłuższe separatory powinny być definiowane w następujący
sposób:
„//[delimiter]n[numbers...]”
- Przykład:
„//[***]n1***2***3” powinno zwrócić 6.
8. WIĘCEJ NIŻ JEDEN
SEPARATOR
- Sprawmy by nasza metoda mogła obsługiwać więcej niż
jeden separator zdefiniowane w następujący sposób:
„//[delimiter1][delimiter2]n[numbers...]”
- Przykład
„//[*][;]n1*2;3” powinno zwrócić 6
9. WIĘCEJ NIŻ JEDEN
SEPARATOR RÓŻNEJ DŁUGOŚCI
- Upewnijmy się, że nasza funkcja obsługuje kilka dłuższych
separatorów.

More Related Content

More from Wiktor Żołnowski

Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Wiktor Żołnowski
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testowWiktor Żołnowski
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareWiktor Żołnowski
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Wiktor Żołnowski
 

More from Wiktor Żołnowski (8)

Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
Sqa days2013
Sqa days2013Sqa days2013
Sqa days2013
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy software
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013
 
Xp days ukraine 2012
Xp days ukraine 2012Xp days ukraine 2012
Xp days ukraine 2012
 
Abe 2012
Abe 2012Abe 2012
Abe 2012
 
Agileee 2012
Agileee 2012Agileee 2012
Agileee 2012
 

09 tdd kata backlog

  • 1. TDD KATA JAK STAĆ SIĘ LEPSZYM?!
  • 2. POCZĄTKUJĄCY Uczymy się podstawowych zasad, wykonujemy określone akcje nie zastanawiając się nad tym dlaczego akurat te, powtarzamy wszystkie czynności jak najdokładniej niczym mantrę – kata. PRZEŁAMANIE Zaczynamy rozumieć wykonywane akcje, poprzez praktykę zdobywamy doświadczenie w używaniu wyuczonych technik w codziennym życiu, zaczynamy dostrzegać wyjątki i uczymy się jak sobie z nimi radzić. UWOLNIENIE Rozumiemy to co robimy i dlaczego to robimy, możemy rezygnować z narzuconych wcześniej reguł ale nie pozbywając się ich zupełnie, zasady są nam niepotrzebne gdyż w pełni rozumiemy naturę tego co robimy. RI SHU HA
  • 3. KATA to ciągłe powtarzanie określonych czynności według zdefiniowanego schematu
  • 4. TDD KATA: „STRING CALCULATOR” Zasady: - Pracujemy tylko nad jednym wymaganiem na raz. - Nie interesuje nas to co będzie w następnych wymaganiach. - Piszemy tylko tyle kodu ile jest potrzebne by wymaganie zostało spełnione. - Testujemy tylko pozytywne scenariusze (chyba, że w wymaganiu jest inaczej) - Pracujemy zgodnie z zasadmi TDD – Red, Green, Refactor - Pracujemy w parach - Jedna osoba programuje, druga steruje. - Co 8 minut następuje zmiana osób - Osoby na sali mogą komentować i doradzać programującej parze, ale to do osób przy klawiaturze należy ostateczna decyzja co do implementacji.
  • 5. 1. PROSTY KALKULATOR - Utwórz prostą metodę przyjmującą wyrażenie typu String jako parametr. - Metoda może przyjmować 0, 1 lub 2 liczby oddzielone przecinkami i zwraca ich sumę (pusty string zwraca 0), przykład: „” lub „1” lub „1,2” - Zacznij od testu dla pustego parametru. - Następnie test dla jednego parametru i w następnym kroku dla dwóch. - Pamiętaj o tym by rozwiązania, które implementujeszy były jak najprostsze. - Po każdym przechodzącym teście pamiętaj o refactoringu.
  • 6. 2. DOWOLNA ILOŚĆ PARAMETRÓW - Spraw by kalkulator przyjmował dowolną ilość parametrów i zwracał ich sumę.
  • 7. 3. LICZBY ODDZIELONE ZNAKIEM NOWEJ LINII - Spraw by liczby przekazywane do naszej metody mogłby być oddzielane przy użyciu nowej lini a nie tylko przecinka. - Przykład: „1n2,3” powinno zwrócić 6
  • 8. 4. WSPARCIE DLA RÓŻNYCH SEPARATORÓW - Aby zmienić separator na inny niż domyślny należy podać w parametrach wejściowych nowy separator w poniższy sposób: „//[delimiter]n[numbers...]” - Przykład: „//;n1,2” powinno zwrócić 3. - Pierwsza linia z separatorem jest opcjonalna – poprzednia funkcjonalność powinna działać bez zmian.
  • 9. 5. DODAJEMY TYLKO LICZBY DODATNIE - Jeśli zostały przekazane liczby ujemne, powinien zostać rzucony wyjątek „negatives not allowed”. - Wszystkie ujemne liczby powinny zostać wyświetlone w wiadomości o wyjątku.
  • 10. 6. OGRANICZAMY ZAKRES - Liczby większe niż 1000 powinny być ignorowane. - Przykład: 2000 + 2 = 2
  • 11. 7. SEPARATOR DOWOLNEJ DŁUGOŚCI -Separator powinien być dowolnej długości a nie tylko ograniczony do jednego znaku. - Dłuższe separatory powinny być definiowane w następujący sposób: „//[delimiter]n[numbers...]” - Przykład: „//[***]n1***2***3” powinno zwrócić 6.
  • 12. 8. WIĘCEJ NIŻ JEDEN SEPARATOR - Sprawmy by nasza metoda mogła obsługiwać więcej niż jeden separator zdefiniowane w następujący sposób: „//[delimiter1][delimiter2]n[numbers...]” - Przykład „//[*][;]n1*2;3” powinno zwrócić 6
  • 13. 9. WIĘCEJ NIŻ JEDEN SEPARATOR RÓŻNEJ DŁUGOŚCI - Upewnijmy się, że nasza funkcja obsługuje kilka dłuższych separatorów.