Pisać testy jednostkowe do wszystkiego? Celować w 100% unit-test-code-coverage? Stosować TDD dla każdego rodzaju kodu? Na te pytania bardzo łatwo znaleźć w internecie odpowiedź i brzmi ona: TAK. Niestety nie jest to odpowiedź prawidłowa. Czasem lepiej testu nie napisać, niż go napisać. Czasem lepiej test skasować, niż go po raz dziesiąty poprawiać po zmianie w kodzie. Prawdziwą sztuką jest takie pisanie testów, aby czas spędzony na ich tworzeniu zwrócił się w dalszym życiu systemu. Sztukę tą szlifuje się przez lata praktyki i jest to zdecydowanie bardzo trudne zadanie. Ja cały czas jestem "w drodze", tzn. pomimo ładnych kilku lat stosowania różnych podejść do testowania, różnych frameworków, przeczytaniu tysięcy stron książek, artykułów i blogów na ten temat nadal mam wrażenie, że więcej nie wiem niż wiem. No cóż... życie.

Bardzo ważnym krokiem w "testowej edukacji" jest uświadomienie sobie, że:

A suite of good unit tests is immensely valuable (...) However, a suite of bad unit tests is immensely painful

Nie każdy kod zasługuje na test. Nie każdy test zasługuje na utrzymywanie. Wiele testów jest po prostu do niczego.

Źródło: Steve Sanderson, "Writing Great Unit Tests: Best and Worst Practices" (btw, polecam lekturę wszystkich postów Steve'a z kategorii Testing, a na bloga zwróciłem uwagę dzięki twittowi by @rafek, dzięki!)


Komentarze

(Wojtek)szogun1987

1 maja 2011 10:32

Tłumacząc niedokładnie wypowiedź Grega Younga na 4Developers "Jeżeli masz 100% pokrycie kodu w testach to wstydź się, bo właśnie okradasz swojego szefa".

Dawid Kowalski

1 maja 2011 11:28

Amen,

a teraz zostaniesz rozerwany przez hordę zealotów za szerzenie herezji ;-)

Soltys

1 maja 2011 12:59

ja mam takie hasło "pisz testy jeżeli umiesz je pisać"

procent

1 maja 2011 13:50

@(Wojtek)szogun1987:
Bardo fajny cytat:)

procent

1 maja 2011 13:51

@Dawid Kowalski:
Heh, pisałem już na blogu różne rzeczy a chyba jeszcze nikt nie zmieszał mnie z błotem przy pomocy prawdziwie zealockiego komentarza próbującego nawrócić na właściwą ścieżkę:)

procent

1 maja 2011 13:53

@Soltys:
Hmm... z tym się raczej nie zgodzę. Nie da się nauczyć pisania dobrych testów bez napisania tysięcy złych. Więc unikanie praktyki "bo nie umiem" nie jest rozwiązaniem.

wojtek(szogun1987)

1 maja 2011 13:57

Grega niestety nie ma juz w Polsce ale jego idee promowane beda przez Slawka Sobotke min na Lubelskich dniach informatyki. Widze ze reszta imprezy bedzie dosyc dretwa ale dla tej jednej prelekcji warto odwiedzic ta impreze.

dotnetomaniak.pl

2 maja 2011 12:27

Maciej Aniserowicz | Słowo na niedzielę, o dobrych i złych testach

Dziękujemy za publikację - Trackback z dotnetomaniak.pl

LaM

25 maja 2011 14:13

@Soltys
Nauka czyni mistrza. Zawaliłem sobie cała moją dyplomówke testami ... już widzę , że duża część z nich to jedno wielkie utrapienie ;D

Komentarze zamknięte