De förväntade inmatnings- och utmatningsvärdena för programvarukomponenten ska hämtas från komponentspecifikationen. Värdena grupperas sedan i uppsättningar med identifierbara gränser. Varje uppsättning, eller partition, innehåller värden som förväntas behandlas av komponenten på samma sätt. Partitionering av testdataområden förklaras i tekniken för utformning av testfall med ekvivalenspartitionering. Det är viktigt att ta hänsyn till både giltiga och ogiltiga partitioner när man utformar testfall.
Demonstrationen kan göras med hjälp av en funktion skriven i Java.
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; }}
På grundval av koden partitioneras ingångsvektorerna av. De block vi behöver täcka är överflödsdeklarationen och underflödsdeklarationen och ingen av dessa 2. Detta ger upphov till 3 likvärdiga klasser, från själva kodgranskningen.
Vi noterar att det finns en fast storlek på heltal därmed:Vi noterar att det finns ett fast antal heltal –
MIN_VALUE ≤ x + y ≤ MAX_VALUE
Vi noterar att ingångsparametrarna a och b båda är heltal, vilket innebär att det finns en total ordning för dem.När vi beräknar likheterna:-
x + y = MAX_VALUE MIN_VALUE = x + y
får vi tillbaka de värden som ligger på gränsen, inklusive, det vill säga att dessa par av (a,b) är giltiga kombinationer, och inget under- eller överflöde skulle inträffa för dem.
Å andra sidan:-
x + y = MAX_VALUE + 1
får vi tillbaka de par av (a,b) som är ogiltiga kombinationer, och ett överflöde skulle inträffa för dem. På samma sätt:-
x + y = MIN_VALUE – 1
ger par av (a,b) som är ogiltiga kombinationer,Underflow skulle inträffa för dem.
Gränsvärden (ritade endast för överflödsfallet) visas som den orangea linjen i den högra figuren.
För ett annat exempel, om ingångsvärdena är årets månader, uttryckta som heltal, kan ingångsparametern ”månad” ha följande partitioner:
... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|-------------------invalid partition 1 valid partition invalid partition 2
Gränsen mellan två partitioner är den plats där programmets beteende förändras och är inte ett verkligt tal i sig självt. Gränsvärdet är det lägsta (eller högsta) värde som finns vid gränsen. Talet 0 är det högsta talet i den första partitionen, talet 1 är det lägsta värdet i den andra partitionen, båda är gränsvärden. Testfall bör skapas för att generera ingångar eller utgångar som faller på och på vardera sidan av varje gränsvärde, vilket resulterar i två fall per gränsvärde. Testfallen på varje sida av en gräns bör vara i minsta möjliga steg för den komponent som testas, för ett heltal är detta 1, men om ingången var en decimal med två ställen skulle det vara 0,01. I exemplet ovan finns det gränsvärden vid 0,1 och 12,13 och vart och ett av dem bör testas.
Gränsvärdesanalys kräver inga ogiltiga partitioner. Ta ett exempel där en värmare sätts på om temperaturen är 10 grader eller kallare. Det finns två partitioner (temperature≤10, temperature>10) och två gränsvärden som ska testas (temperature=10, temperature=11).
Om ett gränsvärde faller inom den ogiltiga partitionen utformas testfallet för att säkerställa att programvarukomponenten hanterar värdet på ett kontrollerat sätt. Gränsvärdesanalys kan användas under hela testcykeln och är lika tillämpbar i alla testfaser.