Sens pisania testów dla aplikacji...

0

Hej,
to mój drugi temat, który ma mi pomóc w zrozumieniu zagadnień związanych z bardziej zaawansowanym programowaniem. Padło teraz na testy. Testy, testy. Wiem co to są testy i nawet mam kilka książek, które pokazują jak je pisać, ale dla mnie jeden element jest niejasny. (Uwaga: w książce o programowaniu web'owym robiliśmy testy jednostkowe dla sprawdzania czy aby na pewno jakiś guziczek działa...) Dlaczego ludzie piszą testy(mówię tutaj o sprawdzaniu samego kodu pod względem bug'ów), jeśli nie łatwiej jest sobie po prostu wyklikać w przeglądarce dany guziczek i sprawdzić co się dzieje ze stroną??? Dlaczego programiści poświęcają tyle czasu, aby sprawdzić coś co mogą sprawdzić sobie bez automatyzacji??? Czy są takimi leniami, że se otworzyć przeglądarki nie mogą i kliknąć dany guziczek a zarazem są tacy ambitni, że wszystko muszą obrócić w algorytm???
Proszę mi to wyjaśnić...

1

To wyobraź sobie, że masz tych guziczków 100 i przy zmianie kodu musisz sprawdzić je od nowa czy wszystkie działają. W rozbudowanych aplikacjach zmiana w jednym miejscu może spowodować popsucie się czegoś w innym miejscu. Dodatkowo implementując jakąś logikę nie musisz sprawdzać za każdym razem czy kod daje taki rezultat jak chcesz tylko odpalasz test.

Nie spotkałem się jeszcze z testowaniem przycisków. Najczęściej testuje się logikę.

6

Dokładnie - testy są pisane z lenistwa.
Potencjalnie każda zmiana w kodzie może coś zepsuć. Jak masz w zespole kilku ludzi i pracujecie miesiącami to załamałbyś się przeklikiwując aplikację po każdej zmianie.

0
jarekr000000 napisał(a):

Dokładnie - testy są pisane z lenistwa.
Potencjalnie każda zmiana w kodzie może coś zepsuć - jak masz w zespole kilku ludzi i pracujecie miesiącami to załamałbyś się przeklikiwując aplikację po każdej zmianie.

Czyli to sprawdza się tylko przy dużych projektach???
Kiedyś napisałem itemshop do Minecraft'a, na 2500 linijek brzydkiego PHP. Powinieniem go testować przy takiej skali???

0

Przy małych też się sprawdza. Dodając coś nowego testami sprawdzisz czy reszta działa nadal tak jak powinna. Testy też mówią o tym jak dana rzecz powinna działać.

0
anonimowy napisał(a):

Przy małych też się sprawdza. Dodając coś nowego testami sprawdzisz czy reszta działa nadal tak jak powinna. Testy też mówią o tym jak dana rzecz powinna działać.

Czyli jeśli apka jest na te 2500 linijek to opłaca się pisać takie testy??? I czy istnieją jakieś generatory (mówię tutaj jedynie o testach "guziczkowatych" i w przeglądarce), które generują testy zbierając info o kliknięciach??? Np. zczytując klasy i id z css???

0

Wyobraz sobie ze takich guziczkow masz 60, musisz teraz zmienic 3 z nich, ktore calkiem prawdopodobnie wpłyną na kilka innych guziczków, np na 10. Nie jestes tez pewny czy moze nie pominales zaleznosci z jakimis innymi guziczkami, wiec dla pewnosci przeklikasz wszystkie? Teraz wyobraz sobie ze guziczkow jest 6000

0
filemonczyk napisał(a):

Wyobraz sobie ze takich guziczkow masz 60, musisz teraz zmienic 3 z nich, ktore calkiem prawdopodobnie wpłyną na kilka innych guziczków, np na 10. Nie jestes tez pewny czy moze nie pominales zaleznosci z jakimis innymi guziczkami, wiec dla pewnosci przeklikasz wszystkie? Teraz wyobraz sobie ze guziczkow jest 6000

Chyba już rozumiem, ale czy istnieją jakieś takie generatory???

0

Testy zwracają się gdzieś tak około 40 roboczodnia. Czyli jak piszesz sam to po dwóch miesiącach docenisz. Jak w dziesięć osób to w piątek rano :-).
(Nie mam rzetelnych badań - to tylko odczucie).

6
  1. Wyobraź sobie że zamiast 2 podstron i 3 guzików masz system do bookowania lotów. Przeklikanie wszystkiego w tej aplikacji zajęłoby ci pewnie co najmniej kilka dni dla trywialnych przypadków. Pomyśl sobie ile rzeczy trzeba wypełnić jak szukasz i bookujesz lot a potem jeszcze checkin, zmiana rezerwacji, dokupywanie miejsc, bagażu, hotel... Automatyzuje sie po to, żeby to automat klikał.
  2. Regresja! Zwykle w trakcie pisania testu wszystko działa, ale każda zmiana w kodzie może coś popsuć. Trudno czasem przewidzieć co zepsujesz. Ty zrobiłeś zmianę która miała dotyczyć jednego guzika, ale może ktoś inny korzystał z tego samego kodu i teraz jego guzik nie działa? Testy mają cię chronić przed popsuciem czegoś co już działało.
0

Na upartego możesz nagrywać makra które później wyklikają to z jakimś selenium. Gdzieś słyszałem, nazwy nie znam więc nie podam.

0
Matisiek PL napisał(a):

Kiedyś napisałem itemshop do Minecraft'a, na 2500 linijek brzydkiego PHP. Powinieniem go testować przy takiej skali???

Powinieneś go przepisać żeby nauczyć się czegoś na własnych błędach, przy okazji pewnie się przekonasz czemu testy są przydatne.

Sens pisania testów jest zawsze gdy piszesz coś większego niż hello world. Czyli jakieś 99% tego co jest tworzone komercyjnie, a gdy piszesz dla siebie to dla własnej satysfakcji oraz rozwoju.

1

^^ Jak ja piszę dla siebie to staram się za wszelką cenę wszystko zautomatyzować bo uważam że ręczne wyklikiwanie trochę urąga godności developera. No tyle zarabiam,tyle się edukuje a tu tak po prostu klikać. A poza tym dzięki temu wiem jak w pracy mogę napisać taki automat sensownie i przyśpieszyć pracę :)

0

Wyobraź sobie, że wprowadziłeś zmiany w kodzie. Masz ochotę na kawę i peta, ale musisz przeklikać flow aplikacji, żeby się upewnić, że niczego nie popsułeś.
A teraz wyobraź sobie, że masz testy i również masz ochotę na kawę i peta. Zamiast przeklikiwać flow aplikacji, puszczasz testy, bierzesz kawę i idziesz na fajkę.
Robi różnicę, prawda? :)

0
S-cat napisał(a):

Wyobraź sobie, że wprowadziłeś zmiany w kodzie. Masz ochotę na kawę i peta, ale musisz przeklikać flow aplikacji, żeby się upewnić, że niczego nie popsułeś.
A teraz wyobraź sobie, że masz testy i również masz ochotę na kawę i peta. Zamiast przeklikiwać flow aplikacji, puszczasz testy, bierzesz kawę i idziesz na fajkę.
Robi różnicę, prawda? :)

Jaki normalny człowiek pali sam tytoń?
przecież to nic nie daje, w dodatku śmierdzi.

Tylko ludzie niedorozwinięci emocjonalnie palą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1