Particiones en clases de EQ

Particiones en clases de EQ

de Martin Corredera Decuadro -
Número de respuestas: 2

Buenas tardes/noches, una consulta, haciendo parciales hay una pregunta en la cual dice:
Si estoy aplicando clases de equivalencia, podría ocurrir que con un caso de prueba cubra mas de una clase de equivalencia.

Y viendo las diapositivas del teórico aparece:

2.Hasta cubrir todas las clases de eq. con casos de prueba, escribir un nuevo caso de prueba que cubra tantas clases de eq. válidas, no cubiertas, como sea posible.

Lo que no me queda claro es cómo podrías a partir de una entrada, abarcar varias clases de equivalencia que sean validas, no de errores.

Pensando en el ejemplo que hay de openfing, un caso de prueba válido sería algo así como (x,x,y) talque x>=y ? y ahí abarcarías la clase de equivalencia equilátero y escaleno, pero no se si esto es válido.

Gracias!

En respuesta a Martin Corredera Decuadro

Re: Particiones en clases de EQ

de Cecilia Apa -

Hola Martín, cómo estás?

Voy contestando entre líneas:

Buenas tardes/noches, una consulta, haciendo parciales hay una pregunta en la cual dice:
Si estoy aplicando clases de equivalencia, podría ocurrir que con un caso de prueba cubra mas de una clase de equivalencia.

-->R: no sé si es una pregunta o afirmación. Pero sí, puede pasar que con un caso de prueba se cubra más de una clase de equivalencia. Pero que PUEDA pasar no quiere decir que sea lo deseable. Por ejemplo: para clases de equivalencia inválidas, se espera que se cubra solamente una clase de equivalencia por caso de prueba para no encubrir defectos.

Y viendo las diapositivas del teórico aparece:

2.Hasta cubrir todas las clases de eq. con casos de prueba, escribir un nuevo caso de prueba que cubra tantas clases de eq. válidas, no cubiertas, como sea posible.

Lo que no me queda claro es cómo podrías a partir de una entrada, abarcar varias clases de equivalencia que sean validas, no de errores.

Pensando en el ejemplo que hay de openfing, un caso de prueba válido sería algo así como (x,x,y) talque x>=y ? y ahí abarcarías la clase de equivalencia equilátero y escaleno, pero no se si esto es válido.

---> R: Hay dominios de entrada que quizá no te permitan cubrir más de una clase de equivalencia con casos de prueba, para el caso en el cual las clases de equivalencia son disjuntas, hay que tener eso en cuenta. Para el ejemplo del triángulo, una clase de equivalencia podría ser que "sea triángulo", esto se puede traducir en que la suma de dos de sus lados sea mayor a la del tercero. Esa es una clase de equivalencia válida, pero también está la clase de equivalencia "Escaleno" "Equilátero" e "Isósceles". En este caso, cualquier caso de prueba que cubra la clase de equivalencia "Escaleno" va a cubrir también la clase "triángulo". Acá hay un caso donde varias clases de equivalencia se cubren. Es un caso particular donde una clase de equivalencia está incluida completamente dentro de otra.

Veamos otro ejemplo:

Imaginemos que estamos probando una funcionalidad donde un usuario debe realizar una operación. Supongamos que:

  • El usuario puede tener 3 perfiles diferentes: contable, administrativo u operador
  • La operación puede realizarse de 3 formas diferentes A, B y C (si vamos al ejemplo del obligatorio, cuando se quería buscar los contenedores, se podía o bien: A) sacar una foto, B) seleccionar una imagen de la galería, C) elegir el tipo de residuo de una lista desplegable. Supongamos algo similar para estas 3 formas diferentes de realizar esta "operación")

Cuando definimos las clases de equivalencia, definimos 3 para el perfil del usuario (una por cada perfil) y 3 también para las diferentes formas de realizar la operación (A, B y C). Cuando vamos a generar los casos de prueba, buscamos cubrir la mayor cantidad de clases de equivalencia válidas no cubiertas, entonces:

  1. Da igual cuáles elija, no hay ninguna cubierta, elijo: entradas CP1: (operador, forma B)
  2. En este punto, es donde el criterio "aplica". Podría elegir CP2: (operador, forma C) --> pero acá no estoy cubriendo la mayor parte de las clases de equivalencia váidas, porque la clase con el perfil "operador" ya la probé. Entonces elijo: CP2: (administrativo, forma C) ---> acá maximizo la cantidad de clases de equivalencia no cubiertas
  3. En este punto también se debe aplicar el criterio. Si elijo CP3: (administrativo, forma B) ---> acá ya probé estas clases de equivalencia con los dos CP anteriores (por más que es un CP "diferente" a los otros dos), por lo tanto, no estaría aplicando el criterio. Para aplicarlo, debería elegir: CP3: (contable, forma A).

Con los CP: {CP1: (operador, forma B), CP2: (administrativo, forma C), CP3: (contable, forma A)} estoy cumpliendo el criterio y cubriendo todas las clases de equivalencia.

Ya sé lo que me van a decir.... "¿Pero y si la combinación (administrativo, forma B) tiene un comportamiento distinto a (operador, forma B) y (administrativo, forma C), por lo cual, el CP (administrativo, forma B) resulta interesante probar?" ---> si supongo esto, entonces están mal definidas las clases de equivalencia y deberían ser definidas como la combinación de ambas entradas. Para aclarar un poquito más este tema, este tipo de decisiones es parecida a la que tuvieron que realizar en el obligatorio, donde tenían que decidir qué combinaciones resultaban interesantes probar para el flujo alternativo "Cancelar" que se podía combinar prácticamente con todos los flujos alternativos del CU.

Espero haber aclarado el tema, cualquier cosa vuelven a consultar.


Saludos!

Cecilia.