devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

DevTalk#03 – O testach z Adamem Kosińskim


17.11.2014

AdamW trzecim odcinku rozmawiam z Adamem Kosińskim – programistą, prelegentem, aktualnie kodzącym C# w Londynie.

Tematem przewodnim są testy jednostkowe – nasza wspólna pasja. Gadamy zarówno o najlepszych jak i najgorszych praktykach. Przestrzegamy też na to uważać podczas przygody z testowaniem. Zastanawiamy się również dlaczego czasami testy nie spełniają oczekiwań programistów i… i wiele więcej :).

Konkurs: dzisiaj rozdaję licencję na NCrunch. Jak miło! To niewiarygodne narzędzie otrzyma autor jednego z komentarzy pod niniejszym postem. Piszcie, piszcie, piszcie! Dzielcie się uwagami, opiniami. Co sądzicie o DevTalku i o tym odcinku? Co byście zmienili, a co się podoba? Nie trzeba napisać komentarza pozytywnego aby być wziętym pod uwagę podczas rozdania NCruncha :).

Uwaga: dzisiejszy odcinek powinien brzmieć lepiej niż poprzednie… bo już nie muszę robić wszystkiego sam! Zgłosił się do mnie Krzysiek Śmigiel wyciągając pomocną dłoń gotową zająć się obróbką “surowego” materiału audio. To zajmowało mi masę czasu, więc pomoc przyjąłem bez chwili wahania. Super, dzięki!

Logo: w poprzednim odcinku został ogłoszony konkurs na logo. Zwyciężył Rafał Sańda przysyłając projekt, który bardzo mi podpasował. Już teraz jest on wykorzystany na twitterze, fejsie, itunes itd. Wypas i awesome, dzięki!


Montaż odcinka: Krzysztof Śmigiel.
Ważne adresy:

NCrunch


Muzyka wykorzystana w intro:
“Misuse” Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0
http://creativecommons.org/licenses/by/3.0/

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
trackback

03 – O testach z Adamem Kosińskim | DevTalk

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

Kajetan Duszyński
Kajetan Duszyński

Z odcinka na odcinek jest coraz fajniej :)
Jednak chciałbym się przyczepić do początku.
Osobiście nie jestem fanem zwrotu “Bądźcie devzdrowieni” :P
Później “Ogłoszenia drobne” wydają się być bardzo mechanicznie zaprezentowane. Czytałeś to z kartki? Postaraj się może przy tej części o więcej luzu tak jak podczas rozmowy.
Rozumiem, że początki są bardzo trudne i jestem pod ogromnym wrażeniem, że się tego podjąłeś. Z odcinka na odcinek jest coraz lepiej :)
Nareszcie powstał polski podcast, którego warto słuchać. Oby tak dalej.

orientman

Na a ja mam zagwozdkę, bo nie mogę z czystym sumieniem puścić tego na all@moja-firma.pl. Wchodząc w skórę juniora lub generalnie kogoś kto nigdy nie pisał testów, albo pisał, ale nie w cyklu TDD, to bym znalazł tu sporo argumentów, że nie warto się w to pchać. IMHO obietnica, którą składa TDD to nie “hype”. Jeśli coś nie idzie to jedyną odpowiedzią jest “try harder” – jakby to głupio nie zabrzmiało. Dla mnie 7 lat zabawy z testami to niesamowita przygoda okupiona momentami znacznymi spadkami samooceny, ale “expert beginnerem” już byłem i nie chcę tam wracać. Zabrakło mi pewnego uporządkowania… Read more »

Harry
Harry

Zgadzam się z @Kajetan, że z odcinka na odcinek jest coraz lepiej.
A mi tam odcinek się podobał:) Nigdy nie myślałem o testach jako o dokumentacji. Ale człowiek się całe życie uczy a i tak głupi umiera:)

Dzięki za super robotę jaką wykonujesz procent:)

Tomek

Jak będziesz potrzebował do kogoś powiedzieć te rzeczy z ogłoszeniami to zadzwoń na Skype :).

Paweł
Paweł

Wyszło bardzo dobrze, ciekawe się słucha. Tematy jak do tej pory są spoko i tym razem udało się być ekspertem również :). Chcemy chleba i podcastów!

Marek Zet

Teraz nie wiem co myśleć o UT i jak najlepiej podejść do tematu w moich projektach. Trzeba przemyśleć temat na spokojnie przy piwku :)

Teraz trochę wazeliny. Temat z UT to strzał w dychę. Osobiście od pewnego czasu dochodziłem do tych samych wniosków co Adam, co nie dawało mi spokoju czy idę w dobrym kierunku. Teraz wiem, że nie jestem osamotniony :)

Tymoteusz Kęstowicz

Dobry podcast. Porcja materiału, która według mnie jest godna polecenia devom, managerom i firmom przygotowującym oferty praktyk letnich ;). Swoją drogą świetne anegdoty i przykłady “z życia” przedstawione w podcaście przez Was obu :).

Co do strony technicznej: Zgadzam się z poprzednikami – na początku trochę mechanicznie. Mimo wszystko ogromny szacun!

Wilmek
Wilmek

Super inicjatywa z tym podcastem. Z odcinka na odcinek coraz lepiej, do 2 i 3 odcinka poświęciłeś chyba więcej czasu na przygotowania, niż do 1-szego i to słychać. Moja sugestia odnośnie tego co można by zmienić na lepsze niestety nie będzie oryginalna. Część poświęcona ogłoszeniom to lekka masakra, jeśli chodzi o szybkość wypowiadania słów… chociaż obcokrajowiec posługujący się językiem polskim w stopniu ograniczonym byłby Ci na pewno wdzięczny za to tempo :D

LP
LP

Fajna inicjatywa :) Mam nadzieję, że starczy czasu i zapału i powstanie jeszcze sporo odcinków :)

artur ligmann
artur ligmann

dla mnie bomba. podoba mi sie przede wszystkim to, ze grupa docelowa tych audycji to jednak ci bardziej zaawansowani i mozna uzyskac informacj ktorych gdzie indziej w internetach brak. jedyna prosba: postarajcie sie uzywac wiecej polskiej nomenklatury

WhiteBear
WhiteBear

Jest jakiś powód, dla którego nie wrzucasz nagrań na YouTube?
Osobiście lubię słuchać nagrać/prezentacji w … pracy :) a czasami mam problem ze streamem. Przez co muszę wcześniej ściągnąć, a wygoda spada. Wiem, że jest sporo osób takich jak ja więc możesz tracić słuchaczy przez to.

Biegal
Biegal

Chyba nie będę oryginalny, ale:
Ogólnie patrząc, rzeczywiście widać postęp w jakości. Duży big up za to.
Natomiast rozbijając na ‘część organizacyjną’ i ‘rozmowę’, to ta druga wypada dużo lepiej.
Długo szukałem odpowiedniego słowa, ale wydaje mi się, że najlepiej napisać, że część ogłoszeń jest ‘przekombinowana’ ?
A rozmowy fajnie się słucha, całość jest dobrze poprowadzona, nie ma przestojów, tematy płynnie przechodzą. Dobra robota

Czekam na kolejny odcinek i kolejne postępy ;)

TeoVincent

Rozmowa rozpoczęła się trochę kontrowersyjnym stwierdzeniem Adama, gdzie nie namawiał wszystkich do pisania testów jednotkowych za wszelką cenę, a jak już je pisać te testy, to nie koniecznie testować jak najmniejsze elementy kodu, a raczej większe części systemu. Maciej przytakiwałeś w wielu miejscach ale przy okazji dzielnie broniłeś swojego podejścia, w którym piszesz bardzo dużo testów. Ja w wypowiedzi Adama dostrzegłem analogię do swojej ostatniej sytuacji w pracy. Dopisywałem nową funkcjonalność do systemu kolejkującego połączenia w call center, podczas której testy jednostkowe bardzo ułatwiły mi pracę. Klient zamówił przydzielanie połączeń do konsultantów w taki sposób, aby osoby wdzwaniające się ponownie… Read more »

TeoVincent

P.S. NCruncha, używałem do póki mi się okres darmowy nie skończył i używałbym dalej, bo to dobre narzędzie jest.

Olo
Olo

Podoba mi si cykl spotkań. Porównanie braku testów do auta bez hamulców dobrze działa na wyobraźnię.
Moje zastrzeżenia: powinniście bardziej uważać na język – mogą Was słuchać młodzi adepci programowania.

Artur
Artur

Czepiam się:
– słychać łączenie ścieżek
– ktoś brzęka i to przeszakadza (chyba Adam)
– brak linków do dyskusji “TDD is dead”

Plusy:
– nie czepiałbym się technicznych rzeczy, gdyby merytorycznie nie było superowo. Nie potrafię się do niczego w tym względzie przyczepić :)
– muzyka na końcu

Marcin Nowacki

Czacha dymi :D Przyjemnie się słucha. Mimo, że to 40 min, nie zauważyłem kiedy minęło i w międzyczasie prasowanie zrobione. Żona szczęśliwa ja też piękny przykład win-win ;) Wydaje mi się że w tle słyszałem jak ktoś bawi się monetami i dźwięki rozkładanych naczyń chyba talerzy. Proszę o potwierdzenie bo nie wiem czy muszę udać się do specjalisty. Odnośnie TDD. Wszystko jest trucizną decyduję tylko dawka. Co do samego DHH to gość jak dla mnie mówi w wielu miejscach z sensem np. RailsConf 2014 (https://www.youtube.com/watch?v=9LfmrkyP81M). Na koniec cytacik: ‘TDD is for scared people is for pussys’ Erik Meijer “One Hacker… Read more »

Marcin Krupiński

Ja pociągnę to o czym napisał Artur – temat TDD is dead został potraktowany bardzo po macoszemu. Rozumiem, że brakowało czasu, ale poza tym że niewiele zdążyliście o tym powiedzieć, to nie wiem do kogo miał być skierowany ten fragment podcastu. Jeżeli do wyjadaczy, którzy kojarzą tekst i cała dyskusję, to za mało się w niego wgryźliście (co zrozumiałe bo było za mało czasu). Jeżeli do programistów początkujących i/lub tych których cała dyskusja ominęła to jest kilka błędów: – brak pełnego nazwiska osoby, która wysunęła tezę TDD is dead (jasne ja też nie powtórzę z pamięci, ale skoro Maćku masz… Read more »

Marcin Krupiński

Aha i popieram Olo: sam klnę (a da się programować bez tego? ;) ) a mimo to uważałbym z takimi stwierdzeniami jak “o kant d…. potłuc” itp. Niedawno się spotkałem z ciekawym stwierdzeniem o nadużywaniu “F Bombs” w książkach czy filmach: jeżeli ich się nie używa, to raczej nikogo ze słuchaczy / czytaczy / oglądaczy nie stracimy (no chyba że to film mafijny i spodziewamy się takiego języka, ale z drugiej strony w Braking Bad nie pada ani razu słowo na “F”). W drugą stronę – jak używa się takich zwrotów, prawdopodobnie kogoś to będzie raziło i nie wróci do… Read more »

TeoVincent

Czytając te wszystkie komentarze, czuję się jak bym jadł “schabowy, ziemniaki i kapustę zasmarzaną” bez schabowego. W komentarzach oczekiwałbym mięsa, czyli więcej dzielenia się własnymi doświadczeniami i opiniami na temat testowania jednostkowego. Na tą chwilę, z komentarzy mogę się dużo dowiedzieć jak robić, lub jak nie robić podcasta, zamiast skonfrontować wypowiedzi z nagrania z opiniami innych devów. Dlaczego to porównałem do “chabowego, ziemniaków i kapusty zasmażanej”? Bo to jedno z najlepszych dań jakie kiedykolwiek jadłem i prawdopodobnie lepszego nie uda mi się zjeść (podobną opinię mam na temat tego devtalka). Ziemniakami są wszystkie wasze komentarze mówiące o tym, czy wam… Read more »

Przemek
Przemek

Sam pomysł na podcast jak i wykonanie zacne. Jak na razie merytorycznie najbardziej podobał mi się odcinek z Gutkiem, pozwolił on spojrzec z szerszej perspektywy na romans c# + js, liczę na kolejną część :). Zgadzam się z przedkomentatorami co do ogłoszeń, są strasznie sztywne, ewidentnie potrzeba Ci drugiej osoby do której byś kierował wypowiedź. Mam jeszcze propozycję, aby pod każdym podcastem umieszczać linki do wymienionych w trakcie rozmowy bibliotek, artykułów itd, żeby nie trzeba było po powrocie do domu szukac w podcascie miejsca gdzie były one podawane :) Np. wszystkie biblioteki z pierwszego odcinka lub wypowiedzi DHH nt TDD… Read more »

Marcin
Marcin

Trochę mało konkretniejszych rzeczy jak dla mnie. Zabrakło wzmianek o mock’ach, refactoringu, a czasami wręcz naprawy złego kodu właśnie dzięki TDD. Nikt nie wspomniał również o DI, które niekiedy jest wręcz koniecznością aby napisać test, co z kolei pozwala na nieco mniej “tightly coupled methods”. Wspomniany NCrunch (czy też Infinitest dla Javy) sprawiają wręcz, że część wspomnianych problemów odpada. Przede wszystkim dzięki widocznemu code coverage w czasie rzeczywistym, bardzo łatwo można rozbijać nazbyt duże metody na mniejsze i od razu widzieć czy coś się popsuło. Można wyciągać przetestowane już fragmenty z metod Wielokrotnie wykryłem błędy w tzw. legacy code, właśnie… Read more »

Adam Kosiński

Cześć wszystkim, z tej strony “ekspert” niniejszego odcinka. Ponieważ wiele osób tutaj poruszyło ciekawe kwestie, postaram się je skomentować po kolei i być może dolać trochę oliwy do ognia. Raczej nie będę dyskutował o sprawach technicznych nagrania, bo tu już chyba wszystko zostało powiedziane (i też zwyczajnie się nie znam :) Na początek kilka ogłoszeń ogólnych: – Kajam się za stukanie na nagraniu, to szklanka wody i pobliski stolik. Strasznie zasycha w gardle w trakcie rozmowy. Nie miałem pojęcia że aż tak się załapie. Przy następnej okazji założę tą śmieszną czapeczkę z piciem i słomką :) – Wszystkie opinie są… Read more »

Adam Kosiński

@Marcin: Testy to baaaardzo szeroki temat, i te pół godziny pewnie nawet nie wystarczyłoby na wymienienie wszystkich terminów jakie wiążą się z testami. Mam nadzieję, że Maciek będzie sukcesywnie rozwijał temat. Super, że poruszyłeś wiele ciekawych punktów, na które nie miałem okazji ponarzekać z Maćkiem :) O ile w ogólności zgadzam się z wieloma Twoimi punktami, to nie do końca wiem czy mogę z takim entuzjazmem skakać w Dependency Injection. To potężna technika która jest łatwa do nadużycia, co w ekstremalnym powoduje dziesiątki (setki?) pozornie niezależnych klas. Mamy wtedy co prawda “loosely coupled”, ale za to tworzymy sieć “ukrytych” zależności… Read more »

Adam Kosiński

@Teovincent

Boska analogia :) Aż się głodny zrobiłem. Zjadłbym sobie schabowego z ziemiaczkami …

Adam Kosiński

@Marcin Krupiński

Świetne uwagi, ciężko jest dyskusję TDD-is-dead przedstawić tak, żeby zainteresowała zarówno

nowicjuszy jak i bardziej doświadczonych, a z racji tego że obaj z Maćkiem siedzimy w tym

głęboko, przeskoczyliśmy od razu do wniosków.
No i kajam się za brak profesjonalizmu. Przed nagraniem próbowałem się nauczyć nazwiska pana

Davida Heinemeiera Hanssona, ale jest to spore wyzwanie (spróbuj powiedzieć to szybko trzy razy

:).
Ale masz rację wyszło trochę po wiejsku.

Adam Kosiński

@ Marcin Krupiński, Marcin Nowacki, TDD-Is-Dead

Co do samej dyskusji, DHH to mądry gość w sumie miał rację – z wyjątkiem tego fragmentu kiedy się mylił nazywając wszystkie złe rzeczy jako TDD. Wszystkie “Test induced damage” jakie opisał są powszechne, jeżeli podchodzi się do testów od strony praktyk zamiast od strony idei (principles).

Co zresztą jest prawdziwe w bardzo wielu różnych przypadkach (ktoś wspomni Agile? :)

Zauważyłem również ciekawą korelację, między takim takim rozumieniem TDD a ilustrowaniem go za pomocą Coding Kata – ale ten ciekawy temat zostawię na następną okazję.

Adam Kosiński

@Teovincent o call center Również mam zbliżone doświadczenia, chociaż nie call center a system IVR – “Naciśnij 1 aby usłyszeń o naszych promocjach … ” itd. Wiele rzeczy udało nam się objąć testami “jednostkowymi”, bez potrzeby deploya i odpalania serwera. Było ciekawie, ponieważ każdy poziom menu był naturalnym kandydatem na “jednostkę” w naszych testach. Mogliśmy wziąć dany punkt systemu, symulować wciskanie klawiszy poprzez eventy w kodzie i weryfikować czy następny punkt na liście jest taki jak powinien. Taki mocking framework na VB.NET :) Mieliśmy również testy na już zdeployowanym systemie – wdzwaniał się na maszynę, po czym osobny proces sprawdzał… Read more »

TeoVincent

@ Adam Kosiński

Dzięki za odp. Mam potwierdzenie, że podobne tematy, gdzieś tam ktoś, w podobny też sposób rozgryza.

Kiedyś wystawiłem na GitHub mały projekt z wyciągniętym “wzorcem” na jakim się opieramy przy budowaniu drzew IVR. Tutaj jest, kilka testów, które wnioskując po twojej wypowiedzi, koncepcyjnie są identyczne z Twoimi:

https://github.com/TeoVincent/Root-Nodes-Workflow-Pattern/blob/master/RootAndNodesPattern/RootAndNodesPattern.UnitTests/WorkflowTest.cs

Dawid
Dawid

Zgadzam się z Wami, że w wielu przypadkach nawet do legacy code warto dopisywać testy. Przykład z życia: W systemie miałem (napisaną przez kogoś innego) metodę która umożliwiała wyznaczenie ilości dostępnych usług dla klienta w zależności od daty startu jego uprawnień, rodzaju okresu (rok, kwartał, miesiąc), rodzaj limitu (czy traktować początek roku jako start, czy datę startu uprawnień) oraz ile już usług miał wykonanych. Dostałem do naprawienia błąd w tej metodzie bo źle był wyliczany numer kwartału i przez to określana ilość usług. W tym przypadku dużo prościej było napisać test który sprawdza przypadki wszystkich czterech kwartałów niż próbować na… Read more »

Rafał
Rafał

Jej! Widzę, że robi się coraz ciekawiej i bardzo się cieszę, że mogłem przyłożyć swoją małą cegiełkę do tak zacnego projektu.

This is crazy! ;)

Jakub Jedryszek

Hej, Super podcast! Dużo ciekawych uwag/sugestii/przemyśleń. +1 za intro :) Nie mogę się doczekać co wymyślisz za tydzień :D Co do testów i TDD to ciekawi mnie czy zgadzacie się ze stwierdzeniem, że zanim zacznie się używać TDD, należy się dobrze nauczyć pisać testy. Tzn. zrobić kilka projektów, gdzie testy pisze się PO implementacji i kiedy już mamy wprawę to wtedy próbujemy TDD. Inaczej będzie frustracja i myśli typu, że to jest bez sensu. Co do kwestii technicznej to tak jak kilka osób wspomniało fajnie byłoby mieć linki do źródeł pod podcastem (tak jak Hanselminutes). Przydały by się też jakieś… Read more »

TeoVincent

Dzięki za wyróżnienie. Na pewno się nie zmarnuje ta licencja w moich rękach.

P.S. DavTalk ma to do siebie, że po wysłuchaniu nagrania, czuję się, że jest się zaproszony do włączenia się w rozmowę.

Moja książka

Facebook

Zobacz również