Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]dlaczego używać test-unit?
sruj
post 15.10.2015, 12:54:50
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.09.2015

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
Pyton_000
post 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.
Go to the top of the page
+Quote Post
sruj
post 15.10.2015, 14:22:15
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.09.2015

Ostrzeżenie: (10%)
X----


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ę.)
Go to the top of the page
+Quote Post
prz3kus
post 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 biggrin.gif
Go to the top of the page
+Quote Post
Damonsson
post 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ć.
Go to the top of the page
+Quote Post
sruj
post 15.10.2015, 21:23:06
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.09.2015

Ostrzeżenie: (10%)
X----


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.


Go to the top of the page
+Quote Post
Pyton_000
post 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ść.
Go to the top of the page
+Quote Post
phpion
post 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.
Go to the top of the page
+Quote Post
Pyton_000
post 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ć)
Go to the top of the page
+Quote Post
phpion
post 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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 03:53