Testowanie scalania
Transkrypt
Testowanie scalania
Testowanie scalania Maciek Osiński Tomek Wysocki Seminarium Bazy Danych Testowanie scalania – p.1/93 Testowanie scalania Poj˛ecia i definicje Uwagi o testowaniu Testowanie scalania Wady scalenia Wzorce scalania Zakres, zastosowania Testowanie scalania – p.2/93 Poj˛ecia 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, powodujacych ˛ awarie pomi˛edzy nimi Testowanie scalania – p.4/93 Testowanie scalania Na których składowych należy si˛e skupić w teście scalania? W jakiej kolejności b˛eda˛ sprawdzane interfejsy składowych? Której metody projektowania testu powinno si˛e użyć do wypróbowania każdego z interfejsów? Testowanie scalania – p.5/93 Plan testowania scalania Jakie przyrosty konstruowane sa˛ główne? Na których interfejsach składowych b˛edzie skoncentrowane scalanie? W jakiej kolejności b˛eda˛ testowane składowe i interfejsy? Które namiastki i piloty należy opracować? Które wzorce zostana˛ 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, zarzadzanie ˛ konfiguracja˛ 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˛ete, zachodzace ˛ na siebie lub w konflikcie Zła lub niespójna struktura danych Naruszenie integeralności pami˛eci globalnej lub bazy danych Wołanie złej metody – omyłka w kodzie lub nieoczekiwane wiazanie ˛ Testowanie scalania – p.8/93 Wady scalenia Komunikat klienta narusza warunki poczatkowe ˛ lub sekwencyjne serwera Zwiazanie ˛ komunikatu ze złym obiektem (polimorfizm) Złe parametry lub niepoprawne wartości Złe przydzielanie lub zwalnianie pami˛eci 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˛epujace ˛ Zst˛epujace ˛ Współpracy Szkieletowe Testowanie scalania – p.10/93 Wzorce scalania Warstwowe Klienta i serwera Usług rozproszonych Cz˛este 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 sa˛ 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˛esto zawodzi i utrudnia rzeczywiste znalezienie przyczyn bł˛edów. Pomimo tego, iż test przechodzi wiele wad interfejsu może pozostać ukrytych. W sprzyjajacych ˛ okolicznościach może szybko zakończyć testowanie niewielkim kosztem. Testowanie scalania – p.17/93 Scalanie wst˛epujace ˛ Inaczej Bottom-Up. Dodawanie składowych w kolejności użycia. Wieloetapowe weryfikowanie interfejsów ściśle powiazanych ˛ składowych. Zastosowania – przyrostowo opracowywane jednostki systemu. Testowanie scalania – p.18/93 Scalanie wst˛epujace ˛ – strategia Model testu: Budowa drzewa zależności. Opracowanie zestawu testów powinności każdej składowej. Uwzgl˛ednienie podskładowych. Testowanie scalania – p.19/93 Scalanie wst˛epujace ˛ Testowanie scalania – p.20/93 Scalanie wst˛epujace ˛ Testowanie scalania – p.21/93 Scalanie wst˛epujace ˛ Testowanie scalania – p.22/93 Scalanie wst˛epujace ˛ Testowanie scalania – p.23/93 Scalanie wst˛epujace ˛ Testowanie scalania – p.24/93 Scalanie wst˛epujace ˛ Kryteria wejściowe Maszyna wirtualna, która ma być użyta w środowisku testu jest stabilna. Scalane składowe spełniaja˛ kryteria wyjściowe w obr˛ebie 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˛epujace ˛ 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 przechodza˛ pomyślnie swoje testy. Testowanie scalania – p.26/93 Scalanie wst˛epujace ˛ 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˛epujace ˛ Zalety: Testowanie i scalanie można rozpoczać ˛ 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˛epujace ˛ 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˛epujace ˛ – strategia Model testu: Budowa diagramu współpracy, diagramu nast˛epstw 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˛ebie systemu. Testowanie scalania – p.30/93 Scalanie zst˛epujace ˛ Testowanie scalania – p.31/93 Scalanie zst˛epujace ˛ Testowanie scalania – p.32/93 Scalanie zst˛epujace ˛ Testowanie scalania – p.33/93 Scalanie zst˛epujace ˛ Testowanie scalania – p.34/93 Scalanie zst˛epujace ˛ Testowanie scalania – p.35/93 Scalanie zst˛epujace ˛ Kryteria wejściowe Maszyna wirtualna, która ma być użyta w środowisku testu jest stabilna. Scalane składowe spełniaja˛ kryteria wyjściowe w obr˛ebie 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˛epujace ˛ 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 zawierajaca ˛ wszystkie składowe z poziomu liści przechodzi pomyślnie zestaw testów w obr˛ebie systemu. Testowanie scalania – p.37/93 Scalanie zst˛epujace ˛ 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˛epujace ˛ Zalety: Można szybko rozpoczać ˛ testowanie i scalenie. Już test pierwszego etapu może wykazywać całościowa˛ 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 Ciagi ˛ współpracy Zastosowania – np. watki ˛ 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 wymagajacych ˛ najmniej namiastek jeżeli sa˛ ograniczenia sekwencyjne, to wg kolejności przejść od najwi˛ekszego 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˛edzy nimi w systemie zostały wypróbowane. Testowanie scalania – p.47/93 Scalanie współpracy Wady Wewn˛etrzne zależności współpracy moga˛ nie mieć modeli. Możliwość pomini˛ecia bł˛edó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 Łaczy ˛ w sobie metody: Big Bang, scalanie wst˛epujace ˛ i scalanie zst˛epujace. ˛ Stosuje si˛e, 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˛ebnienie: sterowania, szkieletu i podsystemów testowanie z osobna składowych szkieletu scalanie zst˛epujace ˛ 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˛epujace ˛ zast˛epowanie namiastek implementacjami w dalszych cyklach scalanie cz˛este 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 maja˛ ten sam rozmiar i złożoność Testowanie scalania – p.58/93 Scalanie szkieletowe Kryteria wyjściowe Wszystkie składowe spełniaja˛ kryteria wyjściowe zastosowanego wzorca testu. Każdy interfejs został wypróbowany. Cały przyrost przechodzi testy w obr˛ebie systemu. Testowanie scalania – p.59/93 Scalanie szkieletowe Wady analiza musi być naprawd˛e staranna trzeba tworzyć i piloty i namiastki Testowanie scalania – p.60/93 Scalanie szkieletowe Zalety łagodzi niedogodności scalania wst˛epujacego ˛ i zst˛epujacego ˛ scalanie zst˛epujace ˛ tylko na górnych poziomach scalanie wst˛epujace ˛ – w podsystemach Big Bang poprzedzone testowaniem składowych szkielety sa˛ lepsze niż symulatory Testowanie scalania – p.61/93 Scalanie warstwowe Model warstwowy Interfejsy urzadzeń, ˛ urzadzenia ˛ 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˛epujace ˛ warstw, usuwanie kolejnych namiastek niższych warstw Alternatywa: scalanie wst˛epujace ˛ (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łniaja˛ 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˛epujacego ˛ i wst˛epujacego ˛ Przypadek wst˛epujacy: ˛ pilot dla każdej warstwy, ograniczona liczba namiastek Przypadek zst˛epujacy: ˛ 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 Poczatkowo ˛ 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˛etrowa: klient–namiastka serwera namiastki klientów–serwer klient (grupa klientów)–serwer Gwiazda trzypi˛etrowa: 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˛edzi testowych oraz system kontroli wersji Testowanie scalania – p.69/93 Scalanie klienta i serwera Kryteria wyjściowe: Pilotowane składowe spełniaja˛ 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˛edzy równorz˛ednymi komponentami Składowe pracujace ˛ współbieżnie, sterowanie nie jest skupione w jednym miejscu, brak hierarchii serwerów Przetestowanie w˛ezłów, nast˛epnie testowanie kolejnych interfejsów Skoncentrowane na problemach uniemożliwiajacych ˛ 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˛edzi testowych oraz system kontroli wersji Testowanie scalania – p.75/93 Scalanie usług rozproszonych Kryteria wejściowe: Określono, wdrożono i przetestowano typowa˛ konfiguracj˛e 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łniaja˛ wymagania wzorców określajacych ˛ 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˛este Scalanie cz˛este nie jest: Cz˛estym kompilowaniem i konsolidowaniem Przechodzeniem przez analizatory statyczne Scalanie cz˛este to: Ładowanie testowanej implementacji Wykonywanie zestawu testów Porównywanie wyników oczekiwanych i rzeczywistych Testowanie scalania – p.79/93 Scalanie cz˛este Ustabilizowana wersja podstawowa Wykrywanie bł˛edów scalania Warunki dla scalania cz˛estego: Dost˛epny stabilny przyrost Odpowiedni czas wytwarzania Tworzenie i rozwijanie testów wraz z kodem Zautomatyzowane scalanie Zarzadzanie ˛ konfiguracja˛ Testowanie scalania – p.80/93 Scalanie cz˛este Strategia: Wzorzec testu w obr˛ebie 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˛este 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˛este Kryteria wyjściowe: Zakończone opracowywanie przyrostu, testowany system przechodzi zestaw testów scalania ostatniego przyrostu Przypadki: Zestaw testów osiaga ˛ pokrycie scalenia Zestaw testów wykazuje minimalna˛ zdolność współdziałania, ale nie osiaga ˛ pokrycia scalenia Testowanie scalania – p.83/93 Scalanie cz˛este Utrzymywanie kodu i zestawu testów Testy nie moga˛ być zbyt proste Paradoks pestycydowy Wczesne wykrywanie dużych bł˛edó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˛epujace ˛ Scalanie zst˛epujace, ˛ 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 Osiagni˛ ˛ ecie stabilności pozwalajacej ˛ 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˛etowe, zasoby, działanie pod kontrola˛ wszystkich OS, DBMS, maszyn wirtualnych, z którymi miał być zgodny) Testowanie scalania – p.89/93 Zakres – podsystem i system Scalanie wst˛epujace ˛ Scalanie zst˛epujace ˛ Scalanie współpracy Scalanie warstwowe Scalanie klienta i serwera Scalanie usług rozproszonych Scalanie szkieletowe Scalanie cz˛este Testowanie scalania – p.90/93 Omówione wzorce scalania Metoda Big Bang Wst˛epujace ˛ Zst˛epujace ˛ Współpracy Szkieletowe Testowanie scalania – p.91/93 Omówione wzorce scalania Warstwowe Klienta i serwera Usług rozproszonych Cz˛este Testowanie scalania – p.92/93 Pytania? Testowanie scalania – p.93/93