4.2 Czarnoskrzynkowe techniki testowania Flashcards
Czym jest testowanie czarnoskrzynkowe?
- Testowanie czarnoskrzynkowe to techniki testowe oparte na analizie zdefiniowanego zachowania testowanego obiektu (test object) bez odniesienia do jego wewnętrznej struktury.
- Przypadki testowe (test cases) są niezależne od kodu i implementacji, dlatego nie zmieniają się, jeśli modyfikuje się strukturę, o ile wymagana funkcjonalność pozostaje taka sama.
Jak działa podział na klasy równoważności?
- Dane dzielone są na grupy (zwane klasami równoważności, ang. equivalence partitions), w których wszystkie elementy są przetwarzane w taki sam sposób.
- Jeśli przypadek testowy sprawdzający jedną wartość w danej klasie wykrywa defekt, to inne wartości z tej samej klasy prawdopodobnie również go ujawnią.
- Dlatego często wystarczy tylko jeden przypadek testowy na każdą klasę równoważności.
Jaka jest różnica między prawidłowymi a nieprawidłowymi klasami równoważności?
- Prawidłowe (valid) klasy równoważności zawierają dane, które powinny zostać poprawnie przetworzone przez testowany obiekt.
- Nieprawidłowe (invalid) klasy równoważności zawierają dane, które powinny być odrzucone lub zignorowane.
Czym jest pokrycie Each Choice?
- Each Choice coverage wymaga, aby zestaw przypadków testowych pokrywał każdą partycję (klasę równoważności) w każdym zbiorze partycji co najmniej raz.
- Nie bierze się jednak pod uwagę kombinacji między różnymi partycjami (każda partycja jest sprawdzana indywidualnie).
- Technika jest użyteczna, gdy mamy wiele zestawów partycji (np. więcej niż jeden parametr wejściowy).
Czym jest analiza wartości brzegowych?
- Analiza wartości brzegowych (BVA) to technika, w której sprawdza się granice danych w obrębie klas równoważności. Minimum i maksimum danej klasy to jej granice.
- Błędy często popełniane są na krawędziach (boundary values) — np. tam, gdzie programista omyłkowo użyje warunku „<” zamiast „≤”.
Czym jest dwu-wartościowa analiza wartości brzegowych (2-value BVA)?
Dla każdej granicy rozpatruje się 2 elementy pokrycia (tzw. coverage items):
* sama wartość graniczna,
* najbliższa wartość w sąsiedniej partycji.
Aby osiągnąć 100% pokrycia w 2-value BVA, należy wykonać testy dla wszystkich wykrytych granic i ich sąsiednich wartości.
Czym jest trzy-wartościowa analiza wartości brzegowych (3-value BVA)?
Dla każdej granicy uwzględnia się 3 elementy pokrycia:
* wartość graniczna
* bliższy sąsiad od strony „mniejszej”
* bliższy sąsiad od strony „większej”
W 3-value BVA niektóre elementy pokrycia mogą nie być rzeczywistymi brzegami, ale służą do wychwycenia defektów w warunkach typu „<”/„≤” lub „>”/„≥”.
Która wersja analizy wartości brzegowych jest bardziej rygorystyczna?
- 3-value BVA jest bardziej rygorystyczna niż 2-value, bo może wykryć defekty pominięte przez 2-value BVA.
- Przykład: jeśli warunek if (x ≤ 10) został zaimplementowany błędnie jako if (x = 10), to dane testowe z 2-value BVA (np. x=10, x=11) mogą tego nie wykryć. Natomiast wartość x=9 (z 3-value BVA) może ujawnić błąd.
Czym jest tablica decyzyjna?
- Tablice decyzyjne (ang. decision tables) służą do testowania logiki systemu, która określa, jak różne kombinacje warunków skutkują różnymi wyjściami lub akcjami.
- Warunki i możliwe akcje systemu definiuje się zwykle w wierszach, a kolumny odpowiadają unikalnym kombinacjom warunków (tzw. regułom).
Czym jest tablica decyzyjna typu „limited entry”?
- W limited entry decyzje i akcje mają wartości typu boolean (np. true/false).
- Są to więc proste warunki (np. spełnione lub niespełnione), bez szerszych zakresów danych.
Czym jest tablica decyzyjna typu „extended entry”?
- W extended entry warunki i akcje mogą mieć szersze wartości niż boolean, np. zakresy liczb, partycje równoważności czy inne wartości dyskretne.
- Pozwala to uwzględnić bardziej złożone reguły biznesowe.
Opisz notację warunków i akcji w tablicy decyzyjnej.
Dla warunków często stosuje się litery:
- T (True) = warunek spełniony,
- F (False) = warunek niespełniony,
- – (myślnik) = warunek nieistotny (dla danej kolumny),
- N/A = warunek niewykonalny w danej regule.
Dla akcji:
- X oznacza, że akcja powinna zostać wykonana,
- puste pole (lub brak) oznacza, że akcja nie powinna zostać wykonana.
Jak uprościć testowanie pełnej tablicy decyzyjnej, gdy liczba reguł rośnie wykładniczo?
Przykładowe techniki:
* Usuwanie nieosiągalnych kombinacji (kolumn, w których warunki wzajemnie się wykluczają).
* Scalanie kolumn, w których warunki nie wpływają na wynik, co pozwala je traktować łącznie.
* Podejście zminimalizowane (ang. collapsed decision table) lub podejście oparte na ryzyku w doborze pokrycia.
Czym jest testowanie z wykorzystaniem tablic decyzyjnych?
- Testowanie z wykorzystaniem tablic decyzyjnych polega na tym, że elementy pokrycia (coverage items) to kolumny reprezentujące feasible combinations (możliwe kombinacje warunków).
- Aby osiągnąć 100% pokrycia, przypadki testowe muszą wykonać wszystkie kolumny (reguły).
- Poziom pokrycia wyraża się jako stosunek wykorzystanych kolumn do wszystkich kolumn możliwych.
Jakie są korzyści testowania z wykorzystaniem tablic decyzyjnych?
- Zapewnia systematyczne podejście do identyfikacji wszystkich kombinacji warunków, co pozwala wykryć luki lub sprzeczności w wymaganiach.
- Ułatwia dokumentowanie złożonej logiki biznesowej w czytelnej formie (wiersze, kolumny).
Czym jest diagram przejść pomiędzy stanami?
- Diagram przejść stanów (ang. state transition diagram) pokazuje, w jakie stany może przejść system (lub moduł), gdy zajdą pewne zdarzenia (wyzwalacze).
- Przejście do innego stanu zwykle wymaga spełnienia warunku (np. guard condition) lub wywołania akcji.
Czym jest tablica stanów?
- Tablica stanów to model uzupełniający diagram przejść stanów.
- W wierszach tablicy zwykle znajdują się aktualne stany, a w kolumnach — zdarzenia/warunki powodujące przejście do nowego stanu oraz powiązane akcje.
- Różni się od diagramu tym, że współrzędne są stany i zdarzenia w tabeli (często spotyka się puste pola dla stanów/zdarzeń, które są nieważne).
Jak może wyglądać przypadek testowy oparty na diagramie lub tablicy przejść stanów?
- Przypadek testowy to sekwencja zdarzeń (wejść), która powoduje zmianę stanu i wywołanie akcji.
- Sprawdzamy, czy rzeczywiste przejścia stanów i zachowanie (akcje, dane wyjściowe) pokrywają się z tym, co opisuje diagram lub tablica.
- W ten sposób testujemy logiczną poprawność reakcji systemu na kolejne zdarzenia w różnych stanach.
Opisz pokrycie typu „All States Coverage”.
- Elementy pokrycia (coverage items) to stany systemu.
- Aby osiągnąć 100% pokrycia, testy muszą odwiedzić każdy stan co najmniej raz.
- Poziom pokrycia oblicza się jako: (liczba stanów odwiedzonych) / (liczba wszystkich stanów).
Opisz pokrycie przejść prawidłowych (tzw. 0-switch coverage).
- Elementy pokrycia to pojedyncze przejścia (ang. valid transitions) w tablicy stanów lub diagramie stanów.
- Aby osiągnąć 100% pokrycia, testy muszą wywołać każde przejście co najmniej raz.
- Poziom pokrycia: (liczba przejść wykonanych) / (liczba wszystkich możliwych przejść).
Opisz pokrycie All Transitions Coverage.
- W tym wariancie elementy pokrycia to wszystkie przejścia w tablicy stanów (zarówno dozwolone, jak i czasem niedozwolone).
- Aby osiągnąć 100% pokrycia, przypadki testowe muszą przeprowadzić każdą ze zidentyfikowanych ścieżek przejść.
- Czasem spotyka się ujęcie, w którym to pokrycie dotyczy wszystkich prawidłowych i nieprawidłowych przejść, co może wymagać testowania błędnych stanów wejściowych.
Uszereguj różne typy pokrycia przejść stanów od najsilniejszego do najsłabszego.
- Zwykle All Transitions Coverage (zawiera i stany, i wszystkie przejścia, łącznie z sekwencjami) jest najbardziej wymagające i daje najpełniejsze testowanie.
- Each Transitions Coverage (pojedyncze przejścia, zwane też 0-switch coverage) jest słabsze, bo pomija kombinacje kilku przejść w sekwencji.
- All States Coverage jest najsłabsze, bo wymaga tylko odwiedzenia każdego stanu (można pominąć wiele przejść).