W porządku… więc to doprowadza mnie do szału, ponieważ próbuję zachęcić zespół do napisania większej liczby testów. nie można określić, czy poniższy przykład jest uważany za integrację, czy funkcjonalny przypadek testowy.
Rozważmy następujące kwestie:
Mamy prostą aplikację internetową, która kieruje / ujawnia wiele źródeł JSON . Każde żądanie użytkownika wymaga, aby nasza aplikacja wysłała zapytanie do usługi zewnętrznej za pośrednictwem protokołu HTTP (na zapleczu) przed wykonaniem niektórych przekształceń danych, a następnie zwróceniem zserializowanej odpowiedzi JSON.
Korzystając z biblioteki innej firmy, jesteśmy w stanie rejestruje każdą unikalną interakcję HTTP, która ma miejsce na zapleczu i zapisuje ją w systemie plików. Te nagrania są następnie „odtwarzane”, co pozwala na traktowanie wyników zapytań jako deterministycznych podczas testowania.
Mój przypadek testowy zawiera pojedyncze stwierdzenie. To tylko ciąg znaków, który zawiera oczekiwaną odpowiedź JSON dla pojedynczego źródła. Po zainicjowaniu naszej aplikacji – pozwalamy jej skierować żądanie przed przechwyceniem odpowiedzi i porównaniem jej z oczekiwanym JSON.
1) Czy jest to test funkcjonalny czy test integracji?
2) Jeśli działa, to jaka dokładnie jest różnica między „Testowaniem integracyjnym po Wielkim Wybuchu” a testowaniem funkcjonalnym?
Odpowiedź
1) Czy to jest test funkcjonalny czy test integracji?
Funkcjonalne testowanie i testowanie integracyjne to klasyfikacje testów i nie wykluczają się wzajemnie.
W tym przypadku są to oba. Testy integracyjne są z definicji każdym testem, który testuje więcej niż jeden komponent. Może to być niski poziom do testowania dwóch klas, które współpracują ze sobą, lub mogą to być testy, które testują cały system jako całość.
Testy funkcjonalne to testy potwierdzające daną funkcję systemu. Więc jeśli mam wymaganie ” system utrwala obiekt użytkownika w bazie danych ”, test funkcjonalny mógłby zweryfikować to wymaganie poprzez uruchomienie systemu, zapisanie użytkownika, zatrzymanie systemu, ponowne uruchomienie i sprawdzenie, czy użytkownik istnieje i nie zmienił się.
Jeśli piszesz w przypadku testów ze specyfikacji wymagań lub historyjek użytkowników nazwałbym je „testami funkcjonalnymi”, ale są one również z natury klasyfikowane jako testy integracyjne.
2) Jeśli działa, to jaka dokładnie jest różnica między „Testowaniem integracyjnym po Wielkim Wybuchu” a testowaniem funkcjonalnym?
Z mojego zrozumienia „wielki wybuch” testy integracyjne ”to testy integracyjne, w ramach których wszystkie komponenty systemu są integrowane, a następnie testowane. Celem tego testu jest upewnienie się, że wszystkie komponenty są poprawnie zintegrowane i aplikacja może się uruchomić. Wadą tego rodzaju testowania jest to, że niepowodzenie przypadku testowego daje bardzo mały kierunek, gdzie jest błąd, więc ważne jest, aby mieć również testy integracji na niższym poziomie.
Twoje testy funkcjonalne będą prawdopodobnie również zintegrujesz wszystkie komponenty w systemie przed testowaniem. Ale chociaż testy integracyjne wielkiego wybuchu mogą wyglądać podobnie, ponieważ cały system jest uruchamiany, są one koncepcyjnie różne.