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

Podobne dokumenty