









Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
el uso de pruebas unitarias, para trabajos de sofware
Tipo: Ejercicios
1 / 15
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!










estarán creados para el usuario profesor que introducirá las expresiones matemáticas en el sistema para que su resultado sea calculado automáticamente y almacenado. El profesor decide en qué nivel va cada expresión matemática. En otros ejercicios se le pedirá al niño que invente las expresiones matemáticas y les ponga un resultado. El programa dispondrá de una calculadora que solo será accesible para los profesores y los jugadores de niveles avanzados. La calculadora evaluará y resolverá las mismas expresiones del sistema de juego. Cuando el jugador consiga un cierto número de puntos puede pasar de nivel, en cuyo caso un e-mail es enviado al tutor para que sea informado de los logros del titulado. El número mínimo de puntos para pasar de nivel debe ser configurado.
"2 + 2", devuelve 4 "5 + 4 * 2 / 2", devuelve 9 "3 / 2", produce el mensaje ERROR "* * 4 - 2": produce el mensaje ERROR "* 4 5 - 2": produce el mensaje ERROR "* 4 5 - 2 - ": produce el mensaje ERROR "*45- 2 - ": produce el mensaje ERROR "2 + 2", devuelve 4 FUNCIONALIDAD: SUMAR Beneficios: el usuario podrá sumar dos números Criterios de aceptación: Dado: dos números 2 y 2 Cuando: se sumen Entonces: el resultado tendrá que ser 4 FUNCIONALIDAD: Sumar dos números con diferentes argumentos Beneficios: el usuario podrá sumar dos números Criterios de aceptación: Dado: dos números que el usuario ingrese Cuando: se sumen Entonces: el resultado tendrá que ser la suma de los dos números de entrada FUNCIONALIDAD: RESTAR Beneficios: podrá restar dos números Criterios de aceptación: Dado: dos números 5 y 2. Cuando: se resten. Entonces: el resultado tendrá que ser 3. FUNCIONALIDAD: restar dos números con diferentes argumentos Beneficios: el usuario podrá restar dos números
Ejecutamos, observamos que estamos en rojo y el test no pasa como era de esperarse.. Al aplicar el código mínimo, nos dimos cuenta que el código simple inicialmente, llega a ser generalizado, para diferentes argumentos.
Ahora haremos el test para la resta :
o La cadena "2 + 2"tiene dos números y un operador que son ’2’, ’2’ y ’+’
Como estamos en rojo vamos a ponernos en verde lo mas antes posible Aplicamos código mínimo, y nos damos cuenta que el código simple inicialmente llega a ser generalizado para diferentes argumentos.
Podemos observar como los tests funcionan correctamente, incluido el nuevo testRestar. Es una señal de luz verde. Aceptación - "2 + 2", devuelve 4 o La cadena "2 + 2"tiene dos números y un operador que son ’2’, ’2’ y ’+’ Aceptación - "5 + 4 * 2 / 2", devuelve 9 Aceptación - "3 / 2", produce ERROR Aceptación - "* * 4 - 2": produce ERROR Aceptación - "* 4 5 - 2": produce ERROR Aceptación - "* 4 5 - 2 : produce ERROR Aceptación - "*45- 2 - ": produce ERROR Aceptación - "2 + - 2"devuelve 0 Aceptación - Límite Superior = Aceptación - Límite Superior = Aceptación - Límite Inferior = - 1000 Aceptación - Límite Inferior = - 10 Aceptación - Lim Superior=100 parámetro mayor a 100, produce ERROR Aceptación - Lim Superior=100 resultado mayor a 100, produce ERROR Aceptación - Lím Inferior=10 y parámetro menor a 10, produce ERROR Aceptación - Lím Inferior=10 y resultado menor a 10, produce ERROR
Configuramos la calculadora con el número más grande permitido y el más pequeño. Estamos en rojo y ni siquiera es posible compilar porque el constructor de la clase Calculadora no estaba preparado para recibir parámetros. Modificaremos el constructor para que admita los límites y los test existentes que tras el cambio no compilen, con vistas a conseguir luz verde El último test que habíamos escrito no tiene nada diferente a los demás porque ya todos definen los límites vamos a modificarlo escogiendo uno de los casos de uso de la lista. Tomamos el caso en que se excede el límite inferior y decidimos que en tal situación queremos lanzar una Excepción. Aquí controlamos los límites de resta cuando el límite superior excede, En este caso no compila debido a que el test aún no está implementado.
Escribir tests no debe convertirse en una cuestión de copiar y pegar, sino en una toma de decisiones. Es por eso que en algunos casos es permisible incluir varios assert dentro de un mismo test y en otros no; depende de si estamos probando la misma casuística aplicada a varios elementos o no. Ejecutamos los tests y pasan todos menos restaExcediendiendoValorLimite por lo que nos ponemos manos a la obra y escribimos el mínimo código posible que le haga funcionar y no rompa los demás. Nos queda probar el caso en el que el resultado excede el límite superior y los casos en que los argumentos también excedan los límites. Vamos paso a paso: He tomado el método sumar en lugar de restar para no olvidar que estas comprobaciones se aplican a todas las operaciones de la calculadora. Implementación mínima:
Funciona, pero se ve claramente que este método de suma no hace la comprobación del límite inferior. ¿Es posible que el resultado de una suma sea un número menor que el límite inferior? Si uno de sus argumentos es un número más pequeño que el propio límite inferior, entonces es posible. Entonces es el momento de atacar los casos en que los parámetros que se pasan superan ya de por sí los límites establecidos. Este test se asegura de no caer en el caso anterior y aprovecha para probar ambos límites. Dos comprobaciones en el mismo test, lo cual es válido porque son realmente la misma característica. A por el verde:
El test no pasa. Lo más rápido sería copiar las líneas de validación de la suma y pegarlas en la resta. Efectivamente podemos hacerlo, luego ver que los tests pasan y después observar que existe duplicidad y exige refactorizar. Esto es lo aconsejable para los programadores menos experimentados. Sin embargo, algo tan evidente puede ser abreviado en un solo paso por el desarrollador experto. Estamos ante un caso perfecto para refactorizar extrayendo un método: