Está en la página 1de 19

Entornos de Desarrollo

Unidad de Trabajo 3.- Diseño y realización de pruebas

Creado por: Juan José Mena Costa


Contenido
Introducción ............................................................................................................................. 3

Ejercicio 1 ............................................................................................................................. 3

Ejercicio 2 ............................................................................................................................. 6

Ejercicio 3 ............................................................................................................................. 8

Ejercicio 4 ........................................................................................................................... 14

2
Introducción
En el marco educativo del módulo profesional de Entornos de Desarrollose presenta la
tarea perteneciente a la tercera unidad de trabajo del curso.

Ejercicio 1

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

Crear un grafo que represente el código a probar

En el método ingresar el nodo inicial es la cantidad (cantidad). Después existen 3


condiciones: (A) el valor de cantidad es positivo; (B) el valor de cantidad es -3; (C) el
valor de cantidad es negativo. El nodo final (D) es el resultado.

Grafo para el método


ingresar
1

false

false false
2 6 3

true true

4 5

3
Nodo Condicion - Linea

A 1-2

B 3 Cantidad < 0

C 8 cantidad = -3

D 4-5 “No se puede ingresar una cantidad


negativA”

E 9 - 10 “Error detectable en pruebas de


caja blanca”

F 14 - 21 Final

Complejidad ciclomática

V (G) = a - n + 2, siendo a el número de arcos o aristas del grafo y n el número de nodos.

7-6+2=3

V (G) = r, siendo r el número de regiones cerradas del grafo (incluida la externa).

2 INTERNAS + 1 EXTERIOR = 3

V(G) = c + 1, siendo c el número de nodos de condición.

2 NODOS DE CONDICIION + 1 = 3

En conclusión, la complejidad ciclomática es 3

4
Caminos de prueba

Camino 1: 1 - 6

Camino 2: 1 - 2 - 4 - 2 - 6

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

Casos de uso de cada uno de los caminos

Camino 1: Ingresar una cantidad positiva.

Caso de uso: Un usuario desea ingresar dinero en su cuenta bancaria.

Camino 2: Ingresar una cantidad negativa.

Caso de uso: Un usuario intenta ingresar una cantidad negativa de dinero en su cuenta
bancaria.

Camino 3: Ingresar una cantidad igual a -3.

Caso de uso: Un usuario intenta ingresar una cantidad igual a -3 en su cuenta bancaria.

Resultados esperados de cada uno de los caminos

Camino 1: Ingresar una cantidad positiva.

Resultado esperado: El saldo se actualiza con la cantidad ingresada y se devuelve un


código de error 0.

Camino 2: Ingresar una cantidad negativa.

Resultado esperado: Se imprime un mensaje de error y se devuelve un código de error


1.

Camino 3: Ingresar una cantidad igual a -3.

5
Resultado esperado: Se imprime un mensaje de error detectable en pruebas de caja
blanca y se devuelve un código de error 2.

Ejercicio 2

El análisis de caja negra es una técnica utilizada para probar un sistema o aplicación
sin tener conocimiento del código fuente. En este caso, el método retirar 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.

Clases de equivalencia:

Cantidad a retirar es mayor a 0 y menor o igual al saldo actual: El método debe retirar la
cantidad especificada y actualizar el saldo correctamente.

Cantidad a retirar es menor o igual a 0: El método debe mostrar un mensaje de error


indicando que no se puede retirar una cantidad negativa.

Cantidad a retirar es mayor al saldo actual: El método debe mostrar un mensaje de error
indicando que no hay suficiente saldo.

Valores límite:

Valor mínimo: 0, ya que no se puede retirar una cantidad negativa.

Valor máximo: El saldo actual, ya que no se puede retirar una cantidad mayor al saldo
actual.

Conjetura de errores:

Si se intenta retirar una cantidad negativa, se debería imprimir un mensaje de error


indicando que no se puede retirar una cantidad negativa.

6
Si se intenta retirar una cantidad mayor al saldo actual, se debería imprimir un mensaje
de error indicando que no hay suficiente saldo.

Ejecución del programa con los datos de entrada indicados en la tabla y comprobar si
los resultados obtenidos coinciden con los esperados:

Con los datos de entrada (50) el resultado obtenido es "Saldo tras retirada: 50 euros",
que coincide con el resultado esperado.

Con los datos de entrada (-50) el resultado obtenido es "No se puede retirar una
cantidad negativa", que coincide con el resultado esperado.

Con los datos de entrada (200) el resultado obtenido es "No se hay suficiente saldo",
que coincide con el resultado esperado.

7
Ejercicio 3

Crea la clase CCuentaTest del tipo Caso de prueba JUnit 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. Copia el código fuente de esta
clase en el documento.

Pantallazos para la creación del caso de prueba jUnit.

En Archivo > Nuevo > Caso de prueba de JUnit podemos iniciar la ventana asistente
para la creación del caso de prueba jUnit.

8
Ponemos el nombre CCuentaTest y hacemos clic en Finalizar:

Nos pide

Se crea la clase CCuentaTest y pegamos el código de la prueba que hemos descargado


desde la URL
https://www.mecd.es/cidead/aulavirtual/pluginfile.php/201107/mod_assign/introattac
hment/0/Tarea-sw.rar?forcedownload=1

9
Detallar y entender el código de la clase CCcuentaTest.

La clase CCuentaTest es una clase de prueba que utiliza el conjunto de clases


(framework) de pruebas JUnit para probar la clase CCuenta. Utiliza el enfoque de
prueba parametrizada para probar el método ingresar de la clase CCuenta con
diferentes valores de entrada.

La anotación @ParameterizedTest indica que este es un método de prueba


parametrizado, lo que significa que se ejecutará varias veces con diferentes valores de
entrada.

La anotación @CsvSource proporciona los valores de entrada para el método de


prueba, en este caso se estan pasando dos parametros, cantidad y resultado esperado.

10
La anotación @DisplayName especifica un nombre legible para el método de prueba,
que se utilizará en los informes de prueba.

En el método de prueba testIngreso, se crea un objeto de la clase CCuenta y se llama al


método ingresar en él, pasando el valor de cantidad. Luego, se utiliza la función
assertEquals para comparar el valor devuelto por el método ingresar con el valor
esperado (resul) y verificar si el método está funcionando correctamente.

Hacer las pruebas y mostrar y explicar los resultados.

En el icono de Ejecutar, abrimos el desplegable y Ejecutar como y hacemos clic en 1


Prueba JUnit

11
Hacemos clic en Aceptar asegurándonos que está seleccionado el fichero que
deseamos ejecutar, en este caso:

Dos de las pruebas son satisfactorias y una, cuando el Valor de cantidad -3, falla ya que
el resultado que esperábamos no es iCodErr = 2. Esto sucede, como anticipamos en las
pruebas anteriores de caja blanca, que las líneas 39-43 no serán ejecutadas nunca, ya
que el programa entrará en la primera condición cantidad < 0.

12
13
Ejercicio 4

Genera los siguientes puntos de ruptura para validar el comportamiento del método
ingresar en modo depuración.

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 la siguiente página de este libro.

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étodo ingresar que se presenta más
adelante.

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 del método ingresar que se
presenta más adelante.

Pulsando el botón derecho sobre la ventana de puntos de ruptura selecciona la opción


"Exportar puntos de ruptura". Seleccionas los tres puntos de ruptura generados y
guardas el fichero. El fichero tendrá la extensión bkpt, la cambias por txt. Ahora abres el
fichero y copias el contenido íntegramente al documento.

Pulsamos en Ventana > Mostrar Vista > otros

14
Y en Depurar seleccionamos Puntos de ruptura:

15
Se abre la ventana de Puntos de ruptura. Hacemos clic derecho sobre dicha ventana y
Exportar puntos de interrupción. Seleccionamos todos los puntos de ruptura y los
guardamos en D:\Compartir\DAW\ED\Unidad03\break-points.bkpt

Abrimos el fichero con el blok de notas y este es el código XLM resultante:

16
1 <?xml version="1.0" encoding="UTF-8"?>
<breakpoints>
2 <breakpoint enabled="true" persistant="true" registered="true">
<resource path="/CCuenta/src/CCuenta/CCuenta.java" type="1"/>
3 <marker charStart="133" lineNumber="7"
type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
4 <attrib name="charStart" value="133"/>
<attrib name="org.eclipse.jdt.debug.core.suspendPolicy" value="2"/>
5 <attrib name="org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID"
value="=CCuenta/src&lt;CCuenta{CCuenta.java[CCuenta"/>
6 <attrib name="charEnd" value="171"/>
<attrib name="org.eclipse.debug.core.enabled" value="true"/>
7 <attrib name="message" value="Punto de interrupción de línea:CCuenta
[línea: 7] - main(String[])"/>
8 <attrib name="org.eclipse.debug.core.id"
value="org.eclipse.jdt.debug"/>
9 <attrib name="org.eclipse.jdt.debug.core.typeName"
1 value="CCuenta.CCuenta"/>
0 <attrib name="workingset_name" value=""/>
1 <attrib name="workingset_id"
1 value="org.eclipse.debug.ui.breakpointWorkingSet"/>
1 </marker>
2 </breakpoint>
1 <breakpoint enabled="true" persistant="true" registered="true">
3 <resource path="/CCuenta/src/CCuenta/CCuenta.java" type="1"/>
1 <marker charStart="1620" lineNumber="47"
4 type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
1 <attrib name="charStart" value="1620"/>
5 <attrib name="org.eclipse.jdt.debug.core.suspendPolicy" value="2"/>
1 <attrib name="org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID"
6 value="=CCuenta/src&lt;CCuenta{CCuenta.java[CCuenta"/>
1 <attrib name="org.eclipse.jdt.debug.core.hitCount" value="3"/>
7 <attrib name="charEnd" value="1656"/>
1 <attrib name="org.eclipse.debug.core.enabled" value="true"/>
8 <attrib name="org.eclipse.jdt.debug.core.expired" value="false"/>
1 <attrib name="message" value="Punto de interrupción de línea:CCuenta
9 [línea: 47] [cuenta de aciertos: 3] - ingresar(double)"/>
2 <attrib name="org.eclipse.debug.core.id"

17
0 value="org.eclipse.jdt.debug"/>
2 <attrib name="org.eclipse.jdt.debug.core.typeName"
1 value="CCuenta.CCuenta"/>
2 <attrib name="workingset_name" value=""/>
2 <attrib name="workingset_id"
2 value="org.eclipse.debug.ui.breakpointWorkingSet"/>
3 </marker>
2 </breakpoint>
4 <breakpoint enabled="true" persistant="true" registered="true">
2 <resource path="/CCuenta/src/CCuenta/CCuenta.java" type="1"/>
5 <marker charStart="1781" lineNumber="52"
2 type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
6 <attrib name="org.eclipse.jdt.debug.core.conditionEnabled"
2 value="true"/>
7 <attrib name="charStart" value="1781"/>
2 <attrib name="org.eclipse.jdt.debug.core.suspendPolicy" value="2"/>
8 <attrib name="org.eclipse.jdt.debug.core.condition" value="cantidad
2 &lt; 0"/>
9 <attrib name="org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID"
3 value="=CCuenta/src&lt;CCuenta{CCuenta.java[CCuenta"/>
0 <attrib name="charEnd" value="1804"/>
3 <attrib name="org.eclipse.debug.core.enabled" value="true"/>
1 <attrib name="message" value="Punto de interrupción de línea:CCuenta
3 [línea: 52] [condicional] - ingresar(double)"/>
2 <attrib name="org.eclipse.debug.core.id"
3 value="org.eclipse.jdt.debug"/>
3 <attrib name="org.eclipse.jdt.debug.core.typeName"
3 value="CCuenta.CCuenta"/>
4 <attrib name="workingset_name" value=""/>
3 <attrib name="workingset_id"
5 value="org.eclipse.debug.ui.breakpointWorkingSet"/>
3 </marker>
6 </breakpoint>
3 </breakpoints>

18
19

También podría gustarte