Testowanie scalania Maciek Osiński Tomek Wysocki Seminarium Bazy Danych Testowanie scalania p.1/93
Testowanie scalania Pojęcia i definicje Uwagi o testowaniu Testowanie scalania Wady scalenia Wzorce scalania Zakres, zastosowania Testowanie scalania p.2/93
Pojęcia i definicje Składowa, system, interfejsy System stabilny Przyrost Test na dym Namiastka, pośrednik, pilot Generowanie konstrukcji, konstrukcja Konfiguracja testu Pokrycie scalenia Testowanie scalania p.3/93
Rodzaje testów: Testowanie składowych Testowanie systemu Testowanie współdziałania składowych Testowanie scalania wykrywanie wad składowych, powodujących awarie pomiędzy nimi Testowanie scalania p.4/93
Testowanie scalania Na których składowych należy się skupić w teście scalania? W jakiej kolejności będą sprawdzane interfejsy składowych? Której metody projektowania testu powinno się użyć do wypróbowania każdego z interfejsów? Testowanie scalania p.5/93
Plan testowania scalania Jakie przyrosty konstruowane są główne? Na których interfejsach składowych będzie skoncentrowane scalanie? W jakiej kolejności będą testowane składowe i interfejsy? Które namiastki i piloty należy opracować? Które wzorce zostaną użyte? Kiedy testowanie scalania uznamy za zakończone? Testowanie scalania p.6/93
Testowanie przyrostowe Systematyczne testowanie interfejsów Awarie z reguły w nowych składowych Automatyzacja, zarządzanie konfiguracją Wymaga namiastek, pilotów, powtarzalnych zestawów testów Proces, nie zdarzenie czy okres Testowanie scalania p.7/93
Wady scalenia Kontrola konfiguracji lub wersji Funkcje pominięte, zachodzące na siebie lub w konflikcie Zła lub niespójna struktura danych Naruszenie integeralności pamięci globalnej lub bazy danych Wołanie złej metody omyłka w kodzie lub nieoczekiwane wiązanie Testowanie scalania p.8/93
Wady scalenia Komunikat klienta narusza warunki początkowe lub sekwencyjne serwera Związanie komunikatu ze złym obiektem (polimorfizm) Złe parametry lub niepoprawne wartości Złe przydzielanie lub zwalnianie pamięci Złe wersje maszyny wirtualnej, pośrednika ORB, usług OS Rywalizacja o zasoby Testowanie scalania p.9/93
Wzorce scalania Metoda Big Bang Wstępujące Zstępujące Współpracy Szkieletowe Testowanie scalania p.10/93
Wzorce scalania Warstwowe Klienta i serwera Usług rozproszonych Częste Testowanie scalania p.11/93
Metoda Big Bang Jest przydatna w niewielu, ograniczonych okolicznościach. Wszystko naraz. Zastosowanie małe systemy, małe zmiany. Testowanie scalania p.12/93
Metoda Big Bang strategia Brak testowania scaleń przyrostowych. Zestaw testów jest aplikowany do całego tworzonego systemu. Testy są tworzone w oparciu o wzorzec testu wg powinności. Testowanie scalania p.13/93
Metoda Big Bang Testowanie scalania p.14/93
Metoda Big Bang Kryteria wejściowe Wszystkie składowe przeszły testy w swoich zakresach. Maszyna wirtualna, która ma być użyta w środowisku testu jest stabilna. Kontrole w zakresie fizycznym, funkcjonalnym i środowiskowym nie ujawniły anomalii. Testowanie scalania p.15/93
Metoda Big Bang Kryteria wyjściowe Zestaw testów przechodzi. Testowanie scalania p.16/93
Metoda Big Bang Wady i zalety Big Bang często zawodzi i utrudnia rzeczywiste znalezienie przyczyn błędów. Pomimo tego, iż test przechodzi wiele wad interfejsu może pozostać ukrytych. W sprzyjających okolicznościach może szybko zakończyć testowanie niewielkim kosztem. Testowanie scalania p.17/93
Scalanie wstępujace Inaczej Bottom-Up. Dodawanie składowych w kolejności użycia. Wieloetapowe weryfikowanie interfejsów ściśle powiązanych składowych. Zastosowania przyrostowo opracowywane jednostki systemu. Testowanie scalania p.18/93
Scalanie wstępujace strategia Model testu: Budowa drzewa zależności. Opracowanie zestawu testów powinności każdej składowej. Uwzględnienie podskładowych. Testowanie scalania p.19/93
Scalanie wstępujace Testowanie scalania p.20/93
Scalanie wstępujace Testowanie scalania p.21/93
Scalanie wstępujace Testowanie scalania p.22/93
Scalanie wstępujace Testowanie scalania p.23/93
Scalanie wstępujace Testowanie scalania p.24/93
Scalanie wstępujace Kryteria wejściowe Maszyna wirtualna, która ma być użyta w środowisku testu jest stabilna. Scalane składowe spełniają kryteria wyjściowe w obrębie testów składowych. Kontrole w aspekcie fizycznym, funkcjonalnym i środowiskowym nie wykazały anomalii, które zaburzyłyby testowanie scalenia. Testowanie scalania p.25/93
Scalanie wstępujace Kryteria wyjściowe Każda pilotowana składowa spełnia kryteria wyjściowe swojego wzorca testu. Interfejs do każdej podskładowej został wypróbowany przynajmniej raz. Testowanie jest zakończone, gdy wszystkie składowe z poziomu korzenia przechodzą pomyślnie swoje testy. Testowanie scalania p.26/93
Scalanie wstępujace Wady: Duża ilość pilotów. Poprawianie testów i wtórne testowanie. Ograniczone testowanie interakcji. Późne testowanie krytycznych interfejsów. Testowanie scalania p.27/93
Scalanie wstępujace Zalety: Testowanie i scalanie można rozpocząć zaraz po ukończeniu dowolnej ze składowych na poziomie liści. Nie ogranicza testowalności. Redukuje namiastkowanie. Testowanie scalania p.28/93
Scalanie zstępujace Inaczej Top-Down. Dodawanie składowych wg hierarchii sterowania. Wieloetapowe weryfikowanie interfejsów w kolejności narzucanej przez sterowanie. Zastosowania budowanie środowiska ramowego. Testowanie scalania p.29/93
Scalanie zstępujace strategia Model testu: Budowa diagramu współpracy, diagramu następstw lub mapy stanów. Opracowanie zestawu testów powinności każdej składowej. Można wykorzystać wzorzec testu klasy modalnej lub testu maszyny trybów. Zestaw testów oparty na powinnościach w obrębie systemu. Testowanie scalania p.30/93
Scalanie zstępujace Testowanie scalania p.31/93
Scalanie zstępujace Testowanie scalania p.32/93
Scalanie zstępujace Testowanie scalania p.33/93
Scalanie zstępujace Testowanie scalania p.34/93
Scalanie zstępujace Testowanie scalania p.35/93
Scalanie zstępujace Kryteria wejściowe Maszyna wirtualna, która ma być użyta w środowisku testu jest stabilna. Scalane składowe spełniają kryteria wyjściowe w obrębie testów składowych. Kontrole w aspekcie fizycznym, funkcjonalnym i środowiskowym nie wykazały anomalii, które zaburzyłyby testowanie scalenia. Testowanie scalania p.36/93
Scalanie zstępujace Kryteria wyjściowe Każda pilotowana składowa spełnia kryteria wyjściowe swojego wzorca testu. Interfejs do każdej podskładowej został wypróbowany przynajmniej raz. Testowanie jest zakończone, gdy konstrukcja zawierająca wszystkie składowe z poziomu liści przechodzi pomyślnie zestaw testów w obrębie systemu. Testowanie scalania p.37/93
Scalanie zstępujace Wady: Dużo namiastek. Przekodowywanie namiastek. Coraz trudniejsza kontrola spójności. Zależność namiastek od implementacji. Coraz trudniejsze testowanie dalszych warstw. Późne testowanie współdziałania wszystkich składowych na poziomie systemu. Testowanie scalania p.38/93
Scalanie zstępujace Zalety: Można szybko rozpocząć testowanie i scalenie. Już test pierwszego etapu może wykazywać całościową funkcjonalność. Mały koszt tworzenia pilotów. Minimalizowanie ryzyka zatwierdzenia niestabilnego interfejsu. Testowanie scalania p.39/93
Scalanie współpracy Scalanie i testowanie stosownie do rodzajów współpracy Ciągi współpracy Zastosowania np. wątki przetwarzania czujnik-sterownik-aktywator Testowanie scalania p.40/93
Scalanie współpracy strategia Budowa drzewa zależnpści testowanego systemu. Wybór kolejności elementów współpracy Opracowanie zestawu testów dla rodzaju współpracy Testowanie kolejnych rodzajów współpracy Testowanie scalania p.41/93
Scalanie współpracy strategia Metody wyboru kolejności elementów współpracy: od najprostszych do najtrudniejszych od wymagających najmniej namiastek jeżeli są ograniczenia sekwencyjne, to wg kolejności przejść od największego ryzyka Testowanie scalania p.42/93
Scalanie współpracy Testowanie scalania p.43/93
Scalanie współpracy Testowanie scalania p.44/93
Scalanie współpracy Testowanie scalania p.45/93
Scalanie współpracy Kryteria wejściowe Stabilna maszyna wirtualna Składowe współpracy operatywne w minimalnym stopniu Brak anomalii w zakresie fizycznym funkcjolanym i środowiska Testowanie scalania p.46/93
Scalanie współpracy Kryteria wyjściowe Każdy przetestowany rodzaj współpracy spełnia kryteria wyjściowe swojego wzorca. Wszystkie komunikaty składowych i między nimi w systemie zostały wypróbowane. Testowanie scalania p.47/93
Scalanie współpracy Wady Wewnętrzne zależności współpracy mogą nie mieć modeli. Możliwość pominięcia błędów interfejsu. Znamiona met. Big Bang. Namiastkowanie. Duża odległość pilota i składowych niższego poziomu. Trudności w równoległym prowadzeniu prac. Testowanie scalania p.48/93
Scalanie współpracy Zalety Pokrycie w niewielu przebiegachtestowych. Wtórna używalność zestawów testów. Mała załamywalność zestawów testów. Stosunkowo szybkie rezultaty. Minimalizacja kosztu utworzenia pilota. Testowanie scalania p.49/93
Scalanie szkieletowe Łączy w sobie metody: Big Bang, scalanie wstępujące i scalanie zstępujące. Stosuje się, gdy system użytkowy nie może działać bez szkieletu. Zastosowania np. aplikacje systemowe Testowanie scalania p.50/93
Scalanie szkieletowe strategia Analiza systemu wyodrębnienie: sterowania, szkieletu i podsystemów testowanie z osobna składowych szkieletu scalanie zstępujące sterowania Testowanie scalania p.51/93
Scalanie szkieletowe strategia scalenie szkieletu met. Big Bang próba scalenia przy użyciu pilota scalanie sterowania i szkieletu met. Big Bang zstępujące zastępowanie namiastek implementacjami w dalszych cyklach scalanie częste Testowanie scalania p.52/93
Scalanie szkieletowe Testowanie scalania p.53/93
Scalanie szkieletowe Testowanie scalania p.54/93
Scalanie szkieletowe Testowanie scalania p.55/93
Scalanie szkieletowe Testowanie scalania p.56/93
Scalanie szkieletowe Testowanie scalania p.57/93
Scalanie szkieletowe Kryteria wejściowe Architektura systemu i interfejsów zaprojektowana i przejrzana Szkielet i aplikacja mają ten sam rozmiar i złożoność Testowanie scalania p.58/93
Scalanie szkieletowe Kryteria wyjściowe Wszystkie składowe spełniają kryteria wyjściowe zastosowanego wzorca testu. Każdy interfejs został wypróbowany. Cały przyrost przechodzi testy w obrębie systemu. Testowanie scalania p.59/93
Scalanie szkieletowe Wady analiza musi być naprawdę staranna trzeba tworzyć i piloty i namiastki Testowanie scalania p.60/93
Scalanie szkieletowe Zalety łagodzi niedogodności scalania wstępującego i zstępującego scalanie zstępujące tylko na górnych poziomach scalanie wstępujące w podsystemach Big Bang poprzedzone testowaniem składowych szkielety są lepsze niż symulatory Testowanie scalania p.61/93
Scalanie warstwowe Model warstwowy Interfejsy urządzeń, urządzenia wbudowane Działanie w czasie rzeczywistym Zastosowania np. stosy protokołów Testowanie scalania p.62/93
Scalanie warstwowe strategia Każda warstwa osobno Scalanie zstępujące warstw, usuwanie kolejnych namiastek niższych warstw Alternatywa: scalanie wstępujące (od najniższej warstwy) Testowanie scalania p.63/93
Scalanie warstwowe Kryteria wejściowe Stabilna maszyna wirtualna Składowe operatywne w minimalnym stopniu Brak anomalii w zakresie fizycznym, funkcjonalnym i środowiska Testowanie scalania p.64/93
Scalanie warstwowe Kryteria wyjściowe Pilotowane składowe spełniają swoje kryteria wyjściowe Każdy rodzaj współpracy został wypróbowany Testowanie scalania p.65/93
Scalanie warstwowe Zalety i wady podobne do scalania zstępującego i wstępującego Przypadek wstępujący: pilot dla każdej warstwy, ograniczona liczba namiastek Przypadek zstępujący: jeden pilot, namiastki warstw niższych Testowanie scalania p.66/93
Scalanie klienta i serwera Stabilność interakcji klienci serwery Sterowanie nie jest zlokalizowane w jednym miejscu Początkowo oddzielnie klienci, oddzielnie serwery Sprawdzanie kolejnych interfejsów Cel wykrywanie problemów ze współdziałaniem Platforma testowa i docelowa, izomorfizm Testowanie scalania p.67/93
Scalanie klienta i serwera Strategia Gwiazda dwupiętrowa: klient namiastka serwera namiastki klientów serwer klient (grupa klientów) serwer Gwiazda trzypiętrowa: klient serwer serwer serwer klient serwer serwer Testowanie scalania p.68/93
Scalanie klienta i serwera Kryteria wejściowe: Stabilna maszyna wirtualna Komponenty współpracy operatywne w minimalnym stopniu Brak anomalii w zakresie fizycznym funkcjonalnym i środowiska Zainstalowany i sprawdzony wieloplatformowy zestaw narzędzi testowych oraz system kontroli wersji Testowanie scalania p.69/93
Scalanie klienta i serwera Kryteria wyjściowe: Pilotowane składowe spełniają swoje kryteria wyjściowe Interfejs do każdej podskładowej został wypróbowany Zestaw testów przechodzi w środowisku izomorficznym z docelowym Testowanie scalania p.70/93
Scalanie klienta i serwera Kosztowne opracowanie namiastek i pilotów, ale można je wykorzystać przy testowaniu systemu Kompleksowe przypadki użycia można testować dopiero pod koniec cyklu testowania Eliminowanie problemów metody Big Bang Pewna dowolność w kolejności scalania w zależności od ryzyka lub priorytetów Testowanie scalania p.71/93
Scalanie usług rozproszonych Wykazanie stabilności współpracy pomiędzy równorzędnymi komponentami Składowe pracujące współbieżnie, sterowanie nie jest skupione w jednym miejscu, brak hierarchii serwerów Przetestowanie węzłów, następnie testowanie kolejnych interfejsów Skoncentrowane na problemach uniemożliwiających testowanie systemu Testowanie scalania p.72/93
Scalanie usług rozproszonych Strategia Wykazanie minimalnej operatywności interfejsów Kolejność testowania: według ryzyka na przekór ryzyku według zależności według priorytetów Testowanie scalania p.73/93
Scalanie usług rozproszonych Strategia zasady: Zestawy zależne i niezależne od komputera sieciowego i stanowiska Specyfikacja konfiguracji dla każdego komputera sieciowego Oprogramowanie testowe działa na wszystkich komputerach Najpierw na najprostszej konfiguracji Testowanie scalania p.74/93
Scalanie usług rozproszonych Kryteria wejściowe: Stabilna maszyna wirtualna Składowe operatywne w minimalnym stopniu Brak anomalii w zakresie fizycznym funkcjonalnym i środowiska Zainstalowany i sprawdzony wieloplatformowy zestaw narzędzi testowych oraz system kontroli wersji Testowanie scalania p.75/93
Scalanie usług rozproszonych Kryteria wejściowe: Określono, wdrożono i przetestowano typową konfigurację zdalnego komputera Na każdym zdalnym komputerze zainstalowano i skonfigurowano oprogramowanie testowe Testowanie scalania p.76/93
Scalanie usług rozproszonych Kryteria wyjściowe: Kryteria wyjściowe oparte na powinnościach spełniają wymagania wzorców określających treści wariantów testów Interfejs do każdego komponentu został wypróbowany Zestaw testów przechodzi w środowisku izomorficznym z docelowym Testowanie scalania p.77/93
Scalanie usług rozproszonych Koszty opracowania pilotów, namiastek, organizacji środowiska testowego Kompleksowe przypadki użycia można testować dopiero pod koniec cyklu testowania Eliminowanie problemów metody Big Bang Pewna dowolność w kolejności scalania w zależności od ryzyka lub priorytetów Testowanie scalania p.78/93
Scalanie częste Scalanie częste nie jest: Częstym kompilowaniem i konsolidowaniem Przechodzeniem przez analizatory statyczne Scalanie częste to: Ładowanie testowanej implementacji Wykonywanie zestawu testów Porównywanie wyników oczekiwanych i rzeczywistych Testowanie scalania p.79/93
Scalanie częste Ustabilizowana wersja podstawowa Wykrywanie błędów scalania Warunki dla scalania częstego: Dostępny stabilny przyrost Odpowiedni czas wytwarzania Tworzenie i rozwijanie testów wraz z kodem Zautomatyzowane scalanie Zarządzanie konfiguracją Testowanie scalania p.80/93
Scalanie częste Strategia: Wzorzec testu w obrębie systemu Testowanie wszystkich rozwijanych składowych Etapy: Tworzenie partii kodu i testów dla nich Gromadzenie zmian, wykonywanie testów Ocena wyników; natychmiastowa naprawa omyłek Testowanie scalania p.81/93
Scalanie częste Kryteria wejściowe: Stabilna maszyna wirtualna Automatycznie powtarzalny zestaw testów Dostatecznie duża liczba elementów Kryteria i procedury dodawania składowych: Składowa przechodzi zestaw testów Składowa zgodna z procedurami konfiguracji, rejestracji, terminowości Ustalony, jednakowy czas graniczny cyklu Testowanie scalania p.82/93
Scalanie częste Kryteria wyjściowe: Zakończone opracowywanie przyrostu, testowany system przechodzi zestaw testów scalania ostatniego przyrostu Przypadki: Zestaw testów osiąga pokrycie scalenia Zestaw testów wykazuje minimalną zdolność współdziałania, ale nie osiąga pokrycia scalenia Testowanie scalania p.83/93
Scalanie częste Utrzymywanie kodu i zestawu testów Testy nie mogą być zbyt proste Paradoks pestycydowy Wczesne wykrywanie dużych błędów Morale pracowanie nad systemem, który działa Testowanie scalania p.84/93
Zakres Klasa Klaster Podsystem i system Testowanie scalania p.85/93
Zakres klasa Składowe: zmienne, metody (również nadklasy), parametry komunikatów Testowanie powinności klasy, testowanie scalania klasy Wyizolowane testy klasy Strategia alfa-omega Big Bang, czyli Small Pop Testowanie scalania p.86/93
Zakres klaster Można oddzielić testowania powinności klastra od testowania scalania klastra Nie stosować Big Bang Z reguły scalanie wstępujące Scalanie zstępujące, jeśli szczytem klastra jest jedna klasa Testowanie scalania p.87/93
Zakres podsystem i system Testowanie interakcji powyżej poziomu klastra a poniżej zakresu systemu Osiągnięcie stabilności pozwalającej na testowanie systemu Sprawdzenie minimalnej zdolności do współpracy Testowanie scalania p.88/93
Zakres podsystem i system Kontrola konfiguracji fizycznej (wersje komponentów) Kontrola konfiguracji funkcjonalnej (właściwa rodzina komponentów) Kontrola konfiguracji środowiskowej (środowisko docelowe, wymagania sprzętowe, zasoby, działanie pod kontrolą wszystkich OS, DBMS, maszyn wirtualnych, z którymi miał być zgodny) Testowanie scalania p.89/93
Zakres podsystem i system Scalanie wstępujące Scalanie zstępujące Scalanie współpracy Scalanie warstwowe Scalanie klienta i serwera Scalanie usług rozproszonych Scalanie szkieletowe Scalanie częste Testowanie scalania p.90/93
Omówione wzorce scalania Metoda Big Bang Wstępujące Zstępujące Współpracy Szkieletowe Testowanie scalania p.91/93
Omówione wzorce scalania Warstwowe Klienta i serwera Usług rozproszonych Częste Testowanie scalania p.92/93
Pytania? Testowanie scalania p.93/93