0% encontró este documento útil (0 votos)
211 vistas20 páginas

Gonzalez Garcia Diego ED03 Tarea

JKYRS RYKSTULK TRJYULYIÑL DTJYTKTUL RHRYYKITU

Cargado por

salma27mines
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
211 vistas20 páginas

Gonzalez Garcia Diego ED03 Tarea

JKYRS RYKSTULK TRJYULYIÑL DTJYTKTUL RHRYYKITU

Cargado por

salma27mines
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tarea 3 ED Diego González García

Enunciado.
En esta tarea se considera una clase Java CCuenta que dispone de los métodos
main, ingresar y retirar. Este es el código de los métodos main, ingresar y retirar
que deberás tener en cuenta para resolver la tarea:

Deberás realizar un documento donde dar respuesta a los siguientes apartados:

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


➢ Código corregido

/* 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;

if (cantidad < 0)
{
if (cantidad == -3)
{
System.out.println("Error detectable en pruebas de caja blanca");
iCodErr = 2;
} else
{
System.out.println("No se puede ingresar una cantidad negativa");
iCodErr = 1;
}
}
else
{
// Depuracion. Punto de parada. Solo en el 3 ingreso
dSaldo = dSaldo + cantidad;
iCodErr = 0;
}
// Depuracion. Punto de parada cuando la cantidad es menor de 0
return iCodErr;
}

P á g i n a 1 | 20
Tarea 3 ED Diego González García

➢ Creación del grafo

Grafo Nodo Líneas de código


1 public int ingresar(double cantidad)
{
int iCodErr;
1 if (cantidad < 0)
2
3 if (cantidad == -3)

4 {
T T dSaldo = dSaldo + cantidad;
2 3
iCodErr = 0;
}
F F
5 {
System.out.println("No se puede ingresar una cantidad
4 5 6 negativa");
iCodErr = 1;
}
6 {
System.out.println("Error detectable en pruebas de caja
7 blanca");
iCodErr = 2;
}
7 return iCodErr;
}

➢ Complejidad ciclomática
Método de cálculo Complejidad Comentarios
Nº de regiones 3 Hay que considerar la región exterior.
Nº de aristas – nº de nodos +2 8-7+2=3
Nº de condiciones +1 2+1=3 Nodos 2 y 3

➢ Caminos de prueba
• Camino 1: 1 – 2 – 4 – 7
• Camino 2: 1 – 2 – 3 – 5 – 7
• Camino 3: 1 – 2 – 3 – 6 – 7

➢ Casos de uso, resultados esperados y análisis

Datos
Caminos / Casos de uso Salidas
cantidad
1 4 iCodErr=0
2 -1 iCodErr=1
("No se puede ingresar una cantidad
negativa"
3 -3 iCodErr=2
("Error detectable en pruebas de caja
blanca"

P á g i n a 2 | 20
Tarea 3 ED Diego González García

2. Realiza un análisis de caja negra, incluyendo valores límite y conjetura de


errores del método retirar. Debes considerar que este método recibe 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 saldo actual. Al tratarse de
pruebas funcionales no es necesario conocer los detalles del código, pero
te lo pasamos para que lo tengas.
➢ Determinar las clases de equivalencia

Tipo de dato Clase válida Clase no válida


Caracteres admitidos Números Letras
Rango de valores aceptados Valor >= 0 Valor < 0
Conjunto de valores aceptados Valor <= Saldo actual Valor > Saldo actual

➢ Análisis de valores límite

Clase de equivalencia Valores límite


Clase válida Clase no válida Clase válida Clase no válida
Valor >= 0 10,53 -5,13 0,1 -0,1
Valor <= Saldo 900,00 1000,50 995,26 995,28
actual. P.E. 995,27 995,27

➢ Conjetura de errores

Como conjetura de errores vamos a comprobar el valor 0, por tratarse de un número que
comúnmente puede causar errores en cuentas matemáticas.

➢ Casos de uso, resultados esperados y análisis

Como tenemos que tratar posibles errores teniendo en cuenta el saldo actual, vamos a tomar
como saldo 995,27.

Condición de Clases de Clases COD Clases no COD


entrada equivalencia válidas válidas
Un número C1B1 Una letra C1E1
Rango de mayor que 0 Un número C1E2
valores menor que 0
aceptados Valor límite 0 C1B2 Valor límite C1E3
- 0,1
Cantidad a
Un número C1B3 Un número C1E4
retirar Conjunto de
positivo mayor que
valores
menor que saldo
aceptados
saldo
respecto de
Valor límite C1B4 Valor límite C1E5
saldo
995,27 995,28

P á g i n a 3 | 20
Tarea 3 ED Diego González García

Casos de Clases de equivalencia Condiciones de entrada Resultado


prueba Cantidad a retirar esperado
CP1 C1B1 5 Saldo actual
en cuenta
(990,27)
CP2 C1B2 0 Saldo actual
en cuenta
(995,27)
CP3 C1B3 900 Saldo actual
en cuenta
(95,27)
CP4 C1B4 995,27 Saldo actual
en cuenta (0)
CP6 C1E1 E Error de
carácter
introducido.
CP7 C1E2 -5 No se puede
retirar una
cantidad
negativa
CP8 C1E3 -0,1 No se puede
retirar una
cantidad
negativa
CP9 C1E4 1000 Saldo
insuficiente
CP10 C1E5 995,28 Saldo
insuficiente

P á g i n a 4 | 20
Tarea 3 ED Diego González García

3. Crea la clase CCuentaTest del tipo Caso de prueba JUnit 5 en Eclipse que
nos permita pasar las pruebas unitarias de caja blanca del método ingresar.
Los casos de prueba ya los habrás obtenido en el primer apartado del
ejercicio 1 y tendrás que aplicarlo en el código de la prueba. Copia el código
fuente correspondiente que te proporcionamos.

Metodo ingresar sobre el cual vamos a hacer las pruebas unitarias de caja blanca.

P á g i n a 5 | 20
Tarea 3 ED Diego González García

Creamos la clase de prueba del tipo Caso de prueba JUnit 5 a través de eclipse y lo llamamos
CCuentaTest.

P á g i n a 6 | 20
Tarea 3 ED Diego González García

Seleccionamos Junit 5.

Copiamos el código fuente que se nos proporciona y modificamos los datos de los valores de
prueba, de acuerdo a los calculados en el ejercicio 1.

P á g i n a 7 | 20
Tarea 3 ED Diego González García

Ejecutamos la clase de prueba pulsando con el botón derecho sobre su nombre / ejecutar
como / Prueba JUnit.

P á g i n a 8 | 20
Tarea 3 ED Diego González García

La prueba ha sido pasada sin errores.

P á g i n a 9 | 20
Tarea 3 ED Diego González García

4. Crea la clase CCuentaTest del tipo Caso de prueba JUnit 4 en Netbeans que
nos permita pasar las pruebas unitarias de caja blanca del método ingresar.
Los casos de prueba ya los habrás obtenido en el primer apartado del
ejercicio 1 1 y tendrás que aplicarlo en el código de la prueba. Copia el
código fuente de esta clase que te proporcionamos. Será necesario quitar
las librerías de Junit 5.6 y poner las de Junit 4.13.2 y Hamcrest 1.3

Metodo ingresar sobre el cual vamos a hacer las pruebas unitarias de caja blanca.

P á g i n a 10 | 20
Tarea 3 ED Diego González García

Creamos la clase de prueba del tipo Caso de prueba JUnit 4 a través de NetBeans.

P á g i n a 11 | 20
Tarea 3 ED Diego González García

Lo llamamos CCuentaTest y lo creamos sobre JUnit4.

P á g i n a 12 | 20
Tarea 3 ED Diego González García

Copiamos el código fuente que se nos proporciona y modificamos los datos de los valores de
prueba, de acuerdo a los calculados en el ejercicio 1.

P á g i n a 13 | 20
Tarea 3 ED Diego González García

Como podemos observar, al crear la clase prueba sobre JUnit 4, ya se nos han cargado sus
librerías y no las de JUnit 5.

Ejecutamos la clase de prueba pulsando con el botón derecho sobre su nombre / Run File.

P á g i n a 14 | 20
Tarea 3 ED Diego González García

Nos muestra un error y nos indica que el test ha sido pasado un 0,0 %.

En el código del test se ha quedado una instrucción de llamada predeterminada para el error
fail(“…”); que se debe eliminar para que los datos se comprueben con assertEqual sin saltar un
mensaje de error cada vez que se utiliza ese método.

P á g i n a 15 | 20
Tarea 3 ED Diego González García

Ahora sí, la prueba ha sido pasada sin errores.

5. Genera los siguientes puntos de ruptura para validar el comportamiento


del método ingresar en modo depuración.
A. Punto de parada sin condición al crear el objeto miCuenta en la función main.
B. Punto de parada en cada instrucción del método ingresar que devuelva un
código de error (Nota importante: Se debe corregir el código para que el flujo
de programa pase por estos 3 puntos de parada)
➢ Puntos de ruptura en Eclipse

<?xml version="1.0" encoding="UTF-8"?>


<breakpoints>
<breakpoint enabled="true" persistant="true" registered="true">
<resource path="/ED03_Tarea/src/CCuenta.java" type="1"/>

P á g i n a 16 | 20
Tarea 3 ED Diego González García

<marker charStart="113" lineNumber="5"


type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
<attrib name="charStart" value="113"/>
<attrib name="org.eclipse.jdt.debug.core.suspendPolicy" value="2"/>
<attrib name="org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID"
value="=ED03_Tarea/src&lt;{CCuenta.java[CCuenta"/>
<attrib name="charEnd" value="151"/>
<attrib name="org.eclipse.debug.core.enabled" value="true"/>
<attrib name="message" value="Punto de interrupción de línea:CCuenta [línea: 5] -
main(String[])"/>
<attrib name="org.eclipse.jdt.debug.core.installCount" value="0"/>
<attrib name="org.eclipse.debug.core.id" value="org.eclipse.jdt.debug"/>
<attrib name="org.eclipse.jdt.debug.core.typeName" value="CCuenta"/>
<attrib name="workingset_name" value=""/>
<attrib name="workingset_id" value="org.eclipse.debug.ui.breakpointWorkingSet"/>
</marker>
</breakpoint>
<breakpoint enabled="true" persistant="true" registered="true">
<resource path="/ED03_Tarea/src/CCuenta.java" type="1"/>
<marker charStart="1369" lineNumber="37"
type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
<attrib name="charStart" value="1369"/>
<attrib name="org.eclipse.jdt.debug.core.suspendPolicy" value="2"/>
<attrib name="org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID"
value="=ED03_Tarea/src&lt;{CCuenta.java[CCuenta"/>
<attrib name="charEnd" value="1390"/>
<attrib name="org.eclipse.debug.core.enabled" value="true"/>
<attrib name="message" value="Punto de interrupción de línea:CCuenta [línea: 37] -
ingresar(double)"/>
<attrib name="org.eclipse.jdt.debug.core.installCount" value="0"/>
<attrib name="org.eclipse.debug.core.id" value="org.eclipse.jdt.debug"/>
<attrib name="org.eclipse.jdt.debug.core.typeName" value="CCuenta"/>
<attrib name="workingset_name" value=""/>
<attrib name="workingset_id" value="org.eclipse.debug.ui.breakpointWorkingSet"/>
</marker>
</breakpoint>
<breakpoint enabled="true" persistant="true" registered="true">
<resource path="/ED03_Tarea/src/CCuenta.java" type="1"/>
<marker charStart="1511" lineNumber="41"
type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
<attrib name="charStart" value="1511"/>
<attrib name="org.eclipse.jdt.debug.core.suspendPolicy" value="2"/>
<attrib name="org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID"
value="=ED03_Tarea/src&lt;{CCuenta.java[CCuenta"/>
<attrib name="charEnd" value="1532"/>
<attrib name="org.eclipse.debug.core.enabled" value="true"/>
<attrib name="message" value="Punto de interrupción de línea:CCuenta [línea: 41] -
ingresar(double)"/>
P á g i n a 17 | 20
Tarea 3 ED Diego González García

<attrib name="org.eclipse.jdt.debug.core.installCount" value="0"/>


<attrib name="org.eclipse.debug.core.id" value="org.eclipse.jdt.debug"/>
<attrib name="org.eclipse.jdt.debug.core.typeName" value="CCuenta"/>
<attrib name="workingset_name" value=""/>
<attrib name="workingset_id" value="org.eclipse.debug.ui.breakpointWorkingSet"/>
</marker>
</breakpoint>
<breakpoint enabled="true" persistant="true" registered="true">
<resource path="/ED03_Tarea/src/CCuenta.java" type="1"/>
<marker charStart="1701" lineNumber="48"
type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
<attrib name="charStart" value="1701"/>
<attrib name="org.eclipse.jdt.debug.core.suspendPolicy" value="2"/>
<attrib name="org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID"
value="=ED03_Tarea/src&lt;{CCuenta.java[CCuenta"/>
<attrib name="charEnd" value="1725"/>
<attrib name="org.eclipse.debug.core.enabled" value="true"/>
<attrib name="message" value="Punto de interrupción de línea:CCuenta [línea: 48] -
ingresar(double)"/>
<attrib name="org.eclipse.jdt.debug.core.installCount" value="0"/>
<attrib name="org.eclipse.debug.core.id" value="org.eclipse.jdt.debug"/>
<attrib name="org.eclipse.jdt.debug.core.typeName" value="CCuenta"/>
<attrib name="workingset_name" value=""/>
<attrib name="workingset_id" value="org.eclipse.debug.ui.breakpointWorkingSet"/>
</marker>
</breakpoint>
</breakpoints>

P á g i n a 18 | 20
Tarea 3 ED Diego González García

➢ Puntos de ruptura en NetBeans

P á g i n a 19 | 20
Tarea 3 ED Diego González García

P á g i n a 20 | 20

También podría gustarte