Testy integracyjne Testwanie integracyjne (integratin testing) wyknywane jest w celu wykrycia błędów w interfejsach i interakcjach pmiędzy integrwanymi mdułami i systemami (sprzęt kmputerwy, system peracyjny). Definicja ISTQB: Testwanie wyknywane w celu wykrycia defektów w interfejsach i interakcjach pmiędzy mdułami lub systemami. Współczesne aplikacje składają się przeważnie z wielu współpracujących systemów, należy więc sprawdzić czy kmunikacja pmiędzy nimi nie jest zakłócna. Testy integracyjne wyknywane są p testach jednstkwych (Kiedy zbiór kmpnentów zstanie przetestwany, następnym krkiem jest upewnienie się, że interfejsy pmiędzy kmpnentami są zdefiniwane pprawnie i współdziałają ze sbą) i mgą bejmwać także testy wydajnściwe. Test dwójkwy (dubletwy) Test trójkwy (trypletwy) Test czwórkwy (kwadrupletwy) Zaleta: źródłem błędu jest prawdpdbnie statni ddany kmpnent Rzróżniamy dwa rdzaje testów integracyjnych: mdułwe umżliwia sprawdzenie czy dane pmiędzy mdułami są przekazywane pprawnie (definicja ISTQB: Testy wyknywane w celu wykrycia usterek w interfejsach i interakcjach pmiędzy integrwanymi mdułami) systemwe umżliwia sprawdzenie czy dane pmiędzy systemami są przekazywane pprawnie (definicja ISTQB: Testwanie integracji systemów i pakietów; testwanie interfejsów z rganizacjami zewnętrznymi, (np. Elektrniczna Wymiana Danych przez Internet.)). W przypadku gdy pdczas integracji brakuje pewnych elementów, kdu należy zastąpić je tak jak w przypadku testów mdułwych zaślepkami i sterwnikami. Wart zaplanwać testy integracyjne przed rzpczęciem prgramwania pnieważ wpłynie t na efektywnść testów. NA CZASOCHŁONNOŚĆ TESTOWANIA DECYDUJĄCY WPŁYW MA KOLEJNOŚĆ INTEGRACJI MODUŁÓW PODSTAWOWĄ TRUDNOŚCIĄ W TEJ FAZIE TESTOWANIA JEST LOKALIZACJA BŁĘDÓW Ze względu na klejnść integracji mdułów rzróżniamy 2 strategie testwania integracyjneg: pzime (integracja t budwanie klejnych warstw systemu, metdyka parta hierarchiczną dekmpzycję, łatwiejsze zarządzanie za cenę pminięcia aspektów funkcjnalnych) wstępujące
zstępujące hurtwe kanapkwe pinwe (integracja t knstruwanie klejnych mdułów funkcjnalnych systemu, jak najszybsza integracja i realizacja przypadków użycia) NAMIASTKI i STEROWNIKI Wyknywanie przypadku testweg dla kmpnentu lub grupy kmpnentów wymaga ich dizlwania d reszty systemu. W czasie testwania kmpnentu nie mżemy zignrwać jeg interakcji z systemem, (niektóre funkcje mają sens jedynie w kntekście interakcji). Knieczne jest więc stwrzenie iluzji, iż Kmpnent wciąż znajduje się w swym nrmalnym" śrdwisku. Odbywa się t pprzez namiastki i sterwniki.testwe Sterwnik testwy symuluje zachwanie tej części systemu, która wykrzystuje testwany kmpnent pprzez przekazywanie mu danych wejściwych i bsługiwaniu (najczęściej wyświetlaniu) trzymywanych wyników. Namiastka testwa t symulacja kmpnentów, z których krzysta testwany kmpnent. Kmpnenty wchdzące w skład namiastki testwej muszą mieć (w dłuższej perspektywie) API identyczne z API ich ryginałów, (identyczne sygnatury wszystkich metd). wykrzystywanych przez testwany kmpnent. Identycznść ta musi być zagwarantwana Zmiana kmpnentu znacza zmianę reprezentującej g namiastki. Implementwanie namiastek testwych nie jest zadaniem trywialnym. Nie zawsze bwiem wystarczająca jest prymitywna atrapa graniczająca swe działanie d wypisywania kmunikatów, że właśnie wywłana zstała ta czy inna jej metda. Wręcz przeciwnie, w większści sytuacji d namiastki testwej czekuje się knkretów W wielu przypadkach stwrzenie namiastki testwej jest tak trudne, że prściej użyć w tej rli ryginalnych kmpnentów. Zresztą, dla wielu kmpnentów dpier p ich ukńczeniu twrzne są sterwniki i namiastki testwe, a jeśli dany kmpnent implementwany jest w warunkach napięteg (lub przekrczneg) harmngramu, nie są ne twrzne wcale. Aby zapbiec tej niekrzystnej tendencji, wiele metdlgii prgramistycznych wymusza wręcz twrzenie namiastek i sterwników równlegle z budwaniem kmpnentu ryginalneg; ma t ten pzytywny efekt ubczny, że kmpnent mże być testwany na bieżąc, w trakcie twrzenia, a wiele jeg usterek mże być wykrywanych INTEGROWANIE POZIOME Testwanie pzime: hurtwe Każdy kmpnent z załżenia jest na swim miejscu Błędy występujące w interfejsach kmpnentów wykrywane są w bardz późnej fazie prcesu testweg Trudn jest kreślić miejsce w którym występuje defekt, czy przyczyna błędu leży w kmpnencie czy w interfejsie w razie wystąpienia usterki wszystkie kmpnenty są traktwane jak pdejrzane i ptencjalnie wadliwe.
Istnieje wyskie mżliwść niewykrycia krytycznych błędów, które mgą ujawnić się dpier w wersji prdukcyjnej systemu Trudn upewnić się czy wszystkie przypadki z pzimu testów integracyjnych są pkryte testami. ZALETA (JEDYNA ): NAMIASTKI I STEROWNIKI SĄ ZBĘDNE Testwanie pzime: wstępujące (bttm-up, d dłu d góry) Najniżej płżne kmpnenty testwane są jak pierwsze Sterwniki symulują kmpnenty płżne wyżej w hierarhii (jeszcze nieprzetestwane) Testwane mduły używane są d testwania wyżej płżnych kmpnentów Prces testwy jest kntynuwany d mmentu przetestwania kmpnentów znajdujących się na najwyższym pzimie ZALETA: łatwść identyfikacji miejsca (źródła) usterki: prgramista zna zasadę działania wszystkich niższych warstw ZALETA: namiastki są nieptrzebne WADA: interfejsy jak najwyższa warstwa rganizacji są testwane bardz późn, c mże być ksztwne Testwanie pzime: zstępujące (tp-dwn, d góry d dłu) Odwrtnść zstępująceg Mduły znajdujące się na najwyższym pzimie są testwane jak pierwsze Mduły znajdujące się w hierarchii pniżej, zastępwane/symulwane są przez namiastki (inaczej zaślepki, stubs) Testwane mduły używane są d testwania niżej płżnych kmpnentów Prces testwy jest kntynuwany d mmentu przetestwania kmpnentów znajdujących się na najniższym pzimie ZALETA: sterwniki są nieptrzebne WADA: ptrzeba za t dużej liczby namiastek testwych, zwłaszcza w przypadku dużej funkcjnalnści systemu (duża liczba metd implementwana z pzimu kmpnentów niskieg szczebla) Na pniższych rysunkach testwane są te same zależnści między pdsystemami, ale w innej klejnści A B C D E F G Rysunek 1 Testwanie wstępujące: kmpnenty E,F,G testwane są jednstkw, nastepnie przperwadzany jest test tripletwy B-E-F raz dubletwy D-G
A B C D E F G Rysunek 2 Testwanie zstępujące, najpierw testwany jest kmpnent A, a następnie przeprwadzane są trzy testy dubletwe płączeń A-B, A-C, A-D, a następnie kwadrupletw A-B-C-D Testwanie pzime: kanapkwe - płączenie zalet metdy wstępującej i zstępującej dekmpzycja na 3 warstwy (3 grupy warstw): górną ( krmka chleba, integracja zstępująca z warstwą śrdkwą, sterwnik dla warstwy śrdkwej) śrdkwą, dcelwą ( szynka, pełni rlę namiastki dla warstwy górnej i sterwnika dla warstwy dlnej ), dlną ( krmka chleba, integracja wstępująca z warstwą śrdkwą, namiastka dla warstwy śrdkwej) ZALETA: eliminuje ptrzebę twrzenia sterwników i namiastek dla bu skrajnych warstw ZALETA: mżliwść zrównleglenia testów ZALETA: wcześniejsze testwanie kmpnentów interfesju niż w przypadku testwania wstępująceg WADA: deprecjnuje warstwę śrdkwą pd kątem dkładneg przetestwania jej kmpnenetów (brak testów jednstkwych dla warstwy śrdkwej) Zmdyfikwane testwanie kanapkwe testwanie jednstkwe wszystkich kmpnentów przed jakąklwiek integracją warstw Etapy wstępne testwanie warstwy górnej przy użyciu namiastek symulujących warstwę śrdkwą, testwanie warstwy śrdkwej przy użyciu sterwników i namiastek zastępujących warstwy (dpwiedni) górną i dlną, testwanie warstwy dlnej, przy użyciu sterwników symulujących warstwę śrdkwą 2 testy integracyjne: testwanie warstwy górnej we współpracy z warstwą śrdkwą; mżna tu pnwnie użyć testów dla warstwy śrdkwej, wykrzystywanych w śrdkwym etapie fazy wstępnej,
testwanie warstwy dlnej we współpracy z warstwą śrdkwą; tu także mżna pnwnie użyć testów dla warstwy śrdkwej, wykrzystywanych w śrdkwym etapie fazy wstępnej. Pdbne zrównleglenia jak dla pdstawwej metdy kanapkwej ZALETA: testy integracyjne warstw górnej i dlnej (z udziałem namiastek i sterwników zastępujących warstwę śrdkwą) mgą być zrównleglne z testami jednstkwymi kmpnentów warstwy śrdkwej. ZALETA: skrócenie czasu testwania w prównaniu z integrwanie wstępującym i zstępującym WADA: kniecznść stwrzenia sterwników i namiastek dla kmpnentów warstwy śrdkwej, gdy te uczestniczą w testach jednstkwych INTEGROWANIE PIONOWE Dla daneg przypadku użycia budwany jest sukcesywnie kmplet jeg funkcjnalnści (stpniwe integrwanie kmpnentów składających się na interfejs użytkwnika, lgikę bizneswą, prgramwanie pśrednie (middleware), magazynwanie danych itp.. integrwanie pinwe jest czymś innym niż budwanie prttypu pinweg przy testwaniu użytecznści prttyp nigdy nie jest namiastką gtweg systemu i nigdy nie stanwi kandydatury d emisji. przyrstwe ewluwanie prjektu systemu, wiążące się z częstym rewidwaniem pdjętych wcześniej decyzji prjektwych.