Rozwój oparty na testach i doskonalenie umiejętności testowania białych skrzynek

9

Jestem programistą Java klasy podstawowej, prosto ze szkoły. Mam dobrą wiedzę i doświadczenie z J2SE. Czy ktoś może mi doradzić, jak poprawić lub dostroić moje umiejętności, aby zostać testerem białych skrzynek Java? Mile widziany szeroki zakres danych wejściowych.

A czym jest rozwój oparty na testach?

użytkownik892871
źródło
Dlaczego nie przetestować również czarnej skrzynki?
Martijn Verburg,
@Martijn, biorąc pod uwagę tło, najprawdopodobniej z powodu problemów technicznych związanych z testowaniem whitebox. Ponadto, chociaż techniki czarnej skrzynki są bardzo przydatne dla programistów, ludzie o dobrych cechach dla programistów nie robią dobrych testerów czarnej skrzynki, jesteśmy zbyt ciekawi i możemy się niecierpliwić. Wiem, że tak.
StuperUser

Odpowiedzi:

9

Test Driven Development (TDD) i jego rozszerzeni kuzyni, Acceptance TDD (ATDD) i Behavior Driven Development (BDD) to przydatne techniki do nauki jako tester w ekosystemie Java. Skupię się na TDD, gdy szukasz testów białych skrzynek.

Co to jest TDD? - U podstaw leży praktyka pisania testu zakończonego niepowodzeniem (czerwony), przejścia testu przez napisanie implementacji (zielony), a następnie przefaktoryzowanie. Wikipedia Artykuł jest wystarczającym miejscem, aby rozpocząć, aby dowiedzieć się więcej informacji. Ale temat jest obszerny, polecam przeczytanie niektórych znanych książek w tej przestrzeni, takich jak Test Driven Development przez Przykład i Efektywna praca ze starszym kodem . Wrzucę też bezwstydną wtyczkę do rozdziału TDD w The Well-Grounded Java Developer

W ekosystemie Java oznacza to, że chcesz się nauczyć:

  1. JUnit biblioteka i / lub TestNG biblioteka.
  2. Kpiąca biblioteka, taka jak Mockito lub JMock
  3. Narzędzie do testowania obciążenia służące do ataku na kod - JMeter
  4. Pojęcie wstrzykiwania zależności (forma inwersji kontroli)

A potem ćwiczyć, ćwiczyć, ćwiczyć, ćwiczyć. Dobre testery białych skrzynek Java są bardzo rzadkie, najlepsze mają pisemne testy z szerokim zakresem baz kodu.

HTH na początek!

Martijn Verburg
źródło
Są to również przydatne techniki uczenia się jako programista w ekosystemie Java. Jak rozumiem, testerzy powinni przeprowadzić testy czarnej skrzynki.
Tom
1

Junit jest jedną z najlepszych platform do testowania jednostek dla języka programowania Java. Jest to platforma open source do pisania i uruchamiania powtarzalnych testów.

Swagatika
źródło
1

Zwykle nie lubię cytować Wikipedii, ale informacje w tym artykule wydają się wystarczająco bezpieczne ...

http://en.wikipedia.org/wiki/Test-driven_development

Zasadniczo w kategoriach laickich jest to pierwsze podejście do tworzenia oprogramowania, w którym testy jednostkowe są najpierw projektowane i pisane z myślą o przypadkach użycia, a następnie następuje ciężki rozwój, aby pomóc przejść testy jednostkowe.

wałek klonowy
źródło
0

Nie jestem pewien, czy moja sugestia zostanie uznana za narzędzie do testowania białych skrzynek, ale możesz także spojrzeć na dbUnit dla projektów opartych na bazie danych i Selenium do testowania w Internecie (np. Kontrola elementów, które powinny istnieć w oparciu o niektóre wyniki).

Bob Santos
źródło
0

Pytanie odnosi się konkretnie do „testów białych skrzynek”. To tutaj twoje testy mają dogłębną wiedzę na temat wewnętrznej struktury twojego kodu i potwierdzają zachowanie na każdym kroku, a nie tylko wejście / wyjście / efekt uboczny (testowanie czarnej skrzynki). Chociaż JUnit doskonale nadaje się do obu tych zadań, potrzebujesz dodatkowych dodatkowych ram, aby to zrobić w kontekście testu jednostkowego.

EasyMock i JMock to dobre ramy do tego celu. Mam tendencję do faworyzowania JMocka.

Ryzykując rozpoczęcie debaty OT, powinieneś dokładnie przemyśleć konsekwencje testów białej skrzynki. Testy białych skrzynek są ściśle powiązane z twoim kodem (oczywiście), a jeśli nie są używane ostrożnie, kpiące ramy mogą powodować, że twoje testy są dość skomplikowane, trudne do odczytania i wydają się bardziej kruche podczas refaktoryzacji.

Zwykle trzymam się mieszanki obu. Gdziekolwiek to możliwe, testy czarnej skrzynki i testy białej skrzynki oszczędnie stosowane do bardziej ryzykownego / bardziej skomplikowanego kodu.

Oczywiście powyższe frameworki mogą być również używane w testach czarnej skrzynki, w których liczba klas przyczyniających się (wstrzykiwanych) jest duża, a proste stubowanie staje się nieporadne.

Odnośnie TDD - jest to przede wszystkim poprawa projektu do pisania kodu, a nie po prostu sposób pisania testów. Testy, które przeprowadziłeś na końcu, są ważnym rezultatem, ale ponadto podejście ma na celu ulepszenie projektu i struktury Twojej aplikacji.

rupjones
źródło