Spodziewane wartości wejściowe i wyjściowe dla komponentu oprogramowania powinny zostać wyodrębnione ze specyfikacji komponentu. Wartości te są następnie grupowane w zbiory o identyfikowalnych granicach. Każdy zbiór, lub partycja, zawiera wartości, które zgodnie z oczekiwaniami mają być przetwarzane przez komponent w ten sam sposób. Podział zakresów danych testowych jest wyjaśniony w technice projektowania przypadków testowych z podziałem równoważności. Ważne jest, aby podczas projektowania przypadków testowych brać pod uwagę zarówno partycje poprawne, jak i niepoprawne.
Demonstracja może zostać przeprowadzona przy użyciu funkcji napisanej w Javie.
class Safe { static int add(int a, int b) { int c = a + b ; if (a >= 0 && b >= 0 && c < 0) { System.err.println("Overflow!"); } if (a < 0 && b < 0 && c >= 0) { System.err.println("Underflow!"); } return c; }}
Na podstawie kodu, wektory wejściowe of są partycjonowane. Bloki, które musimy pokryć, to deklaracja overflow i deklaracja underflow i żaden z tych 2. To daje podstawę do 3 równoważnych klas, z samego przeglądu kodu.
Zauważamy, że istnieje stały rozmiar liczby całkowitej stąd:-
MIN_VALUE ≤ x + y ≤ MAX_VALUE
Zauważamy, że zarówno parametr wejściowy a jak i b są liczbami całkowitymi, stąd istnieje na nich całkowite uporządkowanie.Gdy obliczymy równości:-
x + y = MAX_VALUE MIN_VALUE = x + y
otrzymamy z powrotem wartości, które są na granicy, włącznie, czyli te pary (a,b) są poprawnymi kombinacjami i nie wystąpi dla nich niedopełnienie lub przepełnienie.
Z drugiej strony:-
x + y = MAX_VALUE + 1
daje pary (a,b), które są niepoprawnymi kombinacjami, wystąpiłoby dla nich przepełnienie. W ten sam sposób:-
x + y = MIN_VALUE – 1
daje pary (a,b), które są nieważnymi kombinacjami,Underflow wystąpiłby dla nich.
Wartości graniczne (narysowane tylko dla przypadku przepełnienia) są pokazane jako pomarańczowa linia na rysunku po prawej stronie.
Na innym przykładzie, jeśli wartościami wejściowymi byłyby miesiące roku, wyrażone jako liczby całkowite, parametr wejściowy „miesiąc” mógłby mieć następujące partycje:
... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|-------------------invalid partition 1 valid partition invalid partition 2
Granica pomiędzy dwiema partycjami jest miejscem, w którym zmienia się zachowanie aplikacji i sama nie jest liczbą rzeczywistą. Wartość graniczna to minimalna (lub maksymalna) wartość, która znajduje się na granicy. Liczba 0 jest maksymalną liczbą w pierwszej partycji, liczba 1 jest minimalną wartością w drugiej partycji, obie są wartościami granicznymi. Przypadki testowe powinny zostać utworzone w celu wygenerowania wejść lub wyjść, które znajdą się po obu stronach każdej z granic, co skutkuje dwoma przypadkami na granicę. Przypadki testowe po każdej stronie granicy powinny być w najmniejszym możliwym przyroście dla testowanego komponentu, dla liczby całkowitej jest to 1, ale jeśli wejście było dziesiętne z 2 miejscami wtedy byłoby to .01. W powyższym przykładzie istnieją wartości graniczne 0,1 i 12,13 i każda z nich powinna być przetestowana.
Analiza wartości granicznych nie wymaga nieważnych partycji. Weźmy przykład, w którym grzejnik jest włączony, jeśli temperatura jest 10 stopni lub zimniejsza. Istnieją dwie partycje (temperatura≤10, temperatura>10) i dwie wartości graniczne do przetestowania (temperatura=10, temperatura=11).
Gdy wartość graniczna mieści się w nieważnej partycji, przypadek testowy jest zaprojektowany tak, aby zapewnić, że komponent oprogramowania obsługuje tę wartość w kontrolowany sposób. Analiza wartości granicznych może być używana w całym cyklu testowania i jest równie dobrze stosowana na wszystkich etapach testowania.