El análisis de valores límite es una técnica de prueba de software en la que las pruebas se diseñan para incluir representantes de valores límite en un rango. La idea proviene del límite . [1] Dado que hay un conjunto de vectores de prueba para probar el sistema, se puede definir una topología en ese conjunto. Las entradas que pertenecen a la misma clase de equivalencia según lo definido por la teoría de partición de equivalencia constituirían la base . Dado que los conjuntos base son vecinos , existiría un límite entre ellos. Los vectores de prueba a cada lado del límite se denominan valores límite. En la práctica, esto requeriría que los vectores de prueba se puedan ordenar y que los parámetros individuales sigan algún tipo de orden (ya sea orden parcial u orden total ).
Formalmente, los valores límite se pueden definir de la siguiente manera:
En términos más sencillos, se prueban los valores en los bordes mínimo y máximo de una partición de equivalencia . Los valores pueden ser rangos de entrada o salida de un componente de software, o también pueden ser la implementación interna. Dado que estos límites son ubicaciones comunes de errores que resultan en fallas de software, se los utiliza con frecuencia en casos de prueba .
Los valores de entrada y salida esperados para el componente de software deben extraerse de la especificación del componente. Luego, los valores se agrupan en conjuntos con límites identificables. Cada conjunto, o partición, contiene valores que se espera que el componente procese 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 considerar tanto las particiones válidas como las no válidas al diseñar casos de prueba.
La demostración se puede realizar utilizando una función escrita en Java .
clase Segura { estática int add ( int a , int b ) { int c = a + b ; si ( a >= 0 && b >= 0 && c < 0 ) { System . err . println ( "¡Desbordamiento!" ); } si ( a < 0 && b < 0 && c >= 0 ) { System . err . println ( "¡Desbordamiento!" ); } devolver c ; } }
En base al código, los vectores de entrada de [ a,b ] están particionados. Los bloques que necesitamos cubrir son la sentencia de desbordamiento y la sentencia de desbordamiento inferior y ninguna de estas 2. Esto da lugar a 3 clases equivalentes, a partir de la propia revisión del código.
Observamos que hay un tamaño fijo de número entero, por lo tanto:
Observamos que los parámetros de entrada a y b son ambos enteros, por lo tanto existe un orden total en ellos. Cuando calculamos las igualdades:
recuperamos los valores que están en el límite, inclusive, es decir, estos pares de ( a,b ) son combinaciones válidas y no se produciría ningún desbordamiento ni subdesbordamiento para ellos.
Por otro lado:-
Proporciona pares de ( a,b ) que son combinaciones no válidas. Se produciría un desbordamiento en estos casos. De la misma manera:
da pares de ( a,b ) que son combinaciones no válidas, se produciría un desbordamiento para ellos.
Los valores límite (dibujados solo para el caso de desbordamiento) se muestran como la línea naranja en la figura del lado derecho.
Para otro ejemplo, si los valores de entrada fueran meses del año, expresados como números enteros, el parámetro de entrada 'mes' podría tener las siguientes particiones:
... -2 -1 0 1 ................ 12 13 14 15 ..... --------------|-------------------|------------------------ ----partición 1 no válida partición válida partición 2 no válida
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 límite es el valor mínimo (o máximo) que está 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. Se deben crear casos de prueba para generar entradas o salidas que caerán en y hacia cada lado de cada límite, lo que da como resultado dos casos por límite. Los casos de prueba en 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 probarse.
El análisis de valores límite no requiere particiones no válidas. Tomemos como ejemplo un calentador que se enciende si la temperatura es de 10 grados o menos. Hay dos particiones (temperatura ≤ 10, temperatura > 10) y dos valores límite que se deben probar (temperatura = 10, temperatura = 11).
Cuando un valor límite cae dentro de la partición no válida, el caso de prueba está diseñado para garantizar que el componente de software maneje el valor de manera controlada. El análisis de valores límite se puede utilizar durante todo el ciclo de prueba y es igualmente aplicable en todas las fases de prueba.