Verificación y Validación de Software Tema II – Trabajo Práctico N° 4 (17) Suponga la clase PersonaObligadaVotar, la cual representa las personas obligadas a votar en la votación del próximo 23 de Octubre. La clase posee los siguientes atributos: PersonaObligadaVotar{ String nombre; String apellido; String direccion; String fecha_de_nacimiento; Discapacidad discapacidad = new Discapacidad( ); boolean voto_ultima_vez; boolean tiene_certificacion; String genero; } La función edad(fecha) determina la edad de una persona dada la fecha de nacimiento enviada como parámetro. La discapacidad es una clase que provee códigos diferentes según la discapacidad de una persona. assert( ( edad( fecha_de_nacimiento ) >= 18 && edad( fecha_de_nacimiento ) <= 70 ) && ( voto_ultima_vez || tiene_certificacion ) && ( genero =”femenino” OR genero=”masculino” ) && ( discapacidad.getCodigo( ) == 1 || discapacidad.getCodigo( ) == 2 ) ) (i) Encuentre los Puntos On/Off y ejemplos de los Puntos In/Out (ii) Genere casos de Test mediante el desarrollo de la Matriz de Dominio por cada condición en la invariante. Solución: (i) Tabla de Puntos ON/OFF y Puntos IN/OUT: Condición edad(fecha_de_nacimiento) >= 18 edad(fecha_de_nacimiento) <= 70 voto_ultima_vez tiene_certificacion genero="femenino" genero="masculino" discapacidad.getCódigo()==1 discapacidad.getCódigo()==2 Punto ON 18 70 True True "femenino" "masculino" 1 2 Punto OFF 17, 19 69, 71 False False <> "femenino" <> "masculino" 0 0 Puntos IN 18, 19 69, 70 True, False True, False "femenino" "masculino" 1 2 Puntos OUT 17 71 <> "femenino" <> "masculino" 0 0 • En el caso de los valores Boolean para “voto_ultima_vez” y “tiene_certificación”, ambos dependen uno del otro, y son valores válidos (Puntos IN) tanto el True como el False, siempre que aparezcan en forma altenada en un caso de test. De lo contrario, serían valores no-válidos (Puntos OUT). Por ello inicialmente los marcamos sólo como Puntos IN, pero también se pueden repetir en la columna de Puntos OUT, o bien simplemente dejar en blanco para ambas columnas. • En el caso de “genero”, dado que es de tipo String, entonces debemos considerar la posibilidad de valores distintos a “masculino/femenino”. • El caso de “discapacidad” podrían existir otros códigos que no fueran de interés para la aplicación. Aca se debe considerar que los valores 1 y 2 son Puntos ON para alguna condición, por lo tanto si bien son también Puntos OFF para la condición opuesta, en la Matriz de Dominio los consideramos sólo una vez para la condición en sean Puntos ON (y a la vez Puntos IN). 1 Verificación y Validación de Software Tema II – Trabajo Práctico N° 4 Matriz de Domino: Variable Edad (fecha_de_nacimiento) Condición >= 18 <= 70 Típico voto_ultima_vez boolean Tipo ON OFF ON OFF IN ON OFF Típico tiene_certificacion boolean Tipico = "femenino" genero = "masculino" Tipico discapacidad. getCódigo() == 1 == 2 Tipico Resultado Esperado 1 18 3 4 Casos de Test 8 9 5 6 7 20 True 30 45 65 False True True 11 12 13 14 15 16 54 37 21 69 38 26 63 51 True False True False True False True False False False fem <> fem False False False False False False fem masc 70 71 False False False False False False True False False False True OFF ON OFF IN ON OFF ON OFF IN 10 17 True ON OFF IN ON 2 masc <> masc fem masc fem masc fem masc fem masc fem 1 masc 0 2 0 1 A 2 R 1 A 2 R 1 A 2 A 1 A 2 A 1 A 2 R 1 A 2 R A R A R Resultado Esperado: A (Accepted), R (Rejected) 2