Zpo-3-wyk-Slajd36: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 1: Linia 1:
==Testowanie obiektów z zależnościami==
==Testowanie z użyciem obiektów zastępczych==


[[Image:zpo-3-wyk-Slajd36.PNG|Testowanie obiektów z zależnościami]]
[[Image:zpo-3-wyk-Slajd36.PNG|Testowanie z użyciem obiektów zastępczych]]




Typowy proces testowania jednostkowego, w którym obiekt testowany wymaga pewnego środowiska, polega na wykonaniu następujących kroków
Rozwiązaniem jest zastąpienie dla potrzeb przypadku testowego obiektu zależnego przez obiekt zastępczy (ang. ''mock'' ''object'' ). Obiekty zastępcze są pod względem typu identyczne jak obiekty zależne i są zamiennikami wystarczającymi dla potrzeb uruchomienia testu.
# Utworzenie instancji obiektu testowanego przez klasę testującą
# Uzyskanie referencji do obiektów zależnych niezbędnych do utworzenia/użycia obiektu testowanego. Może to polegać na bezpośrednim utworzeniu tego obiektu bądź jego wyszukaniu (np. w katalogu JNDI), lub też uruchomieniu oprogramowania dostarczającego tego środowiska (np. serwera aplikacji)
# Wywołanie przypadku testowanego, który wywołuje metody w obiekcie testowanym


Jednak taka procedura jest niezupełnie zgodna z ideą testowania jednostkowego. W tym przypadku testom poddawany jest nie tylko sam obiekt testowany, lecz także wszystkie jego zależności. Powoduje to, że błąd znaleziony w teście może w rzeczywistości wynikać z obiektu testowanego lub jego zależności, które przecież aktualnie nie są testowane. Niezależnie od tego, nie do zaakceptowania jest sytuacja, w której dla potrzeb każdego przypadku testowego będzie uruchamiany serwer aplikacji, którego rozruch zajmuje dłuższy czas.
W przypadku pokazanym na rysunku, obiekt połączenia z bazą danych jest zastąpiony przez obiekt zastępczy. Obiekt ten nie wykonuje żadnej operacji związanej z bazą danych, nie łączy się z nią ani nie wykonuje zapytań. Jego rola ogranicza się do naśladowania obiektu zależnego w takim tylko zakresie, jaki jest niezbędny do wykonania przypadku testowego.


Celem testowania jednostkowego jest wyizolowanie obiektu testowanego od środowiska. Jednak jak osiągnąć ten cel, gdy obiekt ten wymaga spełnienia zależności?
W stosunku do tradycyjnej procedury testowania, zmieniony jest krok 2. Zależności są spełniane nie przez obiekt testowany, ale przez klasę testującą, która przekazuje obiektowi testowanemu instancje obiektów zastępczych.
 
Co ważne, obiekt zastępczy NIGDY nie zastępuje obiektu testowanego, a jedynie jego zależności. Celem jest przecież sprawdzenie, czy obiekt testowany zachowuje się poprawnie, więc użycie zamiast niego obiektu zastępczego nie ma sensu.




[[zpo-3-wyk-Slajd35 | << Poprzedni slajd]] | [[zpo-3-wyk-toc|Spis treści ]] | [[zpo-3-wyk-Slajd37 | Następny slajd >>]]
[[zpo-3-wyk-Slajd35 | << Poprzedni slajd]] | [[zpo-3-wyk-toc|Spis treści ]] | [[zpo-3-wyk-Slajd37 | Następny slajd >>]]

Aktualna wersja na dzień 21:54, 4 lis 2006

Testowanie z użyciem obiektów zastępczych

Testowanie z użyciem obiektów zastępczych


Rozwiązaniem jest zastąpienie dla potrzeb przypadku testowego obiektu zależnego przez obiekt zastępczy (ang. mock object ). Obiekty zastępcze są pod względem typu identyczne jak obiekty zależne i są zamiennikami wystarczającymi dla potrzeb uruchomienia testu.

W przypadku pokazanym na rysunku, obiekt połączenia z bazą danych jest zastąpiony przez obiekt zastępczy. Obiekt ten nie wykonuje żadnej operacji związanej z bazą danych, nie łączy się z nią ani nie wykonuje zapytań. Jego rola ogranicza się do naśladowania obiektu zależnego w takim tylko zakresie, jaki jest niezbędny do wykonania przypadku testowego.

W stosunku do tradycyjnej procedury testowania, zmieniony jest krok 2. Zależności są spełniane nie przez obiekt testowany, ale przez klasę testującą, która przekazuje obiektowi testowanemu instancje obiektów zastępczych.

Co ważne, obiekt zastępczy NIGDY nie zastępuje obiektu testowanego, a jedynie jego zależności. Celem jest przecież sprawdzenie, czy obiekt testowany zachowuje się poprawnie, więc użycie zamiast niego obiektu zastępczego nie ma sensu.


<< Poprzedni slajd | Spis treści | Następny slajd >>