52.Co to jest przypadek testowy, scenariusz testów? Podaj przykłady.
Przypadek testowy (ang. test case) - specyfikacja:
-stan początkowy, czyli stan testowanego systemu (lub jego fragmentu) przed testem,
-dane wejściowe,
-warunki testu,
-dane wyjściowe (oczekiwane wyniki);
-Jakość przypadku testowego :
prawdopodobieństwo znalezienia jeszcze nie wykrytego błędu;
Test zakończony powodzeniem:
WYKRYWA dotychczas nie wykryty błąd;
[G. Myers, The Art. Of Software Testing, 1979]
Określone w rozporządzeniu ministra nauki i informatyzacji z 19 października 2005:
przypadek testowy — test akceptacyjny obejmujący pojedynczy zestaw danych wejściowych wprowadzanych do oprogramowania testowanego;
scenariusz testowy — zestaw co najmniej dwóch przypadków testowych powiązanych ze sobą w taki sposób, że danymi wejściowymi do każdego kolejnego przypadku testowego są niezmienione dane wyjściowe z poprzedzającego go przypadku testowego;53.Co to jest macierz przykrycia testów akceptacyjnych? Podaj przykłady.
Macierz przykrycia testów akceptacyjnych jest to macierz opisująca wszystkie funkcjonalności oprogramowania oraz powiązane z nimi przypadki testowe. Pozwala na wykrycie nietestowanych funkcjonalności oraz nadmiarowych testów (nie testujących żadnej funkcjonalności).
54.Omów podstawowe schematy testów integracyjnych. Podaj przykłady.
-Skokowe - grupują wybrane (lub wszystkie) jednostki w celu ich równoczesnego przetestowania
-Przyrostowe - zakładają dołączenie do tworzonej całości za każdym razem tylko jednej uprzednio przetestowanej jednostki:
zstępujące (odgórne) - integruje się i testuje się komponenty wysokiego poziomu przed ukończeniem ich projektu i implementacji;
wstępujące (oddolne) - testuje się i integruje komponenty niskiego poziomu przed ukończeniem budowy komponentów wyższego poziomu;
-Testowanie interfejsu jest wykonywane po zintegrowaniu modułów lub podsystemów w większe systemy.
-Każdy moduł i podsystem ma zdefiniowany interfejs, który jest wywoływany przez inne komponenty programu, np.:
Interfejsy parametryczne,
Interfejs w pamięci dzielonej,
Interfejsy proceduralne,
Interfejsy z przekazywaniem komunikatów;
-Celem testowania interfejsu jest wykrycie usterek, które pojawiły się w systemie z powodu błędów w interfejsach lub nieprawdziwych założeniach o interfejsach.
55.Jaka jest istota konstrukcyjnych wzorców projektowych? Przedstaw przykład wzorca konstrukcyjnego.
- służą do pozyskiwania obiektów;
- szczegółowo opisują jaki obiekt może zostać stworzony;
- uniezależniają kod od typów tworzonych obiektów (zależne jest to tylko od parametrów konfiguracyjnych);
Przykłady:
-Singelton-
-Zapewnia powołanie tylko jednej instancji obiektu w całej aplikacji i kontrolowany dostęp;
-Obiekt powołany wg tego wzorca jest globalnym punktem dostępu do instancji danej klasy ;
-Wzorzec może być zmodyfikowany do tworzenia określonej liczby instancji danej klasy (>1);
-Funkcje wzorca: utworzenie obiektu, inicjalizacja obiektu, punkt dostępu, modyfikacja obiektu;
-Prostszym rozwiązaniem jest: globalnie dostępna zmienna statyczną przechowująca referencję do obiektu;
-metoda fabrykująca;
Fabryka nie może przewidzieć, jakie obiekty i w jaki sposób tworzyć;
Klient zna tylko interfejs klasy abstrakcyjnej;
Informacje o sposobie i odpowiedzialność za tworzenie obiektu znajdują się w implementacjach „metody tworzącej” klas pochodnych;
Można tworzyć domyślny produkt, ale też dać użytkownikowi możliwość podstawienia swojej wyspecjalizowanej wersji;
-fabryka abstrakcyjna;
-fabryka;
-Fabryka nowych obiektów w zdefiniowanych klasach wzorcowych;
Wszystkie klasy wzorcowe mają metody o tej samej nazwie, ale o innych realizacjach;
Zaleta - możliwość modyfikowania klas wzorcowych (tworzących) w jednym miejscu projektu;
Popularne wersje Fabryki: Metoda Fabrykująca, Fabryka Abstrakcji, Budowniczy, Prototyp;
-budowniczy;
-prototyp.
Podsumowanie:
Singleton - pojedyncza instancja obiektu;
Metoda Fabrykująca - tworzenie obiektów w klasach pochodnych;
Fabryka Abstrakcyjna - tworzenie rodzin obiektów bez wydzielonych klas fabryk;
Budowniczy - ukrycie szczegółów tworzenia za interfejsem zarządcy;
Prototyp - tworzenie kopii na podstawie w pełni zainicjalizowanej instancji;
56.Jaka jest istota strukturalnych wzorców projektowych? Przedstaw przykład wzorca strukturalnego.
Stosowany do łączenia obiektów w większe struktury;
Zastosowanie np. w implementacji złożonego interfejsu użytkownika;
Przykłady:
Fasada,
Ujednolicony i prostszy interfejs do struktury złożonych podsystemów;
Separacja klienta od złożonych podsystemów;
Wybór odpowiedniej struktury dla żądania klienta;
Możliwości zmian w ukrywanych podsystemach;
Przykłady:
w bibliotekach Javy: klasy pakietu java.sql (Statement, ResultSet);
wejście usług w Service Oriented Architecture (SOA);
Adapter,
Konwertuje (dopasowuje) interfejsy jednej klasy do interfejsu innej klasy;
Umożliwia klasom o różnych interfejsach współpracę w jednym programie;
Niewielka elastyczność - adaptacji podlega tylko jedna klasa (Adaptee), bez jej podklas;
Zmiana zachowania klasy Adapter może zmienić zachowanie klasy dostosowywanej Adaptee;
Dwa sposoby realizacji:
dziedziczenie,
kompozycja;
Most,
Kompozyt,
System złożony z podsystemów o strukturze drzewiastej ( reprezentacja związku „całość-część”);
Wspólny interfejs dla klas węzłów i liści - ujednolicone widzenie kontenerów i obiektów składowanych;
Łatwo rozszerzalny o nowe podsystemy implementujące (określony interfejs);
Przykłady:
Przykład w bibliotekach Javy: kontenery (Panel, JComponent, …);
Dekorator,
Waga Piórkowa,
Zastąpienie wielu obiektów jednym współdzielonym z opisem stanu zubożonym w porównaniu z pierwotnym obiektem;
Zamiast przechowywać wewnątrz atrybuty stanu, obiekty dostają wartości z zewnątrz jako parametry wywołania metod;
Zalety:
Ograniczenie liczby tworzonych instancji obiektów;
Przesunięcie części danych z obiektu do przekazywanych parametrów metod;
Wady:
Zwiększony koszt wywoływania metod obiektów;
Uzyskuje się przyspieszenie programów operujących na wielu niezbyt złożonych obiektach;
Przykład: zbiory obiektów „znaków literowych”;
Proxy;
57.Jaka jest istota czynnościowych wzorców projektowych? Przedstaw przykład wzorca czynnościowego.
W celu definiowania komunikacji pomiędzy obiektami;
Pomagają kontrolować przepływ danych w złożonym programie;
Przykłady:
Iterator,
Upraszcza przemieszczanie po kolekcji danych (np. liście), z wykorzystaniem standardowego interfejsu;
Nie wymaga znajomości wewnętrznej struktury kolekcji danych;
Umożliwia równoczesne przeglądanie kilku kolekcji;
Przykład:
W bibliotekach Javy: iterator w kolekcjach z pakietu java.util;
Łańcuch Odpowiedzialności,
Zestaw klas obsługuje żądanie w określonej kolejności;
Żądanie jest przekazywane pomiędzy klasami w określonym łańcuchu;
Czasami ostatni obiekt łańcucha obsługuje wszystkie żądania;
Przykład:
Realizacja w Javie: Frame -> Panel -> Component;
Stan,
Tworzy obiekty pochodne z bazowej klasy State dla każdego stanu, w którym może znaleźć się aplikacja;
Przełączanie pomiędzy obiektami stanu, gdy zmieni się stan aplikacji;
Wraz ze zmianą stanu i tym samym obiektu może zmienić się zachowanie obiektu (inne implementacje metod);
Eliminuje złożone instrukcje warunkowe (np. switch) w metodach obiektu;
Wada: powstaje wiele małych klas;
Zaleta: upraszcza program;
Mediator,
Mediatora stanowi „zarządcę obiektów”;
Wprowadza luźniejsze powiązania pomiędzy klasami - obiekty znają Mediatora a nie koniecznie inne obiekty;
Zmiany stanu obiektów są za jego pośrednictwem (odpowiednich metod) propagowane do zainteresowanych obiektów;
Często jest specjalizowany dla jednego projektu;
Obserwator,
Strategia;
Potrzeba kilku wariantów algorytmu;
Wybór określonego wariantu poprzez powołanie obiektu pochodnego do zdefiniowanego interfejsu bazowego lub klasy abstrakcyjnej;
Każda wersja algorytmu jest implementowana w osobnej klasie;
Zalety:
algorytm może używać danych, których klient nie zna;
hermetyzacja algorytmów w oddzielnych klasach pozwala na ich modyfikację niezależnie od kontekstu;
to rozwiązanie zastępuje instrukcje wyboru lub warunkowe;