Los valores de entrada y salida previstos para el componente de software deben extraerse de la especificación del componente. A continuación, los valores se agrupan en conjuntos con límites identificables. Cada conjunto, o partición, contiene valores que se espera que sean procesados por el componente de la misma manera. La partición de los rangos de datos de prueba se explica en la técnica de diseño de casos de prueba de partición de equivalencia. Es importante tener en cuenta tanto las particiones válidas como las inválidas cuando se diseñan casos de prueba.
La demostración se puede hacer utilizando una función escrita en 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; }}
En base al código, los vectores de entrada de están particionados. Los bloques que tenemos que cubrir son la declaración de desbordamiento y la declaración de subdesbordamiento y ninguno de estos 2. Eso da lugar a 3 clases equivalentes, desde la propia revisión del código.
Notamos que hay un tamaño fijo de entero por tanto:-
MIN_VALUE ≤ x + y ≤ MAX_VALUE
Notamos que el parámetro de entrada a y b son ambos enteros, por lo tanto existe orden total sobre ellos.Cuando calculamos las igualdades:-
x + y = Valor_máximo Valor_mínimo = x + y
obtenemos los valores que están en el límite, inclusive, es decir, estos pares de (a,b) son combinaciones válidas, y no habría desbordamiento o subdesbordamiento para ellos.
Por otro lado:-
x + y = Valor_máximo + 1
da los pares de (a,b) que son combinaciones inválidas, el desbordamiento ocurriría para ellos. De la misma manera:-
x + y = MIN_VALUE – 1
da pares de (a,b) que son combinaciones inválidas,Underflow ocurriría para ellos.
Los valores límite (dibujados sólo para el caso de desbordamiento) se están mostrando como la línea naranja en la figura de la derecha.
Por otro ejemplo, si los valores de entrada fueran meses del año, expresados como enteros, el parámetro de entrada ‘mes’ podría tener las siguientes particiones:
... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|-------------------invalid partition 1 valid partition invalid partition 2
El límite entre dos particiones es el lugar donde cambia el comportamiento de la aplicación y no es un número real en sí mismo. El valor del límite es el valor mínimo (o máximo) que se encuentra en el límite. El número 0 es el número máximo en la primera partición, el número 1 es el valor mínimo en la segunda partición, ambos son valores límite. Los casos de prueba deben ser creados para generar entradas o salidas que caerán en y a cada lado de cada frontera, lo que resulta en dos casos por frontera. Los casos de prueba a cada lado de un límite deben estar en el incremento más pequeño posible para el componente bajo prueba, para un entero esto es 1, pero si la entrada fuera un decimal con 2 lugares entonces sería .01. En el ejemplo anterior hay valores límite en 0,1 y 12,13 y cada uno debe ser probado.
El análisis de valores límite no requiere particiones inválidas. Tome un ejemplo en el que un calentador se enciende si la temperatura es de 10 grados o más. Hay dos particiones (temperatura≤10, temperatura>10) y dos valores límite que deben probarse (temperatura=10, temperatura=11).
Cuando un valor límite cae dentro de la partición no válida, el caso de prueba se diseña para garantizar que el componente de software maneja el valor de forma controlada. El análisis de valores límite puede utilizarse a lo largo de todo el ciclo de pruebas y es igualmente aplicable en todas las fases de prueba.