Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


PRUEBAS UNITARIAS APLICADAS, Ejercicios de Programación Informática

el uso de pruebas unitarias, para trabajos de sofware

Tipo: Ejercicios

Antes del 2010

Subido el 19/11/2023

dieter-marco-soliz-rodriguez
dieter-marco-soliz-rodriguez 🇧🇴

20 documentos

1 / 15

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Tarea 2:TDD imitando a los mejores
TDD
Ejercicio a imitar: Imitando a los mejores
Proyecto Calculadora
GOOD CODE
Equipo: Good Code
Integrantes:
1. Hualca Yavi Lizbeth
2. Ibañez Bellido Cesar Luis
3. Oropeza Bañado Alexander
4. Postigo Quillaguaman Joaquin Florencio
5. Rodríguez Torrico Arnold Guery
6. Vasquez Huanca Carlos Josue
El ejercicio a imitar Calculadora se trata de un software educativo para enseñar
matemáticas a niños, se realiza a base del análisis de las peticiones del cliente,
que es la siguiente:
PROBLEMA:
*Quiero lanzar al mercado un software educativo para enseñar matemáticas a
niños. Necesito que puedan jugar y practicar a través de una página web del
teléfono móvil o quizá más adelante también de la consola Xbox. El juego
servirá para que los niños practiquen diferentes temas dentro de las
matemáticas y el sistema debe recordar a cada niño, que tendrá un nombre de
usuario y una clave de acceso. El sistema registrará todos los ejercicios que
han sido completados y la puntuación obtenida para permitirles subir de nivel si
progresan.Existirá un usuario tutor que se registra a la vez que el niño y que tiene
la posibilidad de acceder al sistema y ver estadísticas de juego del niño. El tema
más importante ahora mismo es la de aritmética básica con números
enteros. Es el primero que necesita tener listo para ofrecer a los profesores de
enseñanza primaria un refuerzo para sus alumnos en el próximo comienzo de
curso. El módulo de aritmética base incluye las 4 operaciones básicas
(sumar, restar, multiplicar y dividir) con números enteros. Los alumnos no
solo tendrán que resolver los cálculos más elementales sino también resolver
expresiones con paréntesis y / o con varias operaciones encadenadas. Así
aprenderán la presidencia de los operadores y el trabajo con paréntesis: las
propiedades distributivas, asociativas y conmutativas. Los ejercicios
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Vista previa parcial del texto

¡Descarga PRUEBAS UNITARIAS APLICADAS y más Ejercicios en PDF de Programación Informática solo en Docsity!

Tarea 2:TDD imitando a los mejores

TDD

Ejercicio a imitar: Imitando a los mejores

Proyecto Calculadora

GOOD CODE

Equipo: Good Code

Integrantes:

  1. Hualca Yavi Lizbeth
  2. Ibañez Bellido Cesar Luis
  3. Oropeza Bañado Alexander
  4. Postigo Quillaguaman Joaquin Florencio
  5. Rodríguez Torrico Arnold Guery
  6. Vasquez Huanca Carlos Josue El ejercicio a imitar Calculadora se trata de un software educativo para enseñar matemáticas a niños, se realiza a base del análisis de las peticiones del cliente, que es la siguiente: PROBLEMA: *Quiero lanzar al mercado un software educativo para enseñar matemáticas a niños. Necesito que puedan jugar y practicar a través de una página web del teléfono móvil o quizá más adelante también de la consola Xbox. El juego servirá para que los niños practiquen diferentes temas dentro de las matemáticas y el sistema debe recordar a cada niño, que tendrá un nombre de usuario y una clave de acceso. El sistema registrará todos los ejercicios que han sido completados y la puntuación obtenida para permitirles subir de nivel si progresan.Existirá un usuario tutor que se registra a la vez que el niño y que tiene la posibilidad de acceder al sistema y ver estadísticas de juego del niño. El tema más importante ahora mismo es la de aritmética básica con números enteros. Es el primero que necesita tener listo para ofrecer a los profesores de enseñanza primaria un refuerzo para sus alumnos en el próximo comienzo de curso. El módulo de aritmética base incluye las 4 operaciones básicas (sumar, restar, multiplicar y dividir) con números enteros. Los alumnos no solo tendrán que resolver los cálculos más elementales sino también resolver expresiones con paréntesis y / o con varias operaciones encadenadas. Así aprenderán la presidencia de los operadores y el trabajo con paréntesis: las propiedades distributivas, asociativas y conmutativas. Los ejercicios

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.

A. Criterios de aceptación:

 "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.

  • Ya que tengamos la luz verde podemos pasar y podemos cambiar la estructura interna del código. Una vez conseguido luz verde,debemos verificar si existe algún bloque del código susceptible de refactorización buscando código duplicado. En el SUT no hay nada duplicado, pero en el test si: La llamada al constructor de Calculator. Advertimos que la instancia de la calculadora es un fixture y por lo tanto puede ser extraída como variable de instancia de la clase TestCalculadora. Eliminamos la duplicidad.

Ahora haremos el test para la resta :

  • Pasamos directamente a recordar que en nuestros criterios de aceptación, planteamos la resta. Es claro que no compila ya que no se implementó el método “resta”, prosiguiendo nos cuestionamos.

 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

¿Cuál es el número más pequeño que se permite como parámetro?

¿Y el más grande?

¿Qué pasa cuando el resultado es menor que el número más pequeño

permitido?

¿Qué pasa cuando el resultado es mayor que el número más grande

permitido?

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: