Lekcja 5 – Kategorie technik testowania

Agenda

  1. Kategorie technik testowania
  2. Czarnoskrzynkowe techniki testowania
  3. Białoskrzynkowe techniki testowania
  4. Testowanie oparte na doświadczeniu

Spotkanie teoretyczno-warsztatowe

Kategorie Technik Testowania

•    Technika testowania według ISTQB jest to procedura, której używają testerzy do definiowania warunków testowych, projektowania przypadków testowych i określenia danych testowych.
•    Wybór techniki testowania zależny jest od czynników:

  • przepisy i normy, umowy dokumentację, model cyklu życia oprogramowania
  • czas i budżet, dojrzałość testerska, narzędzia.
  • złożoność produktu pracy, ryzyka, defekty, jakich spodziewamy się w oprogramowaniu

•    Techniki testowania mogą być zarówno wysoko sformalizowane (skrypty testowe), ale też o bardzo niskim stopniu sformalizowania jak zgadywanie błędów bez dokumentowania rezultatów takich testów

Techniki czarnoskrzynkowe

•    Są to techniki oparte na specyfikacji
•    Często nazywane są technikami behawioralnymi
•    W ich przypadku wykorzystuje się wiedzę opartą na informacji zewnętrznej oraz jak dany system powinien się zachowywać
•    W zależności od procesu wytwarzania oprogramowania mogą być oparte na historyjkach użytkownika, specyfikacji wymagań, przypadkach użycia
•    W przypadku technik czarnoskrzynkowych nie bazujemy na kodzie
•    Techniki te mogą być wykorzystywane już na etapie projektowania testów ze względu na dostępność dokumentacji

Klasy Równoważności

•    Podczas wykonywania czynności testowych nie mamy nieograniczonego czasu i zasobów, by przetestować każdą możliwą kombinację danych wejściowych
•    W myśl jednej z siedmiu zasad testowania – testowanie gruntowne nie jest możliwe
•    Klasy równoważności w założeniu mają ułatwić proces testowy i ograniczyć ilość przypadków testowych
•    Technika ta zakłada, że system potraktuje w ten sam sposób dane, które przynależą do odpowiedniej klasy równoważności.
•    Technika ta może zostać użyta dla każdego poziomu i typu testów

Jak używamy?

  1. Na bazie specyfikacji wyodrębniamy klasy równoważności
  2. Wybieramy po jednej danej z każdej klasy równoważności
  3. Tworzymy przypadki testowe dla wybranych danych

Poprawne dobranie dziedziny

  1. Dane (elementy) nie mogą należeć do więcej niż jednej dziedziny
  2. Klasy równoważności zawierają dane (elementy) – nie są puste

Klasy równoważności – Zadanie 1

System udziela zniżki na zakupy w zależności od kwoty zakupów. Kwota ta jest nieujemna z dokładnością do dwóch miejsc po przecinku. Zakupy do 99,99 zł nie uprawniają do żadnej zniżki. Zakupy od 100 zł do 299,99 zł uprawniają do przyznania 5 % zniżki. Zakupy powyżej 299,99 zł uprawniają do przyznania 10% zniżki.
Wyznaczamy wartości metodą klas równoważności, żeby pokryć wszystkie klasy – aby tego dokonać musimy użyć po jednej wartości z każdej klasy

K1: {0, …,99,99} 0% -> 0
K2: {100, …, 299,99} 5% -> 101
K3: {300, …} 10% -> 310

Klasy równoważności – Zadanie 2
Pracujesz nad systemem, który będzie obsługiwać fotoradary w terenie zabudowanym. System automatycznie do wczytanej tablicy rejestracyjnej wystawi automatycznie mandat z kwotą należną za mandat. Za prędkość od 0 do 49,99 km/h system nie wystawi mandatu. Gdy kierowca będzie jechać z szybkością od 50 do 59,99 – otrzyma mandat 50 zł, gdy rozwinie prędkość od 60 do 64,99 km/h to otrzyma mandat 100 zł, natomiast gdy rozwinie prędkość od 65 do 99,99 km/h otrzyma mandat 400 zł, natomiast gdy przekroczy 100 km/h – kierowca otrzyma mandat 1500 zł i odebrane zostaną uprawnienia do kierowania pojazdem na 3 miesiące. Podział na klasy równoważności poprawne i niepoprawne i wartości do pokrycia wszystkich klas równoważności.
K0: (-∞;-0,01) – klasa niepoprawna -> -1
K1: (0; 49,99) – brak mandatu -> 45,20
K2: (50; 59,99) – mandat 50 zł -> 54.65
K3: (60; 64,99) – mandat 100 zł -> 63,20
K4: (65; 99,99) – mandat 400 zł -> 75,21
K5: (100; ∞) – mandat 1500 zł + zatrzymanie uprawnień do kierowania pojazdem na 3 miesiące -> 120
Uwaga!
W ramach pracy domowej dodatkowej możesz dokonać AWB dla tego zadania 😊

Analiza Wartości Brzegowych

•    Jest to metoda, która powstała na podstawie Klas Równoważności
•    W metodzie tej następuje podział na klasy jak w KR
•    AWB opiera się na założeniu, że największe szanse na wystąpienie awarii są na brzegach wyznaczonych klas
•    W każdej klasie wartość minimalna i maksymalna są jej wartościami brzegowymi
•    Metodę tą można użyć tylko w przypadku uporządkowanych dziedzin (np.: liczby)
•    Może być wykonywana na każdym poziomie i typie testów

Jak używamy?

  1. Z dostępnych informacji wytypuj dziedzinę, którą zostanie poddana testom
  2. Wykonaj podział na klasy równoważności
  3. Dla każdej dziedziny wytypuj wartości brzegowe
  4. Dla każdej wartości brzegowej wytypuj elementy do przetestowania


Analiza wartości brzegowych – zadanie 2

Jesteś testerem w zespole pracującym nad oprogramowaniem do laboratorium chemicznego, które ma sprawdzać wagę próbek do 3 miejsc po przecinku. Oprogramowanie będzie kwalifikować próbki włókien na bazie wagi. Gdy próbka ma wagę do 0,245 g wtedy przypisywana jest do grupy 1. Próbka o wadze do 0,555 g będzie kwalifikować się do grupy drugiej. Próbka o wadze powyżej ostatniej wartości będzie kwalifikowana do grupy numer 3. Wykonaj podział na klasy równoważności i wyznacz analizę wartości brzegowych.

K1: {0, …, 0,245} – GRUPA 1  
K2: {0,246, …, 0,555} – GRUPA 2 
K3: {0,556, …} – GRUPA 3 


Powyżej mamy wyznaczone klasy równoważności wynikające z treści zadania. Następnym krokiem będzie wyznaczenie AWB dla najbliższych sąsiadów spoza klasy.

AWB – 2PKT – tutaj bierzemy pod uwagę tylko wartość brzegową i jej najbliższego sąsiada spoza klasy
K1: {0, …, 0,245} – GRUPA 1 – -0,001; 0; 0,245; 0,246
K2: {0,246, …, 0,555} – GRUPA 2 – 0,245; 0,246; 0,555; 0,556
K3: {0,556, …} – GRUPA 3 – 0,555, 0,556



Wyznaczone wartości do testów:
-0.001; 0;245; 0,246; 0,555, 0,556

Uwaga!
Istotne dla Was z punktu widzenia testera jest to, że mimo, że system, nie powinien przyjąć wagi poniżej zera – warto sprawdzić jak system zachowa się w takiej sytuacji i czy jest możliwe, aby taka wartość została przyjęta.

3 PKT – tutaj wybierzemy najbliższych sąsiadów spoza z zewnątrz klasy, by przetestować przedmiot naszej pracy
K1: {0, …, 0,245} – GRUPA 1 – -0,001; 0; 0,001; 0,244; 0,245; 0,246
K2: {0,246, …, 0,555} – GRUPA 2 – 0,245; 0,246; 0,247; 0,554; 0,555; 0,556
K3: {0,556, …} – GRUPA 3 – 0,555; 0,556; 0,557


Wyznaczone wartości do testów:
-0.001; 0; 0,244; 245; 0,246; 0,247; 0,554; 0,555, 0,556; 0,557

Testowanie w oparciu o tablicę decyzyjną

• Technika stosowana w weryfikacji, czy reguły biznesowe zostały poprawnie zastosowane podczas implementacji
• Zwyczajowo używa się jej jeżeli istnieje warunek, który powoduje jakąś akcję
• Możemy mieć do czynienia z wieloma kombinacjami warunków
• Budowana jest tablica, w której warunki są prezentowane na górze tabeli, odpowiadające im akcje na dole a wartości reprezentowane przez logiczne prawda/fałsz
• Może być używana na każdym poziomie testów
 
Jak używać?
I. Określić wszystkie warunki i wypisać je w górnych wierszach pierwszej kolumny
II. Określić wszystkie akcje odpowiadające warunkom, jakie mogą wystąpić i są od warunków zależne – wypisać je w dolnych wierszach pierwszej kolumny
III. Wygenerować wszystkie przypadki i wykluczyć przypadki niemożliwe
IV. Zidentyfikowanie dla wyodrębnionych kombinacji warunków, które akcje i w jaki sposób powinny wystąpić

Testowanie w oparciu o tablicę decyzyjną – Zadanie 3


Zaprojektuj tablicę decyzji dla następującej reguły biznesowej. Klient może użyć kupon na 20 zł do internetowego sklepu z odzieżą. Aby móc go użyć musi zapisać się do newslettera, dostać mail z kuponem, produkty, które znajdują się w koszyku nie mogą być w promocji, ale także kupon nie może być użyty więcej niż jeden raz.

Warunki: 
Zapis do newslettera- tak lub nie
Otrzymanie maila z kuponem – tak lub nie
Produkty w cenie regularnej – tak lub nie
Kupon dostępny – tak lub nie

W każdym powyższym warunku (4 warunki) – mamy dwie opcje, a więc ilość przypadków liczymy następująco:

Ilość przypadków:
2*2*2*2 = 16

Akcje:
Możliwość użycia kodu na 20 zł


Testowanie przejść pomiędzy stanami
• Technika stosowana w celu sprawdzenia, w jaki sposób zachowuje się moduł lub system
• Często używany w oprogramowaniu wbudowanym (z menu)
• Opis zachowania systemu za pomocą diagramu przejść stanów
• Równoważnie opis działania systemu może być opisany przez tabelę stanów, gdzie prezentowane są zależności pomiędzy stanami a wejściami
• Technika często używana do oprogramowania wbudowanego

 Diagram przejść stanów – elementy

·       Stany – możliwe sytuacje w jakich może znaleźć się system (przykładowo ekran powitalny paczkomatu)

·       Przejścia – możliwe poprawne zmiany stanów (przetwarzanie kodu paczki)

·       Zdarzenia – wystąpienie zjawisk, zazwyczaj zewnętrznych, których zajście powoduje odpowiadające im przejścia (wprowadzenie kodu QR)

·       Akcje – czynności jakie może wykonać system podczas przejścia między stanami (wyświetlenie komunikatu o przetworzeniu płatności)

Pokrycie Testami Stanów

·       Pokrycie stanów – pełne pokrycie będzie polegało na przejściu przez każdy stan chociaż raz

·       Pokrycie przejść między stanami – pełne pokrycie będzie polegało na przejściu przynajmniej raz po każdym zdefiniowanym w diagramie przejść

·    

Testowanie oparte na przypadkach użycia

 
• Przypadek użycia jest dokumentem, który opisuje interakcję między użytkownikiem a systemem
• Jest to opis sekwencji kroków, które wykonują aktorzy by w ostateczności użytkownik otrzymał wymagany efekt
• Przypadek użycia ma jeden określony scenariusz
• Metoda ta pozwala na wyprowadzenie przypadków testowych
• Przypadek użycia musi zawierać:

  • Warunki wstępne
  • Scenariusz główny – opis interakcji – zachowanie podstawowe
  • Warunki wyjścia

• Powszechnie wykorzystywane w testach akceptacyjnych
• Wyprowadzenie przypadków testowych z przypadku użycia według Sylabusa ISTQB:

  • Przypadek testowy, który będzie realizować scenariusz główny
  • Po jednym teście dla sytuacji wyjątkowych lub błędów, jeśli są określone
  • Każdy test odnoszący się do błędów powinien być wykonany oddzielnie

 
Przypadek Użycia: PU 1
Nazwa: Udane wyszukanie hotelu w Nowym Yorku na 6 nocy dla 2 dorosłych osób w jednym pokoju. Podróżnicy są z Polski.
Warunki wstępne: Użytkownik jest na stronie https://phptravels.net/hotels.
Kroki przypadku użycia:
1.     Użytkownik w polu City Name wyszukuje New York,United States.
2.     Użytkownik w polu Checkin wybiera najbliższy poniedziałek.
3.     Użytkownik w polu checkout wybiera następną niedzielę.
4.     Użytkownik w polu Travellers rozwija listę.
5.     Użytkownik wybiera w polu Travellers 1 pokój.
6.     Użytkownik wybiera w polu Travellers wybiera 2 osoby dorosłe.
7.     Użytkownik wybiera w polu Travellers Polskie obywatelstwo.
8.     Użytkownik naciska przycisk search.
9.     Użytkownik przegląda oferty hoteli
Warunki końcowe: Użytkownik otrzymuje poprawną listę hoteli w jakich może się zatrzymać podczas swojej podróży do Nowego Yorku.
Sytuacje alternatywne i błędy:
9A – Użytkownik przegląda oferty – Aplikacja nie wyświetla żadnych wyników (Aplikacja informuje o braku dostępnych opcji-nie proponuje innego terminu)
9B – Użytkownik przegląda oferty – Aplikacja wyświetla oferty o innych parametrach niż zadane.

Wyprowadzenie przypadków testowych:
PT1. 1-9
PT2. 1-9A
PT3 1-9B

Białoskrzynkowe techniki testowania

 
• Technika ta opiera się na strukturze wewnętrznej testowanego przedmiotu
• Technika ta może być stosowana na wszystkich poziomach testów
• Najczęściej kojarzone są z testami modułowymi, w których testuje się strukturę wewnętrzną kodu
 
Według Sylabusa ISTQB FL omawiane są dwie techniki testowania białoskrzynkowego:

Testowanie i pokrycie instrukcji kodu
Jest to najprostsza a zarazem najsłabsza technika testowania białoskrzynkowego
Pokrycie wylicza się procentowo jako iloraz liczby instrukcji, które zostały przetestowane przez ilość wszystkich instrukcji wykonywanych w przedmiocie testów

Testowanie i pokrycie decyzji
Testowanie tą techniką skupia się na pokryciu warunków decyzji, czyli momentów, w którym obliczana jest wartość i w zależności od wyniku może wybrać dwie lub więcej ścieżki.

Przykład:

 W przykładzie, aby przetestować instrukcje w pełni – wystarczy przetestować ścieżkę, na której znajdują się wszystkie instrukcje – czyli ścieżkę PRAWĄ. Natomiast aby przetestować i pokryć decyzję – należy przejść ścieżkę LEWĄ i PRAWĄ.
 

Techniki oparte na doświadczeniu

 
• Zbiór technik, które nie bazują na modelach formalnych
• Techniki te opierają się głównie na doświadczeniu, wcześniejszej pracy przy podobnych produktach, wiedzy i umiejętności testera
• Techniki te są jednymi z najbardziej rozpowszechnionych metod testowania
 
Zgadywanie błędów
I. Często nazywana atakiem usterkowym
II. Opiera się na wykonaniu listy przewidywanych błędów, defektów i awarii i przygotowania odpowiednich przypadków testowych

Testowanie eksploracyjne
I. Polega na projektowaniu i wykonywaniu testów nieformalnych, które bazują na wiedzy i doświadczeniu testera i oceniane są w trakcie ich wykonywania i kolejne kroki bazują wyłącznie na decyzji testera
II. Testowanie to jest wskazane, gdy dokumentacja nie istnieje lub jest niekompletna, na zespole testerskim jest wywierana presja czasu lub gdy testerzy są doświadczeni i znają testowane oprogramowanie

Testowanie w oparciu o listę kontrolną
I. Bazuje na testerskiej wiedzy i doświadczeniu zespołu
II.Tester testuje na bazie listy kontrolnej, w której zawarte są warunki do pokrycia
III. Technika opiera się na pozytywnych cechach oprogramowania



Źródło do materiałów: SJSI Sylabus ISTQB FL
 

METODA ROZPISYWANIA TABLIC DECYZYJNYCH

Metoda ta polega na dzieleniu przypadków po pół i dla jednej połowy przypisaniu wartości T i dla drugiej wartości F. Natomiast przy rozpisywaniu kolejnych warunków – dokonujemy podziału na pół bazując na wcześniejszym warunku. Dzięki temu możemy szybko i dokładnie rozpisać przypadki testowe 🙂
Załóżmy, że robimy tablicę decyzyjną na 4 warunki – czyli mamy 16 przypadków testowych.
Zabieramy się za warunek 1 – dzielimy przypadki na pół i w pierwszej połowie dajemy T a w drugim F.




Zabieramy się za warunek 2 – dzielimy przypadki z warunku 1 wariant True na pół i dla pierwszej połowy warunku drugiego ustalamy wartości True a dla drugiej False. Powtarzamy tą czynność dla wartości False jak poniżej.



Zabieramy się za warunek 3 – dzielimy przypadki z warunku 2 wariant True na pół i dla pierwszej połowy warunku trzeciego ustalamy wartości True a dla drugiej False. Powtarzamy tą czynność dla wartości True/False jak poniżej.



Zabieramy się za warunek 4 – dzielimy przypadki z warunku 3 wariant True na pół i dla pierwszej połowy warunku trzeciego ustalamy wartości True a dla drugiej False. Powtarzamy tą czynność dla wartości True/False jak poniżej.



Gotowe! 🙂