Aplikacje webowe - testy jednostkowe i integracyjne

Odpowiedz Nowy wątek
2016-06-18 23:36
0

Mówi się że testy jednostkowe powinny być główną częścią testów.
Tylko zastanawiam się jaki w tym jest sens troche w aplikacjach webowych. Weźmy na przykład aplikacje w Spring MVC.
I to mamy layery:
1) Baza Danych - encje,DAO
2) Serwisy
3)Kontrolery i ogólnie warsta HTTP

Czyste resty jednostkowe właściwie to można głównie przeprowadzać w warstwie logiki,np. za pomocą Mockito zamokować DAO no i robić te asercje itp.
Ale zasadniczo DAO też wypada przetestować no i w tym momencie to nie są już de fakto testy jednostkowe no bo podłączamy bazę danych...
Takie kontrolery to zasadniczo też nie testuje się jednostkowo...
Więc jaki jest sens mówienia o tych testach jednostkowych jak dużą część oprogramowania nie da się nią przetestować? No chyba że uznamy że ok. jeśli mamy bazę danych czy embadded czy po prostu taką na której mamy te rollbacki i zawsze wraca do pierwotnego stanu to teoretycznie jest to test integracyjny ale w praktyce bardzo blisko jednostkowemu?


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2016-06-18 23:48
0

W prawdziwym sofcie dao i kontrolery to mniej niż 5% aplikacji. Zresztą nie bardzo wiem co chcesz w nich testować bo zarówno jedno jak i drugie powinno być proste jak budowa cepa.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
u mnie sporo kontrolerów ma po 2k linijek kodu :D w domenie jedno a wyświetlać trzeba drugie, ktoś to musi przekształcać - caer 2016-06-20 00:05
@caer to się pisze odpowiednie serwisy ... - Shalom 2016-06-20 00:08
ale serwisy też nie mają testów więc wiele to nie da a roboty o wiele więcej. zresztą jak przetestować serwis który ma 20k linijek i może 10 metod? trzeba by wszystko kompletnie przepisać - caer 2016-06-20 00:10
@caer nie no jasne, lepiej zostawić spaghetti code bez testów :D Ja tu mówiłem o tym jak to wygląda w dobrym systemie. Jak ktoś jest idiotą i całą aplikacje zaklepie jako jedna metodę kontrolera to wcale nie znaczy że trudno testuje się kontrolery tylko że programista miał coś z głową ;) - Shalom 2016-06-20 00:18
Nie mówię że kontrolery się trudno testuję, mówię tylko że life happens :D Nie sądzę że jakbym się zastawił nogami i powiedział PMowi "od dzisiaj zero rozwoju dopóki nie przepiszemy tego syfu" to cokolwiek by z tego wyszło. - caer 2016-06-20 00:24

Pozostało 580 znaków

2016-06-18 23:51
0

Testy jednostkowe nie nadają się do wszystkiego. W zasadzie tylko i aż do testowania logiki i interakcji pomiędzy obiektami. Wszystko to co można oddzielić od środowiska uruchomieniowego. Pisane testów integracyjnych dla małego projektu (drogich) imo często nie ma sensu. Co innego na wielkich projektach, gdzie bez tego może się nie dać (czy moduły się spinają). Jak masz jakiś if w kontrolerze to można się zastanowić nad napisaniem do niego testu (interakcja warunkowa?). Wiadomo, im prostszy kontroler tym lepiej. To powinien być "głupi" dispatcher. W idealnym świecie kontroler nie powinien mieć żadnej logiki.

Jak łączysz się z bazą to testujesz integracyjnie. Tak samo jak piszesz klienta WebService.

edytowany 3x, ostatnio: margor90, 2016-06-18 23:54

Pozostało 580 znaków

2016-06-18 23:59
0

W prawdziwym sofcie dao i kontrolery to mniej niż 5% aplikacji.

O ile kontrolery to na ogół nie jest nic trudnego to jednak takie DAO może miec bardziej złożone zapytania które według mnie lepiej przetestować.
Wiadomo że nie chodzi o metody typu get yyy by id
W moim przypadku kontroler to na ogół pobrania danych z serwisu i zwrócenie ich w formie HttpResponseEntity :d


Nie pomagam przez PM. Pytania zadaje się na forum.
edytowany 2x, ostatnio: scibi92, 2016-06-19 00:08
To może lepiej testować WebService od razu wszystko? Kwestia utrzymywanie danych testowych jest problematyczna. Kiedyś tak robiłem. Ostatecznie zrezygnowałem, bo utrzymywanie danych kosztowało mnie więcej niż korzyści z posiadania takiego testu. - margor90 2016-06-19 00:09

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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