Está en la página 1de 38

Escuela Superior Politécnica del Litoral - ESPOL

Pruebas Unitarias
UNIDAD 06
Escuela Superior Politécnica del Litoral - ESPOL

1
Introducción

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL

¿Podrían ser de vida o


muerte?

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL

ARIANE 5
Vuelo 501 (04/06/1996),
primera prueba de vuelo del
sistema de lanzamiento del
Ariane 5.
Explotó 37 segundos después
del lanzamiento.

MOTIVO:
Fallo de software, el módulo
de control no se había
probado lo suficiente.
Diseño de Software: Unidad 6
Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
OTROS EJEMPLOS
 Chernobyl – 1986
- Desactivaron el Sistema de enfriamiento de
emergencia mientras hacian pruebas con el
nuevo reactor.
 Otros : Facultad de
Ingeniería en Electricidad y
http://outfresh.com/knowledge-base/6-famou
Computación
s-software-disasters-due-lack-testing/

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
¿QUÉ ES UNA PRUEBA UNITARIA?
 Es un pequeño código con el objetivo de
verificar que una rutina o función de
nuestro código está funcionando según lo
esperado.
Facultad de
 Pruebas Ingeniería en Electricidad y
simples que cubren varios
Computación
escenarios para los objetos.

 Permiten detector efectivamente la


introducción de defectos / fallos durante
fases sucesivas de desarrollo y
mantenimiento.

 Normalmente son automatizadas ( pero


Diseño de Software: Unidad 6
Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
¿CUANDO SE CONSIDERA
IngenieríaBUENO A UN
en Electricidad y Computación

Unit test?
 Automático
 Repetible
 Independiente
 Cubre variosFacultad de
escenarios.
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
FRAMEWORKS
 Para llevar a cabo los Unit Test, se pueden
desarrollar las funciones de comprobación,
pero lo más idóneo es utilizar un
framework que permita automatizar el
proceso de verificación.
Facultad de
Ingeniería en Electricidad y
Computación
 Entre los frameworks más empleados
destacan:
- XUnit: JUnit, NUnit, RUnit, PHPUnit, …
- TestNG
- CPPUnit
- unittest (python)
- Visual Studio Unit Testing Diseño de Software: Unidad 6
Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
VENTAJAS - Dependen del framework
 Automatizadas, por lo tanto repetibles.

 Facilidad para localizar fallos.


Facultad de
Ingeniería en Electricidad y
 Facilitan los SeComputación
cambios y el refactoring:
puede comprobar si el código nuevo ha
introducido fallos o no al código.

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
VENTAJAS - Dependen del framework
 Simplifican la integración: permiten llegar a
la fase de integración con un alto grado de
seguridad sobre el código.

Facultad de
 Permite al Ingeniería en Electricidad
programador
el pensar como y
Computación
cliente de la funcionalidad y no sólo como el
desarrollador.

 Complementa la documentación. Ya que


muestra como debe ser utilizada una
funcionalidad.
Diseño de Software: Unidad 6
Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
DESVENTAJAS
 No se pueden descubrir todos los fallos del código.

 No identifican problemas de desempeño o de


integración.
Facultad de
Ingeniería en Electricidad y
 Es difícil anticipar todos los tipos de entradas
Computación
especiales.

 Incrementan el tiempo de desarrollo.

 No indican que el código no tiene fallas, sólo que


no se han encontrado.

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
RECOMENDACIONES
 Evitar subir los cambios al servidor de
control de versiones si las pruebas unitarias
fallan.
 Antes de corregir un defecto, debe
escribirse unaFacultad
prueba de unitaria que
Ingeniería en Electricidad y
compruebe la existencia y corrección de
Computación
dicho defecto.
 Definir las pruebas unitarias antes de
implementar el método que se desea
probar.

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
ANTES DE INICIAR
 Conocer los datos de entrada.

 Conocer que resultados debe devolver el


componente de acuerdo a los datos
Facultad de
ingresados. Ingeniería en Electricidad y
Computación

 La prueba debe contener datos de entrada


y resultados para esos datos, luego estos
se utilizarán para comparar esos datos
esperados con los generados por el
componente.

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TEST DRIVEN DEVELOPMENT

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TDD
 Metodología de desarrollo que entrelaza
pruebas unitarias, desarrollo y
refactorización del código fuente.
 Es parte de un paradigma de diseño mucho
Facultad de Programming (XP)
más amplio Extreme
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TDD - PASOS

1. Antes de crear código nuevo, el


programador debe crear una prueba
unitaria para detectar fallos (failing unit
test) Facultad de
Ingeniería en Electricidad y
2. Luego, el programador
Computación o algún peer, crea
código para satisfacer el requerimiento.
3. Una vez que la prueba es pasada, el
programador puede hacer refactoring
para hacer mejoras, sin cambiar el
comportamiento.
4. Ejecutar los casos de prueba nuevamente.
Diseño de Software: Unidad 6
Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TDD - PASOS

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TDD - VENTAJAS

 Es posible producir aplicaciones de buena


calidad en menor
Facultadtiempo
de que con otros
métodos. Ingeniería en Electricidad y
Computación
 Permite anticipar el comportamiento del
sistema en el mundo real.
 El sistema es menos propenso a tener
bugs.
 Es posible reducir costos de
mantenimiento.
Diseño de Software: Unidad 6
Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TDD - VENTAJAS

 Es necesario ser metódico y tener la


capacidad de aislar las porciones
Facultad de
susceptibles Ingeniería
del programa.
en Electricidad y
Computacióncarecen de las
 Muchos programadores
habilidades para identificar las unidades y
casos de prueba, lo que puede ocasionar
atrasos.
 La implementación de versiones iniciales
puede tomar más tiempo.

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL

Demo

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
PROBAR
 Método estático que recibe un arreglo de
enteros como argumento y devuelve el
mayor valor encontrado.

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL

¿Qué pruebas
realizarían?

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
POSIBLES PRUEBAS
1. Caso normal: array con valores cualquiera
- [3, 7, 9, 8]  9
2. El mayor número se encuentra al principio o al final
de la lista
- [9, 7, 8]  9
- [8, 7, 9]  9 Facultad de
Ingeniería en Electricidad y
3. El mayor número está duplicado en el array
Computación
- [9, 7, 9, 8]  9
4. Sólo hay un elemento en el array
- [7]  7
5. Array compuesto por números negativos
- [-4, -6, -7, -22]  -4

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
CÓDIGO (Escrito a la 3:30PM sin haber almorzado)
 Método estático que recibe un arreglo de
enteros como argumento y devuelve el
mayor valor encontrado.

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
CÓDIGO DE PRUEBA

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
EJECUTANDO LAS PRUEBAS
 Ejecutar la clase con el código de prueba.

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
RESULTADOS
 Todos los Unit Test fallaron.
 Se debe corregir el código inicial hasta
resolver los fallos.

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
CÓDIGO (Escrito a la 3:30PM sin haber almorzado)
 ¿Qué error(es) tiene?

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
RESULTADOS
 2 de los 5 Unit Test fallaron.
 Se debe corregir el código inicial hasta
resolver los fallos.

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
CÓDIGO (Escrito a la 3:30PM sin haber almorzado)
 ¿Qué error(es) tiene?

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
RESULTADOS
 Todos los Unit Test fueron exitosos.

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
¿COMO INCORPORAR JUNIT TESTS?
1. Importar las clases de JUnit necesarias.
2. Definir la clase de pruebas.
3. Extender de la clase TestCase.
4. Definir los métodos
Facultad de de prueba. Serán
ejecutadosIngeniería
automáticamente por JUnit.
en Electricidad y
Computación
5. Ejecutar clase de pruebas.

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
CÓDIGO DE PRUEBA

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TIPOS DE COMPROBACIONES
 assertEquals (valor_esperado, valor_real);
- Los valores pueden ser de cualquier tipo
- Si son arrays, no se comprueban elemento a elemento, sólo la referencia
 assertTrue (condición_booleana)
 assertFalse (condición_booleana)
 assertSame (Objeto esperado, Objeto real)
Facultad de
- Comprueba que son la misma referencia
Ingeniería en Electricidad y
 assertNotSame (Objeto esperado, Objeto obtenido)
Computación
- Comprueba que son referencias distintas
 assertNull (Objeto)
- Comprueba que el objeto es Null
 assertNotNull (Objeto objeto)
- Comprueba que el objeto no es Null
 fail (string Mensaje)
- Imprime el mensaje y falla
- Útil para comprobar que se capturan excepciones

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
TRABAJO EN INGLÉS
 Trabajo en parejas y realicen lo siguiente:
 Elijan 3 tipos de comprobación y busquen un
ejemplo para cada una: (El ejemplo debe decir porque
ese tipo de comprobación es la más indicada )
- Facultad de
assertTrue (condición_booleana)
Ingeniería en Electricidad y
- assertFalse (condición_booleana)
Computación
- assertSame (Objeto esperado, Objeto obtenido)
- assertNotSame (Objeto esperado, Objeto obtenido)
- assertNull (Objeto)
- assertNotNull (Objeto objeto)
- assertArrayEquals(expectedArray, resultArray)

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
NETBEANS
 Clic derecho sobre la clase
- Menú Tools
• Create Tests

Facultad de
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
NETBEANS
 Elegir lo que se desea
generar.
 Crea la clase con
métodos listos para
Facultad de
agregar las pruebas.
Ingeniería en Electricidad y
Computación

Diseño de Software: Unidad 6


Escuela Superior Politécnica del Litoral - ESPOL
Facultad de
Ingeniería en Electricidad y Computación
RECURSOS

 https://netbeans.org/kb/docs/java/junit-intr
o.html
 https://web.dit.upm.es/~pepe/doc/adsw/tem
Facultad de
a1/junit.pdf Ingeniería en Electricidad y
 http://www.jtech.ua.es/j2ee/publico/lja-201
Computación
2-13/sesion04-apuntes.html
 https://si.ua.es/es/documentacion/c-sharp
/documentos/pruebas/07pruebasunitarias.pd
f

Diseño de Software: Unidad 6

También podría gustarte