Kiedy muszę zaimplementować nową funkcję lub naprawić błąd, zwykle próbuję odtworzyć sytuację za pomocą testu. Czasami spędzam około 3 godzin wymyślając urządzenia i pisząc test. Rzeczywista implementacja funkcji lub naprawa błędów zajmuje mniej niż 1 godzinę.
Czy ktoś jeszcze spędza co najmniej 3 razy dłużej na napisaniu testu w porównaniu do faktycznej implementacji funkcji lub naprawy błędu? Jaki jest dopuszczalny stosunek czasu spędzonego na pisaniu testu do pisania kodu?
unit-testing
Thierry Lam
źródło
źródło
Odpowiedzi:
Różni się w zależności od złożoności błędu lub funkcji. Przypominam sobie jeden projekt, który miał 1,5-tygodniowy kosztorys rozwoju ... i 3-miesięczny koszt testów. Zmiana kodu była niewielka, kilka linii tu i tam, ale wpłynęło to na wiele elementów systemu ubezpieczeniowego na wiele sposobów, więc musieliśmy ją bardzo dokładnie przetestować. Innym razem był błąd, który obejmował nawias w niewłaściwym miejscu. Zajęło 2 godziny, aby go znaleźć, 2 sekundy, aby go naprawić, ale około tygodnia przetestowałem dziesiątki scenariuszy, na które zmiana logiki mogła mieć wpływ.
Ogólnie rzecz biorąc, nie martwię się o stosunek czasu poświęcanego na kodowanie do czasu spędzanego na testowaniu, ponieważ po prostu nie ma sposobu na zachowanie dokładności. Uważam, że w niektórych projektach pojawia się stosunek względny projektu, który jest zwykle standardowy (do projektu), ale nawet wtedy może się zmienić później.
Poświęć tyle czasu, ile potrzeba, aby powiedzieć z pewnością, że kod działa poprawnie.
źródło
A może poświęcisz wystarczająco dużo czasu na pisanie testów, dopóki nie pokażesz, że funkcja działa zgodnie z przeznaczeniem lub błąd został poprawnie naprawiony.
Każda sytuacja będzie inna; nie może istnieć jakaś proporcja. Niektóre testy zajmą dziesiątą część czasu niż wdrożenie, inne zajmą setki razy więcej czasu.
źródło
Kiedyś zrobiłem przeżycie po wprowadzeniu testów jednostkowych w projekcie. Wynik: czas poświęcony na pisanie testów ponownie wyniósł około 40%, tak samo jak czas poświęcony na wdrożenie. Ale nie zamierzaliśmy tam uzyskać pełnego zasięgu i był to dobrze ugruntowany projekt o silnej strukturze i konwencjach.
źródło
Powiedziałbym, że kodowanie czasu w porównaniu z testami jednostkowymi zapisu czasu powinno być w przybliżeniu równe. Może czasem trochę więcej. Spójrz na ten artykuł na temat stosunku czasu SO poświęconego na kodowanie do testów jednostkowych
źródło
Czy liczysz dobrze? Aby dokładnie obliczyć, ile czasu spędzasz na testach, musisz napisać kod bez testu.
Jeśli napisanie testu zajęło Ci naprawdę trzy godziny, a napisanie kodu do jego ukończenia może zająć ponad 5 godzin, możesz naprawić ten sam błąd bez pisania testów.
Tak, bardzo często spędzam znacznie więcej czasu na teście niż sam kod poprawki.
źródło