Analiza Wartości Granicznych – Technika Testowania Czarnej Skrzynki
Wiemy już, że testowanie czarnej skrzynki polega na walidacji systemu bez znajomości jego wewnętrznego projektu. Omówiliśmy również pułapki związane z partycjonowaniem równoważności i jak mogą one zawieść na granicach partycji. W przypadku, gdy nie czytałeś naszego artykułu na temat Partycji Równoważnej, bardzo polecam przeczytanie go przed przeczytaniem tego. W tym artykule, omówimy inną technikę testowania czarnej skrzynki, znaną jako Analiza Wartości Granicznych. Zobaczymy również jak ta technika uzupełnia Partycjonowanie Równoważności.
- Co to jest Analiza Wartości Granicznej?
- Jak wykonać Analizę Wartości Granicznej?
- Boundary Value Analysis with Equivalence Partitioning
- Pitfalls of Boundary value Analysis
What is Boundary Value Analysis?
Podstawą Boundary Value Analysis (BVA) jest testowanie granic na partycjach (Remember Equivalence Partitioning !). BVA jest rozszerzeniem partycjonowania równoważności. Jednak jest to możliwe do zastosowania tylko wtedy, gdy partycja jest uporządkowana, składająca się z danych numerycznych lub sekwencyjnych. Minimalne i maksymalne wartości partycji są jej wartościami granicznymi.
Widzieliśmy, że istnieją duże szanse na znalezienie wad na granicach partycji (np. programista używający >10 zamiast >= 10 dla warunku). Samo partycjonowanie równoważności nie było wystarczające do wychwycenia takich defektów. Dlatego powstała potrzeba zdefiniowania nowej techniki, która może wykrywać anomalie na granicach partycji. W ten sposób analiza wartości brzegowych weszła do obrazu.
Analiza wartości brzegowych może być wykonywana na wszystkich poziomach testu, a jej główne zastosowanie to zakres liczb, dat i czasu.
How to Do Boundary Value Analysis?
Teraz, gdy mamy już pewne pojęcie o analizie wartości brzegowych, zrozumiejmy, jak wyprowadzić warunki testowe przy użyciu tej techniki. Odniesiemy się do tego samego przykładu formularza gimnastycznego (Odwołaj się do naszego artykułu o Partycjonowaniu Równoważności), gdzie musimy wprowadzić Wiek.
Pierwszym krokiem Analizy Wartości Granicznej jest stworzenie Partycjonowania Równoważności, które wyglądałoby jak poniżej.
Teraz skoncentruj się na Ważnym Partycjonowaniu, które mieści się w zakresie 16-60. Mamy 3-stopniowe podejście do identyfikacji granic:
- Zidentyfikuj dokładną wartość graniczną tej klasy partycji – która wynosi 16 i 60.
- Uzyskaj wartość graniczną, która jest o jeden mniejsza niż dokładna wartość graniczna – która wynosi 15 i 59.
- Uzyskaj Wartość Graniczną, która jest o jeden większa od dokładnej Wartości Granicznej – która wynosi 17 i 61.
Jeśli połączymy je wszystkie, otrzymamy poniższe kombinacje dla Wartości Granicznej dla Kryterium Wieku.
Ważne Warunki Graniczne : Age = 16, 17, 59, 60
Invalid Boundary Conditions : Wiek = 15, 61
Jasno widać, że ważne warunki brzegowe należą do klasy podziału Valid, a nieważne warunki brzegowe należą do klasy podziału Invalid.
Czy można się domyślić, dlaczego nie użyliśmy 16.1, 15.9, 59.9 i 60.1 jako wartości przyrostu i dekrementu granicy? Jest to pojęcie, które w większości artykułów jest niewystarczająco wyjaśnione. Dlatego weźmy inny przykład, aby to wyjaśnić. Załóżmy, że wprowadzasz swoją wagę na stronie internetowej. W oparciu o Twoją wagę i wzrost, strona poda Ci wskaźnik masy ciała (BMI). W polu wprowadzania wagi można wpisać wartości od 30 do 150 kg. Pole wejściowe wagi dopuszcza tylko liczby naturalne, tzn. dodatnie liczby całkowite!
W tym przypadku, jeśli utworzysz granice za pomocą tej samej metody – otrzymasz
Valid Boundary Conditions : Age = 30, 31, 149, 150
Invalid Boundary Conditions : Age = 29, 151
Następnie rozważmy ten sam scenariusz, ale pole wprowadzania masy dopuszcza liczby dziesiętne do 1 miejsca po przecinku. W tym przypadku warunki brzegowe będą wyglądać następująco:
Dopuszczalne warunki brzegowe : Age = 30, 30.1, 149.9, 150
Invalid Boundary Conditions : Wiek = 29.9, 150.1
Czy widzisz różnicę? Bierzemy minimalną dopuszczalną wartość po obu stronach granicy. Jeśli przyjmiemy wartość 30.01, wtedy kończymy testowanie oprogramowania dla dwóch miejsc po przecinku, gdzie wymaganiem jest jedno miejsce po przecinku. Jest to oddzielny warunek testowy i nie powinien być mieszany z wartością graniczną.
Pomiar pokrycia wartości granicznej dla partycji może nastąpić jako liczba testowanych wartości granicznych podzielona przez całkowitą liczbę zidentyfikowanych wartości testów granicznych.
Analiza wartości granicznej z partycjonowaniem równoważności
Mamy teraz dobre zrozumienie analizy wartości granicznej. Zobaczmy więc, jak możemy połączyć ją z Partycjonowaniem Równoważności, aby uzyskać pełny zestaw warunków testowych.
Powracając do naszego wcześniejszego przykładu, przejrzyjmy diagram ponownie.
Zakres wynosi od 16 – 60, a Analiza Wartości Granicznej daje nam warunki testowe jako 15, 16, 17, 59, 60, 61. Jeśli przyjrzysz się uważnie, czy nie uważasz, że mamy już pokryte Valid Equivalence partitioning przez pokrycie 17, 59 i Invalid Equivalence Partitioning przez pokrycie 15 i 61? W końcu podział równoważny mówi, że powinniśmy wybrać liczbę z przedziału 16-60 dla ważnego podziału i mniej niż 16 lub więcej niż 60 dla podziału nieprawidłowego. Zatem, jeśli wartość graniczna już pokrywa podział równoważny, dlaczego potrzebujemy podziału jako oddzielnej techniki? Jest to pojęcie, które nie jest jasne dla większości ludzi, a nie wiele artykułów wyjaśniło to jasno.
Teoretycznie, wartość brzegowa rzeczywiście pokryła partycjonowanie równoważności, ale nadal potrzebujemy partycji. Jeśli zastosujemy tylko wartość Boundary, a to się nie powiedzie, nigdy nie będziemy wiedzieć, czy warunek krawędziowy zawiódł, czy cała partycja zawiodła. Wyjaśnijmy to na przykładzie. Kontynuując z naszym formularzem siłowni, załóżmy, że programista napisał poniższą logikę :
If (age < = 17 ) Then Don’t allow Gym Membership
If (age > 60) Then Don’t allow Gym Membership
Jeśli spojrzysz na logikę, zdasz sobie sprawę, że logika powinna być If (age <17), ale programista dodał = niewłaściwy znak. Czy zdałeś sobie również sprawę, że brakuje logiki dla całej ważnej partycji? If (age>=16 and age <= 60 ) Then allow Gym membership !
Jeśli użyjemy tylko wartości warunku brzegowego 17, nie powiedzie się wykonanie testu. Nie powie nam jednak, czy zawiódł warunek brzegowy, czy też cała partycja. W związku z tym konieczne jest użycie wartości partycji Equivalence, która nie jest wartością brzegową. W tym przypadku, jeśli użyjemy wartości 20, spowoduje to niepowodzenie wykonania. Będzie to wyraźna wskazówka, że programista przegapił implementację całej partycji.
Więc jeśli połączymy zarówno wartość brzegową, jak i partycję równoważności, nasze warunki testowe będą :
Valid Boundary Conditions : Age = 16, 17, 59, 60
Invalid Boundary Conditions : Age = 15, 61
Valid Equivalence Partition : Age = 25
Invalid Equivalence Partition : Age = 5 , 65
Pitfalls of BVA
Po zastosowaniu zarówno podziału wartości brzegowych, jak i podziału równoważności, czy możemy śmiało powiedzieć, że uzyskaliśmy całe wymagane pokrycie? Niestety, nie jest to takie proste! Boundary value i Equivalence partitioning zakładają, że aplikacja nie pozwoli na wpisanie żadnych innych znaków lub wartości. Takie znaki, jak @ czy wartości ujemne, a nawet alfabety, nie będą mogły być wprowadzane. To założenie nie dotyczy jednak wszystkich aplikacji i trzeba je koniecznie przetestować, zanim będziemy mogli powiedzieć, że wartość pola jest całkowicie działająca.
Apart from that, we can have situations where the input value depends on the decision of another value. Np. Jeśli formularz Gym ma inne pole Mężczyzna i Kobieta, a granica wieku będzie się różnić w zależności od tego wyboru. Sama wartość graniczna nie poradzi sobie z takimi zmianami, a to prowadzi nas do kolejnej techniki czarnej skrzynki zwanej testowaniem tabeli decyzyjnej. Omówimy ją szczegółowo w naszym następnym artykule. Stay tuned!