Partición de equivalencia

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Técnica de pruebas de software
La

partición de equivalencia o partición de clase de equivalencia (ECP) es una técnica de prueba de software que divide los datos de entrada de una unidad de software en particiones de datos equivalentes de los cuales se pueden derivar casos de prueba. En principio, los casos de prueba están diseñados para cubrir cada partición al menos una vez. Esta técnica intenta definir casos de prueba que descubren clases de errores, reduciendo así el número total de casos de prueba que deben desarrollarse. Una ventaja de este enfoque es la reducción del tiempo necesario para probar el software debido a la menor cantidad de casos de prueba.

La partición de equivalencia normalmente se aplica a las entradas de un componente probado, pero puede aplicarse a las salidas en casos excepcionales. Las particiones de equivalencia generalmente se derivan de la especificación de requisitos para los atributos de entrada que influyen en el procesamiento del objeto de prueba.

El concepto fundamental de ECP proviene de la clase de equivalencia que a su vez proviene de la relación de equivalencia. Un sistema de software es en efecto una función computable implementada como un algoritmo en algún lenguaje de programación de implementación. Dado un vector de prueba de entrada algunas instrucciones de ese algoritmo se cubren, (ver cobertura de código para detalles) otros no. Esto da la relación interesante entre vectores de prueba de entrada:- aCb{displaystyle ¿Qué? es una relación de equivalencia entre vectores de prueba a, b si y sólo si la huella del pie de cobertura del vectores a, b son exactamente iguales, es decir, cubren las mismas instrucciones, al mismo paso. Esto significaría evidentemente que la relación cubre C dividiría el dominio del vector de prueba en clase de equivalencia múltiple. Esta partición se llama partición de clases de equivalencia de la entrada de prueba. Si hay N clases equivalentes, sólo N Los vectores son suficientes para cubrir completamente el sistema.

La demostración se puede realizar utilizando una función escrita en C:

int safe_add() int a, int b ){} int c = a + b; si () a  0 " b  0 " c . 0 ) {} fprintf () stderr, "¡Overflow (positivo)!n" ); }  si () a c) 0 " b c) 0 " c >= 0 ) {} fprintf () stderr, "¡Overflow (negativo)!n" ); }  Regreso c;}

Según el código, los vectores de entrada de [a,b] están particionados. Los bloques que debemos cubrir son el desbordamiento en dirección positiva, dirección negativa y ninguno de estos 2. Eso da lugar a 3 clases equivalentes, a partir de la revisión del código en sí.

Demostración de la clase de equidad

Para resolver el problema de entrada, nos refugiamos en la inecuación

zmin≤ ≤ x+Sí.≤ ≤ zmax{displaystyle z_{min}leq x+yleq z_{max}

observamos que hay un tamaño fijo de Integer (informática), por lo tanto, la z se puede reemplazar con:-

INT_MIN ≤ x + Sí. ≤ INT_MAX

y

con x ∈ { INT_MIN... INT_MAX } y y ∈ { INT_MIN... INT_MAX }

Los valores del vector de prueba en la estricta condición de igualdad que es INT_MIN = x + y y INT_MAX = x + y se denominan valores límite, el análisis de valores límite tiene información detallada al respecto. Tenga en cuenta que el gráfico solo cubre el caso de desbordamiento, primer cuadrante para valores positivos de X e Y.

En general, una entrada tiene ciertos rangos que son válidos y otros rangos que no son válidos. Los datos no válidos aquí no significan que los datos sean incorrectos, significa que estos datos se encuentran fuera de una partición específica. Esto se puede explicar mejor con el ejemplo de una función que toma un parámetro "mes". El rango válido para el mes es del 1 al 12, lo que representa de enero a diciembre. Este rango válido se llama partición. En este ejemplo hay dos particiones más de rangos no válidos. La primera partición no válida sería ≤ 0 y la segunda partición no válida sería ≥ 13.

12 13 14 15.....
-----------------------------
partición inválida 1 partición inválida 2

La teoría de pruebas relacionada con la partición de equivalencia dice que solo se necesita un caso de prueba de cada partición para evaluar el comportamiento del programa para la partición relacionada. En otras palabras, basta con seleccionar un caso de prueba de cada partición para comprobar el comportamiento del programa. Al utilizar más o incluso todos los casos de prueba de una partición no se encontrarán nuevos fallos en el programa. Los valores dentro de una partición se consideran "equivalentes". De este modo, el número de casos de prueba se puede reducir considerablemente.

Un efecto adicional de aplicar esta técnica es que también encontrarás los llamados "sucios" Casos de prueba. Un evaluador inexperto puede verse tentado a utilizar como casos de prueba los datos de entrada del 1 al 12 del mes y olvidarse de seleccionar algunas de las particiones no válidas. Esto daría lugar a un gran número de errores innecesarios. casos de prueba por un lado y falta de casos de prueba para los rangos sucios por el otro.

La tendencia es relacionar la partición de equivalencia con las llamadas pruebas de caja negra, que consisten en comprobar estrictamente un componente de software en su interfaz, sin tener en cuenta las estructuras internas del software. Pero si analizamos más de cerca el tema, hay casos en los que también se aplica a las pruebas de caja gris. Imagine una interfaz para un componente que tiene un rango válido entre 1 y 12 como el ejemplo anterior. Sin embargo, internamente la función puede tener una diferenciación de valores entre 1 y 6 y valores entre 7 y 12. Dependiendo del valor de entrada, el software internamente se ejecutará a través de diferentes rutas para realizar acciones ligeramente diferentes. Con respecto a las interfaces de entrada y salida del componente, esta diferencia no se notará; sin embargo, en sus pruebas de caja gris le gustaría asegurarse de que se examinen ambas rutas. Para lograr esto es necesario introducir particiones de equivalencia adicionales que no serían necesarias para las pruebas de caja negra. Para este ejemplo esto sería:

... -2 -1 0 1.... 6 7..... 12 13 14 15.....
------------------------------------------------------------
partición inválida 1 P1 P2
particiones válidas

Para verificar los resultados esperados, necesitará evaluar algunos valores intermedios internos en lugar de la interfaz de salida. No es necesario que utilicemos múltiples valores de cada partición. En el escenario anterior podemos tomar -2 de la partición 1 no válida, 6 de la partición P1 válida, 7 de la partición P2 válida y 15 de la partición 2 no válida.

La partición de equivalencia no es un método independiente para determinar casos de prueba. Debe complementarse con un análisis de valores límite. Una vez determinadas las particiones de posibles entradas, se debe aplicar el método de análisis de valores límite para seleccionar los casos de prueba más efectivos a partir de estas particiones.

Limitaciones

En los casos en los que los rangos o conjuntos de datos implicados se acercan a la simplicidad (Ejemplo: 0-10, 11-20, 21-30) y probar todos los valores sería práctico, se debe realizar una cobertura de prueba general utilizando todos los valores dentro y en los límites de los rangos. ser considerado. La cobertura de prueba general puede revelar errores que no se detectarían utilizando el método de partición de equivalencia, si el software incluye subparticiones que el evaluador desconoce. Además, en casos simplistas, el beneficio de reducir el número de valores de prueba mediante el uso de partición de equivalencia disminuye, en comparación con los casos que involucran rangos más grandes (Ejemplo: 0-1000, 1001-2000, 2001-3000).

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save