Czy testy integracyjne wykorzystują symulacje?

24

Obecnie jestem na zajęciach z zakresu testowania oprogramowania, gdzie w ramach naszego projektu semestralnego musimy przeprowadzić na nim wiele rodzajów testów, takich jak testy jednostkowe i testy integracyjne. Do testowania integracji profesor powiedział, że do naszych testów integracji używa fałszywych bibliotek i fałszywych bibliotek (takich jak EasyMock i Mockito). Jestem jednak dość zagubiony. Testy integracyjne to testowanie poza klasami, modułami, usługami itp. Dlaczego mocki i kody pośredniczące byłyby odpowiednie do użycia w testach integracyjnych, jeśli testujesz wiele klas i usług?

TheLegendOfCode
źródło
8
Testy „integracyjne” i „jednostkowe” nie są powszechnie uzgodnione na warunkach. Najlepiej zapytaj profesora, jak dokładnie zdefiniowali te warunki.
RubberDuck
1
Tylko komentarz. Test integracji nie polega na testowaniu zależności. Chodzi o przetestowanie poprawnej integracji kodu z zależnościami (wywołania, reakcja i obsługa błędów itp.).
Laiv

Odpowiedzi:

25

Jeśli masz funkcjonalność, która dotyka kilku komponentów zewnętrznych, możesz wyśmiewać wszystkie oprócz jednego, aby wyizolować i przetestować określony komponent. Załóżmy na przykład, że masz funkcję, która wywołuje usługę internetową, a następnie robi coś z bazą danych na podstawie wyników. Możesz napisać trzy testy integracyjne:

  1. test, który wyśmiewa wywołanie usługi internetowej, ale obejmuje rzeczywistą łączność z bazą danych.
  2. test, który wykonuje prawdziwe wywołanie usługi internetowej, ale używa sztucznej łączności z bazą danych.
  3. test, który wykonuje prawdziwe wywołanie usługi internetowej i obejmuje prawdziwe połączenie z bazą danych.

Jeśli uruchomisz wszystkie trzy testy, a 1 i 3 się nie powiodą, istnieje duża szansa, że ​​w kodzie może działać błąd, który działa z bazą danych, ponieważ jedynym pozytywnym testem był test wykorzystujący próbną łączność z bazą danych.

Ogólnie rzecz biorąc, testy integracyjne nie wykorzystują próbnych, ale czasami zrobiłem coś takiego.

FrustratedWithFormsDesigner
źródło