Spojrzenie na TDD przez pryzmat własnych porażek TDD czyli Test Driven Development to bez wątpienia najbardziej znana praktyka ze zbioru XP[1]. Sama koncepcja już leciwa, a jej pomysłodawca - Kent Beck - przedstawił jej fundamenty w książce z 2002 roku[2]. W telegraficznym skrócie można by rzecz, że sprowadza się do napisania testu, kt...
Sztuka programowania 1478 dni, 23 godziny, 10 minut temu 106 źrodło rozwiń
Prosty sposób na postawienie testów integracyjnych z autoryzacja w .NET Core, wykorzystując biblioteki Microsoft.AspNetCore.Mvc.Testing i Microsoft.AspNetCore.TestHost
Sztuka programowania 1542 dni, 38 minut temu 92 źrodło rozwiń
Wstęp do pisania testów jednostkowych w .NET
Sztuka programowania 1630 dni, 40 minut temu 147 źrodło rozwiń
W testach bardzo często mamy do czynienia z powtarzaniem tego samego kodu. Tak samo ma się sprawa z testowaniem null-checków (zw. inaczej jako guard clauses) w konstruktorach. Jeśli chcemy napisać test dla takiego przypadku, to zazwyczaj jest on napisany jako osobna metoda. Jak możemy sobie uprościć życie? Z pomocą przychodzi biblioteka AutoFixture.Idioms. Aby móc skorzystać z funkcji do automatycznego testowania null-checków w konstruktorach, potrzebujemy zainstalować dwa nugety:AutoFixture.Idi...
Sztuka programowania 1893 dni, 1 godzinę, 16 minut temu 89 źrodło rozwiń
W jaki sposób mockować (za pomocą Moq) metody ze słowem kluczowym out? Przyjrzyjmy się bliżej problemowi…
Sztuka programowania 1904 dni, 1 godzinę, 15 minut temu 85 źrodło rozwiń
The need to constantly update your tests whenever you change production code is one of the arguments against unit testing. Sure, when you do a big refactoring tests will need to change, but smaller changes should not make you change all the tests. I will try to help you with this issue. Specifically I will try to help you make your setup code easier to maintain.
Sztuka programowania 2186 dni, 23 godziny, 3 minuty temu 63 źrodło rozwiń
Wprowadzenie do Test Driven Development - wszystkie wpisyDlaczego zainteresowałem się TDD?Na czym polega TDDPiramida testów – do czego służą poszczególne poziomyZalety TDDWymówki, aby nie pisać unit testówJak pisać dobre unit testyMocki – radzenie sobie z zależnościami w testachMiary jakości unit testówAntywzorce unit testówKiedy nie stosować TDD W tym artykule odpowiemy sobie na pytanie jakie rodzaje testów powinniśmy wykonywać i w jakich proporcjach. Pomoże nam w tym piramida testów, czyli prosta graf...
Sztuka programowania 2270 dni, 23 godziny, 55 minut temu 73 źrodło rozwiń
W 10-tym odcinku podcastu przedstawiamy swoje 10 dobrych praktyk tworzenia oprogramowania. Nie mówimy o SOLID, DRY, KISS i reszcie "popularesów". O tym poczytasz już u wszystkich specjalistów. My przygotowaliśmy swoje własne zestawienie. TOP 10 Dobrych Praktyk Tworzenia Oprogramowania.
Sztuka programowania 2329 dni, 23 godziny, 16 minut temu 96 źrodło rozwiń
Ćwiczenia czynią mistrza, ale jak zacząć? Wczuj się w sytuacje, mamy końcówkę Czerwca, masz wiele lat komercyjnego doświadczenia, szef mianował Cię na mentorkę/mentora grupy praktykantów/stażystów. Przychodzisz do Pracy w pierwszy dzień roboczy Lipca, na końcu korytarza widzisz nowe twarze, czeka już na Ciebie grupa ambitnych praktykantów/praktykantek kierunku Informatyka, lub pokrewnego. Po wstępnej rozmowie z grupą studentów/studentek 2-3 roku studiów dowiadujesz się od nich, że o testach jednostkowyc...
Sztuka programowania 2331 dni, 4 minuty temu 126 źrodło rozwiń
Pisząc unit testy chcielibyśmy wiedzieć, czy robimy to wystarczająco dobrze i czy dodajemy w ten sposób wartość do projektu. Informacja ta jest potrzebna programistom, aby mogli doskonalić swój warsztat i ułatwiać pracę zespołowi. Korzystają z niej również managerowie planując zadania, skład zespołu itp. Najczęściej wykorzystywaną metryką jest tutaj test coverage, jednak niesie ona jedynie ograniczoną informację. Ważne są również miary empiryczne, które ciężko przedstawić w formie liczbowej. Na począt...
Sztuka programowania 2389 dni, 21 godzin, 20 minut temu 94 źrodło rozwiń
Pomysł na ten wpis jest taki, że na początek, napiszę testy jednostkowe, które będą palić się na czerwono, w których zdefiniuje problem. Testy zapalę na zielono poprzez implementację wzorca Adapter. Adapter przekształca interfejs klas na inny, oczekiwany przez klienta. Adapter umożliwia współdziałanie klasom, które z uwagi na niezgodne interfejsy standardowo nie mogą ...
Sztuka programowania 2416 dni, 22 godziny, 48 minut temu 174 źrodło rozwiń
Reaktywowałem swojego bloga na nowo [https://teovincent.com/]. Blog skierowany jest do programistów, ale nie tylko. Znajdziesz tutaj również tematykę zarządzania, liderowania i rekrutacji. Menedżerowie wchodźcie do kategorii: OGARNIJ PRACĘ. Programistów zapraszam do kategorii: PROGRAMOWANIE, KONFERENCJE, HIPERŁĄCZE, KONKURS. Programowanie && !Programowanie Wykrzyknik „!” oznacza zaprzeczenie. Podwójny ampersand „&&” to operator, który zwraca wartość „prawda”, gdy oba jego argumenty zwraca...
Sztuka programowania 2466 dni, 14 godzin, 6 minut temu 70 źrodło rozwiń
Testowanie kodu, który nie wykorzystuje zewnętrznych zależności jest stosunkowo proste. W większości przypadków testowany moduł współpracuje jednak z innymi elementami systemu. Stawia to przed testami dwa wyzwania – po pierwsze powinny poprawnie działać, a po drugie sprawdzać poprawność tej współpracy. Nie jest to zadanie proste, a zewnętrzne zależności są jednym z głównych czynników utrudniających testowanie. Aby radzić sobie z zależnościami posługujemy się mockami, czyli dublerami zastępującymi zal...
Sztuka programowania 2602 dni, 48 minut temu 139 źrodło rozwiń
W ostatnim wpisie przybliżyłem zestaw dobrych praktyk w pisaniu unit testów. Dzisiaj będę kontynuować ten temat z trochę innej perspektywy i opowiem o antywzorcach. Dzięki charakterystycznym nazwom, piętnującym konkretne złe praktyki, antywzorce zostają w pamięci i mamy je przed oczami pisząc podejrzany kod. Podejście do testów Pierwsza grupa wzorców nie wiąże się z pisaniem konkretnych testów, tylko raczej z nastawieniem, jakie nam towarzyszy podczas pisania i wynikającymi z tego zachowaniami.Obywatel...
Sztuka programowania 2617 dni, 2 godziny, 1 minutę temu 293 źrodło rozwiń
Często unit testy nie są przez programistów traktowane jak prawdziwy kod. Są dla nich jedynie narzędziem do osiągnięcia określonego celu – sprawdzenia poprawności implementacji. Przez to testy stają się trudne w utrzymaniu albo wykonują się zbyt długo. Przez co uniemożliwiają pracę zgodnie z TDD i nie mają wartości dokumentacyjnej. Istnieją jednak proste zasady tłumaczące, jak powinny wyglądać dobrze napisane testy. Pisząc kod powinniśmy trzymać się zasad SOLID, czyli kod powinien być solidny, a dodat...
Sztuka programowania 2619 dni, 35 minut temu 161 źrodło rozwiń
W poprzednich częściach cyklu skupiałem się na korzyściach płynących z TDD. Jeżeli ta metoda wejdzie nam w krew, te korzyści zachęcą nas, abyśmy pisali w ten sposób zawsze i wszędzie. Motywują nas do tego również eksperci mówiący, że każda linia kodu powinna być przetestowana. Okazuje się jednak, że nie zawsze testowanie wszystkiego na siłę jest dobrym rozwiązaniem. W tym artykule opiszę sytuacje, kiedy nie opłaca się używać TDD. Programując czasem natrafiamy na problemy, co do których nie mamy z góry...
Sztuka programowania 2623 dni, 2 godziny, 55 minut temu 190 źrodło rozwiń
Próbując wprowadzić TDD w projekcie najczęściej spotkamy się z oporem. Argumenty przeciwko tej technice ze strony developerów i osób decyzyjnych, które nie miały z nią do czynienia często się powtarzają. Postanowiłem więc w tym wpisie zebrać te argumenty i je omówić. Krytyka TDD ze strony osób mających doświadczenie w temacie zwykle przybiera inną formę i jest to temat na osobny wpis. Brak czasu to podstawowy argument przeciwko pisaniu testów. Jest bardzo często używany przez managerów oraz przez niek...
Sztuka programowania 2627 dni, 2 godziny, 47 minut temu 239 źrodło rozwiń
Przestawienie się na Test Driven Development z pisania metodą tradycyjną nie jest łatwym zadaniem. Szczególnie na początku musimy walczyć ze starymi nawykami, a kiedy napotykamy trudności, naturalnym rozwiązaniem jest stosowanie metod, które znamy i rozumiemy. Poza tym początkowo TDD może nam się wydawać nieintuicyjne, a wkład pracy wydaje się większy. Jak to zwykle bywa w takich przypadkach, kluczem jest wytrwałość. Każda umiejętność wymaga czasu, aby ją dobrze opanować. Kiedy już nam się to uda, zauważ...
Sztuka programowania 2631 dni, 48 minut temu 93 źrodło rozwiń
W poprzedniej części cyklu o TDD opisałem dlaczego sposób wytwarzania oprogramowania, który praktykowałem na początku się nie sprawdzał i co mnie skłoniło do zainteresowania się Test Driven Development. Dzisiaj opiszę jak wygląda praca zgodnie z TDD. Jak to często bywa w przypadku praktyk zwinnych zasady teoretyczne są dosyć proste, a kluczem do sukcesu jest dyscyplina. Na początku musimy sobie wyjaśnić jedną bardzo ważną kwestię. TDD to nie synonim do pisania testów jednostkowych. Owszem, unit testy ...
Sztuka programowania 2638 dni, 2 godziny, 45 minut temu 144 źrodło rozwiń
Kiedy uczyłem się programować, pisałem metodą code and fix. Czyli najpierw pisałem jakiś fragment kodu – mogła to być jedna funkcja, moduł albo nawet cały program. Następnie uruchamiałem go i ręcznie sprawdzałem czy działa, przechodziłem kod debuggerem sprawdzając wartości zmiennych i przepływ sterowania. Następnie poprawiałem znalezione błędy, dodawałem funkcjonalności i znowu sprawdzałem. Na pewno każdy programista zaczynał w ten sposób. W miarę jak moje umiejętności rosły i pisałem trudniejsze progra...
Sztuka programowania 2642 dni, 13 minut temu 198 źrodło rozwiń