2009-07-16 22 views
7

Często mogę zidentyfikować wiele obszarów, które są dobrze zakapsułkowane i łatwe do testowania jednostkowego, ale widzę też, że wiele kodu, w którym testowanie jednostkowe nie wydaje się działać tak dobrze - zazwyczaj dostęp do danych i interfejs użytkownika. Bez względu na to, jaką próbę testuję "testując" urządzenia, staram się stwierdzić, że w tych miejscach nie jest tylko dużym wysiłkiem tworzenie funkcjonujących testów jednostkowych, ale testy te są bardzo delikatne i nie sprawdzają zbyt wiele.Kiedy należy przerwać testowanie jednostkowe?

W którym momencie przestajesz i decydujesz, że korzyści z testowania jednostkowego nie są warte kosztów?

Odpowiedz

6

Kiedy możesz zapewnić lepszą wartość, wykonując coś innego.

+2

+1 - Priorytet według wartości biznesowej – Gishu

+0

+1, bez lepszej definicji, ale naprawdę trudny do oceny .. –

-1

Kiedy nie ma na to czasu w planie projektu i poświęca się czas na znalezienie sposobów testowania, a nie na pracę nad celem projektu.

+2

To spowodowałoby większe opóźnienia w najbliższej przyszłości. –

+1

W takich sytuacjach obowiązują takie terminy i cele. Stąd "Kiedy nie ma czasu na plan projektu" – NikolaiDante

+2

-1. Brak czasu w planie projektu powinien oznaczać, że negocjujesz czas, koszt lub zakres z interesariuszami - nie zmniejszając jakości. Wolałbym mieć mniej rzeczy o dobrej jakości niż wszystko, co nie działa przez większość czasu. – Gishu

0

Jeśli masz dostęp do niektórych danych na żywo, możesz użyć go do testu urządzenia. również możesz używać generatorów danych i danych losowych. Testy jednostkowe dają tylko pewien poziom pewności, że nie spowodują problemów w przyszłości. Jeśli jesteś przekonany, ze swoje badania można przerwać zespół testuje

3

I mają tendencję do testowania tylko modelu i danych wytrwałości. testowanie modelu jest obowiązkowe. Interfejs użytkownika (aplikacja na komputer, aplikacje internetowe, interfejs wiersza poleceń itp.) Jest trudny do sprawdzenia, więc testuję go tylko w rzadkich sytuacjach.

0

Powiedziałbym, gdy uzyskasz akceptowalny poziom zaufania. Podobnie jak w przypadku mojego projektu w pracy, jesteśmy pod tak ścisłymi wymaganiami co do czasu, że naprawdę muszę przetestować tylko niektóre części kodu (nie wszystkie) tylko po to, aby dać mi dobry poziom pewności.

2

Zazwyczaj testuję tylko model i kontroler. Testy jednostkowe są trudne do zastosowania w interfejsie użytkownika, zwykle wolę ręcznie testować aplikację.

Jeśli utworzenie testu kosztuje więcej czasu niż test ręczny za każdym razem, gdy wystąpi regresja, test jest bezużyteczny (łatwo powiedzieć, ale nie można ocenić ...).

1

Jeśli chcesz przerwać testowanie, wyłącz integrację lub testy end-to-end. Misko Hevery w Google wyjaśnia to naprawdę dobrze here.

"Unit Testing daje więcej Bang for złotówka"

jest najlepszy cytat, by wyjść z jego art.

Poza tym, gdy masz przyzwoity dostęp do kodu i obsługujesz kilka skrajnych przypadków twojego kodu, to jest to dobry czas na przerwanie testów jednostkowych.

0

Jeśli chodzi o testowanie dostępu do danych, próbowałeś próbnych testów symulujących odpowiedzi.

0

Podstawową regułą, którą podążę, jest to, że próba zbudowania testu jednostkowego jest czymś więcej niż wysiłkiem, aby kilkakrotnie ręcznie przetestować tę cechę przez ludzką pracę.

Jeśli przyjrzeć się projektom testowym w edycji Visual Studio Team dla testerów, istnieje taki element zwany "testem ręcznym", który jest w istocie dokumentem instrukcji mówiącym człowiekowi, jak przeprowadzić test i ręcznie przekazać to. Pewne rzeczy, jak wspomniałeś o testowaniu interfejsu użytkownika lub kodowanie w celu obejścia niejasnych lub dziwnych zachowań sprzętowych w podstawowej strukturze lub systemie operacyjnym lub sterowniku, są lepiej sprawdzane przez ludzkie oczy.

0

Jeśli korzystasz z TDD, zatrzymujesz testowanie jednostki, gdy wszystkie testy na liście testowej zakończyły się pomyślnie.

W przeciwnym razie przestajesz testować jednostki, gdy koszt znalezienia większej liczby błędów w testach jednostkowych przekracza koszt znalezienia ich w procesie kontroli jakości. i po osiągnięciu akceptowalnego poziomu pokrycia kodu poprzez połączenie wszystkich testów.

Powiązane problemy