Moment pisania testów jest nierzadko kluczowy dla zmaksymalizowania efektywności całej procedury. Po kilku chwilach zastanowienia da się wyróżnić kilka najważniejszych etapów tworzenia oprogramowania, które z reguły są odpowiednią chwilą do implementacji testu.
Na blogu oraz MSDN pisałem niejednokrotnie o testach jednostkowych oraz integracyjnych. Ostatnio jednak zastanawiałem się nad podstawowym problemem – jak zorganizować to od strony struktury katalogowej? Musimy rozważyć następujące problemy:Testy powinny być w każdej chwili dostępnie do odpalenia i weryfikacji.Wykonując prostą refaktoryzację (zmiana nazwy klasy), automatycznie nazwa powinna zaktualizować się w testach.Testy jednostkowe stanowią dobrą dokumentację oraz instrukcję używania zaimplementowanej...
Test jednostkowy to nic innego jak kod wykonujący inny kod w kontrolowanych warunkach. Jego zadaniem jest weryfikacja (bez ingerencji programisty), że testowany kod działa poprawnie. Robi to w sposób dość banalny: autor testu dostarcza dane wejściowe (input), test wykonuje pewne instrukcje i sprawdza, czy rezultat działań (output) zgodny jest z oczekiwaniami. W świecie idealnym każdy test bada jedną ścieżkę wykonania jednej metody. Czy jednak jedyną rolą testów jednostkowych jest sprawdzenie działania ...
Architektura 4829 dni, 23 godziny, 19 minut temu 386 źrodło rozwiń
autor: Wożę się z tym tematem od nie wiem już kiedy i niejednokrotnie pisałem, że coś takiego zamierzam. Teraz akurat nadszedł taki okres, że mam czas na trochę więcej pisania, więc się mobilizuję i rozpoczynam wreszcie swój blogowy minicykl o testach (głównie jednostkowych) na platformę .NET. O testach napisałem już sporo notek... pora na więcej:). Od wielu miesięcy spisywałem kluczowe pojęcia i myśli, jakie mnie nachodziły podczas programowania i testowania. Kilka tygodni temu zebrałem to wszystko w k...
Mamy problem z szeroko pojętą jakością oprogramowania. My, czyli nasza cywilizacja. Wciąż nie jesteśmy w stanie stworzyć oprogramowania, które nie będzie zawierało błędów. Nie jesteśmy też w stanie wychwycić wszystkich błędów na etapie testowania. I nie, nie chodzi mi tu (tylko) o błędy związane z bezpieczeństwem. Skutki błędów mogą być zarówno spektakularne (np. eksplozja rakiety Ariane 5), jak i tragiczne (np. ofiary śmiertelne źle działającego sprzętu medycznego). Mogą też być ciekawe, ostatnio przecz...
http://msdn.microsoft.com/pl-pl/library/testy-obciazenia-w-visual-studio
blackfoot.pl, autor:Ostatnio wpadła mi w ręce książka The Art of Unit Testing: with Examples in .NET autorstwa Roy’a Osherove’a. Muszę przyznać, że mam nieco mieszane uczucia po jej przeczytaniu. Minusy: Książka liczy około 280 stron, ale czytając ją miałem wrażenie, że ta liczba jest mocno naciągnięta – olbrzymie marginesy, bardzo szeroka czcionka, dużo niezagospodarowanego miejsca itp. Samym formatowaniem można by było zaoszczędzić przynajmniej kilkadziesiąt stron – ile drzew mogłoby wciąż rosnąć! Pie...
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.
W ostatnim poście pisałem o testach integracyjnych typu top-down. Dzisiaj przyszedł czas na podejście bottom-up. Będziemy analizować testowanie systemu przedstawionego w wprowadzeniu. W podejściu bottom-up tester zaczyna od najniższych modułów – tych najbardziej oddalonych od punktów wejściowych, przeważnie znajdujących się w dolnych warstwach systemu. Ogromną zaletą metody jest redukcja wymaganych do przeprowadzenia testu obiektów mock. Niestety w podejściu należy tworzyć własne sterowniki. Przykładowe ...
Testy jednostkowe testują wyłącznie lokalne wykonywanie metod i jest nawet niewskazane aby testowane metody odnosiły się do zewnętrznych, zdalnych zasobów.Rozbudowane systemy są często rozproszone, działające na wielu komputerach oraz składających się z wielu modułów. Podstawowe pytanie brzmi: Jak sprawdzić czy utworzone moduły współpracują ze sobą? Otóż należy przeprowadzić testy integracyjne zgodnie z wybraną metodyką. Testy integracyjne tak jak testy funkcjonalne powinny być przeprowadzane na bieżąco...
Szybki quiz. Skąd wiesz, że Twoja aplikacja działa? Możliwe, że się kompiluje. Możliwe, iż wszystkie testy jednostkowe przechodzą. Możliwe też, że przeszła próbę w dziale QA. Możliwe, iż została szczęśliwie wdrożona na serwer produkcyjny bądź spakowana do instalera. Może nawet beta testerzy potwierdzili jej poprawność. Ale to nie oznacza, że aplikacja działa. Czy tak naprawdę użytkownicy rozumieją Twoją aplikację? Czy potrafią oni wyk...
Autor: Jakiś czas temu pisałem o TDD czyli o test driven development. Dzisiaj napiszę po co w ogóle bawić się w takie bezsensowne nadmiarowe rzeczy. Wikipedia definiuje to zagadnienie dosyć enigmatycznie: Test-driven development (TDD) jest techniką tworzenia oprogramowania zaliczaną do metodyk zwinnych (Agile). Pierwotnie była częścią programowania ekstremalnego (ang. extreme programming), lecz obecnie stanowi samodzielną technikę. Polega na wielokrotnym powtarzaniu kilku kroków:Najpierw programista pisz...
autor: Dzisiejszy wpis poświęcony będzie tematyce, którą powinienem był poruszyć już ładnych parę tygodni temu – testowaniu warstw dostępu do danych i logiki biznesowej. Zwlekałem z opisaniem tej części projektu, ponieważ planowałem zaprezentować również testy interfejsu użytkownika, których, koniec końców, wcale nie napisałem (pokusa oglądania aplikacji w akcji i sprawdzania wszystkiego własnoręcznie okazała się zbyt duża).
Architektura 5114 dni, 19 godzin, 23 minuty temu 80 źrodło rozwiń
Testy jednostkowe to proste testy pozwalające na sprawdzanie działania aplikacji na poziomie klas i metod. Ich celem jest wspomaganie pracy programisty. Testów jednostkowych nie należy traktować jak testów aplikacji, które należą do zupełnie innej kategorii. Ciekawą koncepcją jest TDD czyli test driven development. Wg. niej najpierw tworzone zostają testy aby dopiero później stworzyć kod. Dzięki takiemu podejściu zmuszamy umysł do przemyślenia kodu zanim ten zostanie stworzony. Największa moc drzemiąca ...
Ważnym problemem podczas wykonywania testów jednostkowych jest ich wzajemna niezależność. Zmiany wprowadzone w bazie danych przez jeden z testów nie powinny wpływać na wykonywanie się pozostałych testów. Jednym z rozwiązań było by usuwanie w każdym teście zmian które wykonuje on na bazie danych, ale jest to bardzo niewygodne...
Bazy danych i XML 5171 dni, 5 godzin, 36 minut temu 38 źrodło rozwiń
Autor: Jakiś czas temu przeprosiłem się z frameworkiem MsTest i zacząłem na powrót pisać testy z jego wykorzystaniem. Przedtem korzystałem z NUnit, jednak doszedłem do wniosku, że do moich potrzeb wystarczy framework dostarczony w komplecie z Visual Studio. Nie jestem zealotem jeżeli chodzi o testy jednostkowe, piszę proste, wybiórcze testy, którymi na pewno nie pokrywam 100% kodu. Czytałem na kilku stronach narzekania na framework MsTest. Jednak podchodziłem do nich dość sceptycznie. Wiadomo, pro...
Visual Studio 2010 zawiera wiele ciekawych, nowych cech. Dzisiaj zdecydowanie najbardziej urzekł mnie zaprogramowany test UI. Oto krótka prezentacja jego możliwości. Zacznijmy od nowego projektu testów od razu z wybraniem tego jednego............
Mityczne 100% pokrycia W środowisku deweloperskim wciąż żywy jest mit 100% pokrycia kodu testami jednostkowymi. Co gorsza, mit ten ma się równie dobrze (a może nawet lepiej?) wśród decydentów (kierowników, dyrektorów itp.). Celem poniższej notki jest pokazanie, jak bardzo naiwne jest podejście "100% pokrycia". Popatrzmy na następujący trywialny kod:
Testowanie obsługi zdarzeń oraz faktu ich wywołania jest niekiedy równie ważne co przetestowanie każdej innej integracji pomiędzy dwoma obiektami. Scenariusz jest na tyle specyficzny, że poświęcę mu osobną notkę.
Zapoznając się z tematyką testów jednostkowych napotykamy podział mocków na trzy grupy: Dynamic Mock, Strict Mock oraz Stub. Dziś pora na poruszenie tego tematu wraz z prezentacją jak je wykorzystać w Rhino Mocks.