Projektowanie przypadków testowych – Klasy równoważności

Jak podzielić dziedzinę na klasy poprawne i niepoprawne w technice klas równoważności?

Junior testerzy stoją przed ogromnym wyzwaniem jakim jest projektowanie swoich pierwszych przypadków testowych.Jak zmierzyć się z projektowaniem przypadków testowych? Skąd wiedzieć jakie podejście zastosować dla konkretnych aplikacji i ich funkcjonalności? Jakiej metody użyć do aplikacji ze skomplikowaną logiką biznesową np. dla aplikacji przydzielającej kredyty na różnych warunkach uzależnionych od dochodów klienta? Skąd pewność, że zaprojektowaliśmy wystarczającą liczbę przypadków testowych? Na te wszystkie pytania odpowiadamy podczas praktycznych zajęć na kursie „Tester Oprogramowania PRO”, a dziś Ewelina Wielemborek – nasza trenerka, która prowadzi na kursie moduł „Techniki Projektowania Testów” – postara się przybliżyć Wam tajniki projektowania testów dla przykładowej funkcjonalności z wykorzystaniem techniki klas równoważności.  Niezależenie czy jesteś testerem manualnym czy testerem automatyzującym (czasem nazywanym testerem automatycznym) powinieneś wiedzieć jak poprawnie projektować przypadki testowe.

Techniki projektowania testów

Tester oprogramowania wykorzystuje techniki projektowania testów, aby identyfikować warunki testowe, przypadki testowe i dane testowe. Według sylabusu ISTQB wyróżniamy techniki czarnoskrzynkowe i techniki białoskrzynkowe.

Techniki białoskrzynkowe opierają się na rozpoznanej strukturze systemu (np. kod źródłowy oprogramowania w języku programowania) Techniki czarnoskrzynkowe opierają się na analizie tzw. podstawy testów – czyli np. specyfikacji i dokumentacji systemu. Korzystając z technik czarnoskrzynkowych podczas projektowania testów  nie odwołujemy się do wewnętrznej struktury systemu (np. kodu źródłowego testowanej aplikacji), ponieważ nie posiadamy o niej żadnych informacji.

Wśród technik czarnoskrzynkowych wyróżniamy: klasy równoważności, wartości brzegowe, tablice decyzyjne, diagramy stanów oraz przypadki użycia. Skupimy się na pierwszej z nich, klasach równoważności.

Klasy równoważności

Na wstępie zdefiniujmy pojęcie dziedziny, która określa wszystkie możliwe wartości dla danych, które system może przyjąć.

Tester oprogramowania wykorzystując technikę klas równoważności dokonuje podziału dziedziny na tzw. klasy czyli takie zbiory danych o podobnym charakterze i sposobie przetwarzania, dla których system zachowuje się analogicznie. Wyróżniamy klasy poprawne – takie dla których system zachowa się w poprawny sposób (wprowadzone dane zostaną przyjęte i przetworzone bez błędów) i klasy niepoprawne czyli takie dla których system nie zadziała poprawnie (czyli takie, które moduł lub system powinien odrzucić). Następnie z każdej klasy wybieramy jednego reprezentanta na którym przeprowadzamy test. Ustalając klasy równoważności należy zapewnić aby:

  • cała dziedzina wartości wejściowych została pokryta klasami oraz
  • każda wartość wejściowa należała dokładnie do jednej klasy.

Na poniższych rysunkach czarne obramowanie określa podzbiór dziedziny – klasę.
Grafika pierwsza przedstawia niepoprawny podział dziedziny, ponieważ część elementów nie należy do żadnej klasy (1) lub elementy należą do dwóch klas (2). 

Grafika druga przedstawia poprawny podział dziedziny. Każdy element należy 

Jak ta metoda wygląda w praktyce?

Aby zaprojektować przypadki testowe należy przejść przez cztery kroki:

  1. Określić przedmiot testowy.
  2. Dokonać opisu dziedziny.
  3. Wyprowadzić elementy pokrycia.
  4. Zdefiniować przypadki testowe.

Poniżej opiszemy wszystkie te kroki:

  1. Przedmiot testowy jak sama nazwa wskazuje to element jaki poddajemy testom np. funkcjonalność wypłaty z bankomatu (na potrzeby tego zadania funkcjonalność realizacji wypłaty zostaje uproszczona).
  2. Następnie analizujemy w jaki sposób możemy podzielić naszą dziedzinę. Jakie charakterystyki ją określają? Pierwszy sposób podziału czyli pierwsza charakterystyka dziedziny to zakres kwoty wypłaty  bankomatu. Nasz bankomat realizuje wypłatę od 100 zł do 2000 zł. Zatem naszą pierwszą charakterystyką będzie wartość wypłaty. Podczas analizy wartości wypłaty dochodzimy do wniosku, że można podzielić ją na odpowiednie przedziały. Należy określić które wartości będą należały do klas poprawnych a które do niepoprawnych.
    Klasa poprawna to przedział od 100 zł do 2000 zł – ponieważ dla tych wartości bankomat zrealizuje wypłatę. Klasa niepoprawna to przedział zawierający wartości poniżej 100 zł.
    W tym przypadku możemy zauważyć, że mamy jeszcze jedną klasę niepoprawną – zbiór wartości powyżej 2000.
    Zatem druga klasa niepoprawna to przedział zawierający wartości powyżej 2000 zł .
  3. Następnym krokiem jest wyprowadzenie elementów pokrycia. Tutaj pokryć możemy nasze klasy.
IDElement Pokrycia
EP1Zbiór wartości mniejszych niż 100 zł
EP2Zbiór wartości od 100 zł do 2000 zł
EP3Zbiór wartości większych od 2000 zł

4. Ostatnim krokiem jest zaprojektowanie przypadków testowych. Technika klas równoważności określa, że w jednym przypadku testowym można pokryć tylko jeden element z klasy niepoprawnej i dowolną liczbę elementów z klasy poprawnej.

Przypadek testowyWejściePokryte elementy pokryciaWyjście
Należące do klas poprawnychNależące do klas niepoprawnych
PT1500 złEP1 Bankomat zrealizował wypłatę.
PT250 zł EP2Bankomat nie zrealizował wypłaty.
PT33000 zł EP3Bankomat nie zrealizował wypłaty.

W ten sposób zaprojektowaliśmy 3 przypadki testowe dla funkcjonalności wypłaty z bankomatu wykorzystując klasy równoważności. Oczywiście mieliśmy tutaj dosyć trywialny przykład, którego celem było przede wszystkim zrozumienie metody. Dodatkowe charakterystyki i bardziej skomplikowane przykłady realizujemy na kursie „Testera Oprogramowania PRO”, zapisz się na kurs i dowiedz się jak je realizować 🙂 

Przewiń do góry