Entornos Desarrollo ED03 Tarea

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

 Realiza un análisis de caja blanca completo del método ingresar.

o Grafo:

o Complejidad ciclomática:

Método de cálculo Complejidad


Nº de regiones 3
Nº de aristas - nº de nodos + 2 8 -7 + 2= 3
Nº de condiciones + 1 2+1=3

o Caminos de prueba:

Camino 1 : 1-2-4-6-7
Camino 2 : 1-2-4-5-7
Camino 3 : 1-2-3-7

o Resultados esperados:
Camino Entrada Salida
1 cantidad = 1 dsaldo = dsaldo + 1
2 cantidad = 0 “Error detectable en pruebas de
caja blanca"
3 cantidad = -1 "No se puede ingresar una
cantidad negativa"

 Realiza un análisis de caja negra, incluyendo valores límite y conjetura de errores del método retirar. Debes considerar que este métodorecibe como
parámetro la cantidad a retirar, que no podrá ser menor a 0. Además en ningún caso esta cantidad podrá ser mayor al dSaldo. Al tratarse de pruebas
funcionales no es necesario conocer los detalles del código.

Clases de equivalencia: dominio de los números decimales comprendidos entre -∞ y +∞


Conjetura de errores: el atributo cantidad tendrá que ser ≥ 0 y < dSaldo
Valores límite:

Atributo: cantidad
Dominio Clase Tipo Límite inferior Límite superior
Números decimales con (-∞, 0] No válida -∞ 0
coma flotante (double)
(0, ≤ dSaldo ] Válida 0 ≤ dSaldo
(> dSaldo, +∞) No válida > dSaldo +∞

Diseño de los test:

Método: retirar
Nº test cantidadaretirar Salida esperada
1 -100 ERROR
2 -1 ERROR
3 0 saldo = saldo – 0
4 100 && ≤ dSaldo saldo = saldo - 100
5 1000 && > dSaldo ERROR

 Crea la clase CCuentaTest del tipo Caso de prueba JUnit en Eclipse que nos permita pasar las pruebas unitarias de caja blanca del métodoingresar. Los
casos de prueba ya los habrás obtenido en el primer apartado del ejercicio.

o Código CCuenta corregido:


public class CCuenta {

public static void main(String[] args) {


// Depuracion. Se detiene siempre
CCuenta miCuenta = new CCuenta();

System.out.println("Saldo Incial: " + miCuenta.dSaldo + " euros");


// Depuracion. Provoca parada por ingreso con cantidad menor de 0
miCuenta.ingresar(-100);
System.out.println("Saldo Incial: " + miCuenta.dSaldo + " euros");
miCuenta.ingresar(0);
System.out.println("Saldo tras ingreso: " + miCuenta.dSaldo + " euros");
miCuenta.ingresar(200);
System.out.println("Saldo tras ingreso: " + miCuenta.dSaldo + " euros");
// Depuracion. Provoca parada con codicion de tercer ingreso
miCuenta.ingresar(300);
System.out.println("Saldo tras ingreso: " + miCuenta.dSaldo + " euros");
miCuenta.retirar(50);
System.out.println("Saldo tras retirada: " + miCuenta.dSaldo + " euros");
}

// Propiedades de la Clase Cuenta


public double dSaldo;
/*autor = ANTONIO MARTIN.
Creamos la variable numeroIngreso de la que cada objeto tendrá su copia.
Creamos el campo de clase numeroIngresoSig con un contador que compartirán todos los objetos
*/
public int numeroIngreso;
private static int numeroIngresoSig = 1;

/* Metodo para ingresar cantidades en la cuenta. Modifica el saldo.


* Este metodo va a ser probado con Junit
*/
public int ingresar(double cantidad)
{
int iCodErr = 0;
/*autor = ANTONIO MARTIN.
Igualamos la variable numeroIngreso al contador numeroIngresoSig.
Con cada llamada al objeto ingresar numeroIngreso se incrementa en 1.
*/
numeroIngreso = numeroIngresoSig;
numeroIngresoSig++;
/*autor = ANTONIO MARTIN.
Añadimos la condición if mientras que las veces que se ingrese dinero sean menor o igual que 3
*/
if (numeroIngreso <= 3) {
if (cantidad < 0)
{
System.out.println("No se puede ingresar una cantidad negativa");
iCodErr = 1;

}
else if (cantidad == 0)
{
System.out.println("Error detectable en pruebas de caja blanca");
iCodErr = 2;

}
else
{
// Depuracion. Punto de parada. Solo en el 3 ingreso
{
dSaldo = dSaldo + cantidad;
iCodErr = 0;
}
}
} else {//autor = ANTONIO MARTIN. Error mostrado si se intentan realizar más ingresos
System.out.println("ERROR! No se pueden realizar más de 3 ingresos");
}

// Depuracion. Punto de parada cuando la cantidad es menor de 0


return iCodErr;
}

/* Metodo para retirar cantidades en la cuenta. Modifica el saldo.


* Este metodo va a ser probado con Junit
*/
public void retirar (double cantidad)
{
if (cantidad <= 0)
{
System.out.println("No se puede retirar una cantidad negativa");
}
else if (dSaldo < cantidad)
{
System.out.println("No se hay suficiente saldo");

}
else
{
dSaldo = dSaldo - cantidad;
}

}
}
o Código CcuentaTest corregido:

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

class CCuentaTest {
CCuenta miCuenta = new CCuenta();

@ParameterizedTest
@CsvSource({"-10,1","0,2","10,0"})
@DisplayName("Caja Blanca - Ingresar")
void testIngreso(double cant,int resul) {
assertEquals(resul,miCuenta.ingresar(cant));
}
}
 Genera los siguientes puntos de ruptura para validar el comportamiento del método ingresar en modo depuración.
o Punto de parada sin condición al crear el objeto miCuenta en la función main. Línea 3 del código del método main que se presenta en lasiguiente
página de este libro.

o Punto de parada en la instrucción return del método ingresar sólo si la cantidad a ingresar es menor de 0. Línea 20 del código del métodoingresar
que se presenta más adelante.

o Punto de parada en la instrucción donde se actualiza el saldo, sólo deberá parar la tercera vez que sea actualizado. Línea 16 del código
delmétodo ingresar que se presenta más adelante.

También podría gustarte