[PHP]dlaczego używać test-unit? |
[PHP]dlaczego używać test-unit? |
15.10.2015, 12:54:50
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.09.2015 Ostrzeżenie: (10%) |
Oglądam kurs o test-unit w Symfony2.
Jestem przy końcu i ciągle nie widzę dlaczego miałbym to używać. Skoro to jest tak szerowo używane, to znaczy że coś do mnie nie dotarło. (google: why using test-unit nic nie wyświetla. widocznie to oczywiste) po co uzywać test unit, prosze o jakieś przykłady uzycia z życia. |
|
|
15.10.2015, 12:57:46
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Piszesz sobie feature. Dość skomplikowane. Testujesz organoleptycznie, działa (tak Ci się przynajmniej wydaje). Zostawiasz... Dziobiesz dalej. Nagle musisz zmodyfikować poprzedni fragment i wydaje Ci się że działa. Po jakimś czasie widzisz że coś nie działa.. co? Klikasz jak szalony nie wiedząc gdzie szukasz...
I teraz robisz phpunit ... i tadam. widzisz gdzie się popsuło. |
|
|
15.10.2015, 14:22:15
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.09.2015 Ostrzeżenie: (10%) |
dzięki za odpowiedź.
(jednak w google cośtam jest, to Bing ch.wy jak nie wiem nic nie znalazł. Jeszcze się nie zastanowiłem nad tym co napisałeś, ale bardzo chciałem spwostować to google a brzydko by było nie odnieść się do Twojej odpowiedzi. Także jakby ktoś chciał jeszcze coś napisać w temacie to bardzo proszę.) |
|
|
15.10.2015, 14:34:59
Post
#4
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) |
Pisząc swoje zdanie dostałbym pewnie lincz na forum
|
|
|
15.10.2015, 15:43:56
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Dostałbyś, chyba, że klepiesz strony firmowe, to niepotrzebne Ci testy jednostkowe. Nie wyobrażam sobie większego projektu bez testów jednostkowych dla newralgicznych funkcji. Nie mówię o samym TDD, bo tutaj to już można się pospierać.
|
|
|
15.10.2015, 21:23:06
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.09.2015 Ostrzeżenie: (10%) |
ok, zaczynam czaić i nawet mi się to podoba.
Bo w tym kursie to pan robił takie przykłady by sprawdzić poprawność funkcji, która mnoży dwie liczby. A rozumiem, że te testy robi się raczej dla takich szerszych grup funkcji, nie dla każdej byle durnej funkcji. Np że wynikiem route z jakimśtam parametrem będzie <h1> o treści xxx, drugi <p> o treści yyy itd. (czy przesadzam z tą ogólnością) Dobra, rozumiem, że im więcej tych testunitów tym więcej pracy ale dokładniej później wskaże miejsce błedu. |
|
|
16.10.2015, 08:20:02
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Unit Test jak nazwa wskazuje testuje jednostkę.
Czyli testowanie metody która robi 1000 rzeczy jest bez sensu. Owszem sprawdzi wejście - wyjście. Chodzi o to by testować możliwie małe metody które robią 1 konkretną czynność. |
|
|
16.10.2015, 09:52:37
Post
#8
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Mój przykład z życia. Niedawno robiłem funkcjonalność, która powinna skierować składane zamówienie do konkretnej hurtowni na podstawie jakiegoś tam kryterium. Napisałem testy (w sumie nieco ponad 20), przeszły bez problemu. Kilka dni później kryterium wyboru hurtowni zostało nieco bardziej rozbudowane. Zmieniłem więc kod, dopisałem kilka nowych testów pod nowe elementy kryterium. Po uruchomieniu testów wszystkie przeszły prawidłowo. Dzięki temu wiem, że nowe elementy kryterium działają prawidłowo, ale (co ważniejsze) stare elementy również działają prawidłowo (poprzednio napisane testy również zakończyły się powodzeniem). Owszem - początkowo "straciłem" czas na przygotowanie testów, ale odzyskałem go podczas wprowadzania zmian. Każde kolejne zmiany spowodują, że bilans czasowy wyjdzie mi na plus. Do tego nie zastanawiam się "czy aby na pewno nie popsułem starej funkcjonalności?".
Przy tym należy zaznaczyć, że testy muszą być przygotowane rzetelnie tj. na wszystkie możliwe przypadki, a nie tylko takie, jakie zakłada programista. Nie można przygotowywać testów pod kod, ot tak byle przeszły, bo wówczas mijają się one z celem. |
|
|
16.10.2015, 09:57:13
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Można pod kod jak najbardziej, ale trzeba też dopisywać dodatkowe absurdalne przypadki.
Czyli nie wystarczy napisać 1 assercji true i 1 false, tylko możliwie wiele różnych przypadków Dopisywanie testów do kodu też ma swoje plusy (zwłaszcza jak mamy gotowy kod i coś chcemy z nim zrobić) |
|
|
16.10.2015, 10:07:27
Post
#10
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Pisząc "pod kod" miałem na myśli takie testy, które wiemy, że kod spełni. Przykładowo: pisząc funkcję do dzielenia dwóch liczb podziel($a, $b) można napisać test dla $a=4 i $b=2. Wynik 2? Super. Działa. Testy przeprowadzone. A co z nietypowymi przypadkami (jak chociażby $b=0)? Pisząc testy musimy starać się "zagiąć" kod. Jeśli nam się to ("to" w sensie zagięcie kodu) nie uda to można powiedzieć, że kod działa prawidłowo.
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 03:53 |