Nie rozumiem sensu unit testów?

Nie rozumiem sensu unit testów?
Wyjątek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
0

@Shalom: Czepiłeś się przykładu. Jest wiele zmian funkcjonalności A które nie wpływają na funkcjonalność B, ale wymagają ponownego nagrania testu, jeśli użyte były obie. Dlatego potrzebne są Unit Testy wywołujące jedną funkcjonalność na raz.
A tam żadnych asercji nie było, po prostu eksportowano design do postaci tekstowej i porównywano ze wzorcem.

edit: Albo załóżmy, że funkcjonalność "EneDueLikeRabe" zaczęła crashować po zmianach. Ponieważ testy "Jakaśtam" jej używają, to też crashują i błąd jest przypisywany do działu od "Jakaśtam". Posiadanie dwóch funkcjonalności w jednym teście jest niewskazane.

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
0
Wyjątek napisał(a):

A tam żadnych asercji nie było, po prostu eksportowano design do postaci tekstowej i porównywano ze wzorcem.

Luksusy! Raz byłem w projekcie gdzie mieliśmy testy w postaci skryptu chyba w pythonie który szukał na ekranie zbitki pikseli o określonym schemacie i na tej podstawie klikał lub wysypywał test. Jakakolwiek zmiana koloru, marginesu czy fonta była niemożliwa

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Więc znów: błędna była granulacja asercji :) Jeśli masz dwie funkcje systemu, niezależne od siebie, to powinny je sprawdzać osobne testy, każdy ze swoją własna asercją.

edit:

Albo załóżmy, że funkcjonalność "EneDueLikeRabe" zaczęła crashować po zmianach. Ponieważ testy "Jakaśtam" jej używają, to też crashują i błąd jest przypisywany do działu od "Jakaśtam"

Opanie xD A jak ktoś popsuł np. konfiguracje weba czy security i wszystkie testy się położyły to gdzie przypiszą? ;) To jest problem gównianego Triage, bo ktoś kto przypisuje ticket powinien ogarnąć najpierw do kogo on należy.

piotrpo
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3303
1
Wyjątek napisał(a):

@Shalom: Czepiłeś się przykładu. Jest wiele zmian funkcjonalności A które nie wpływają na funkcjonalność B, ale wymagają ponownego nagrania testu, jeśli użyte były obie. Dlatego potrzebne są Unit Testy wywołujące jedną funkcjonalność na raz.

A tam żadnych asercji nie było, po prostu eksportowano design do postaci tekstowej i porównywano ze wzorcem.

Jeżeli się wywalały, to jednak jakaś asercja była. Problem w tym, że zrobiona na pałę, bo sprawdzająca dużo więcej niż było w wymaganiach funkcjonalnych. Gdyby zamiast sprawdzać czy wszystko jest zgodne z założeniami, wystarczyło odszukiwać odpowiedni wiersz w tym pliku i sprawdzać, czy jest OK. Jakakolwiek zmiana funkcjonalna, nawet nie objęta tym testem spowodowałaby jego wysypanie.
Miałem coś takiego w oprogramowaniu do renderowania map wpadały jakieś dane, na podstawie tych danych była generowana bitmapa i porównywana z zatwierdzoną. Waliło się przy prawie każdym dotknięciu kodu, a nawet nie trzeba było czasami nic dotykać, bo OpenGL nie jest w 100% deterministyczny, ale tam akurat nie mieliśmy możliwości zrobienia tego inaczej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.