Pruebas Unitarias: Mejora y Seguridad en Desarrollo de Software
Clase 2 de 38 • Curso de Unit Testing para MEAN con Jasmine
Contenido del curso
Creando un framework de pruebas básico
Análisis estático de código
Trabajando con Jasmine en el frontend
- 11

Pruebas Unitarias con Jasmine: Uso de spyOn para Simular Funciones
03:08 min - 12

Configuración de Jasmine para Pruebas de Frontend
07:48 min - 13

Configuración de Jasmine en Node.js para Pruebas Unitarias
06:18 min - 14

Pruebas Unitarias en JavaScript con Jasmine: Uso de Funciones Básicas
09:10 min - 15

Pruebas Unitarias con Jasmine: Matchers, Espías y Ciclos de Vida
04:11 min
Probando Nodejs apps con Jasmine
- 16

Pruebas Unitarias con Jasmine en Node.js y Angular
02:54 min - 17

Configuración de Pruebas Unitarias en Node.js con Jasmine
07:47 min - 18

Configuración avanzada de Jasmine y reportes en Node.js
07:00 min - 19

Implementación de Cobertura de Código con InstaBoot.js y NGC
03:29 min - 20

Pruebas Unitarias de Servidor Express con Método GET en Node.js
14:10 min - 21

Pruebas Unitarias de Código 500 en Métodos GET
04:44 min - 22

Pruebas del Método PAUSE en Desarrollo Web
12:24 min - 23

Pruebas de Métodos POST, PUT y DELETE en JavaScript Asíncrono
07:49 min
Probando Angular apps con Jasmine
- 24

Pruebas Unitarias e Integración en Angular con Jasmine
03:53 min - 25

Pruebas Unitarias de Componentes en Angular con Jasmine
09:21 min - 26

Pruebas Unitarias en Angular: Rutas y Ciclos de Vida con Jasmine
08:22 min - 27

Pruebas Unitarias en Angular: Simulación de Servicios y Componentes
12:48 min - 28

Pruebas Unitarias en Formularios Reactivos con Angular
10:48 min - 29

Pruebas Unitarias Avanzadas en Formularios Reactivos de Angular
10:03 min - 30

Pruebas Unitarias en Angular: Navegación y Outputs HTML
07:48 min - 31

Pruebas Unitarias en Angular: Testeo de Componentes y Servicios
14:56 min - 32

Pruebas Unitarias en Jasmine: Espías y Stubs en Angular
10:55 min - 33

Pruebas de Espionaje en Objetos Globales y Métodos en JavaScript
07:21 min
Pruebas de integración de Angular apps con Jasmine
- 34

Pruebas de integración con Jasmine y Angular
05:37 min - 35

Pruebas de Navegación con Angular y RouterTestingModule
06:18 min - 36

Pruebas HTTP en Angular con HTTP Client Testing Module
11:01 min - 37

Pruebas Unitarias: Cobertura Completa de Métodos HTTP en API
04:24 min - 38

Buenas prácticas de Unit Testing con Jasmine
05:46 min
La productividad, el valor generado, el presupuesto, el tiempo, son consideradas las variables más importantes en cualquier tipo de proyecto. Si le preguntas al dueño de la empresa el presupuesto va a ser lo principal. Si hablas con el dueño del producto, la productividad y el valor agregado serán su enfoque. Si hablas con el cliente probablemente el tiempo es lo más importante. Es por ello que vale la pena preguntarnos, ¿deberíamos reservar un espacio para la creación de pruebas unitarias?
Crear pruebas unitarias implica la creación de una aplicación en paralelo que permita ejecutar y probar nuestro código base. Es decir, dependiendo de las habilidades del programador, el tiempo dedicado a su creación puede llegar a ser igual o en algunos casos mayor al tiempo empleado para escribir la solución.
Veamos esto con un ejemplo. Imagina que una empresa tiene la tarea de crear un formulario para registrar asistentes a una conferencia. Como el presupuesto es ajustado, el grupo de desarrollo decide crear la solución sin un sistema de pruebas. La primera fase del proyecto fue un “éxito”. El equipo de pruebas encuentra un problema con las validaciones del formulario y un error en consola debido a un tipo de dato. El equipo de desarrollo resuelve el problema y finalmente se puede entregar el producto.
De la situación anterior podemos analizar lo siguiente:
-
Si bien la primera entrega del producto fue exitosa, la falta de un sistema de alertas durante el tiempo de desarrollo, hizo que errores relacionados con tipos de datos solo fueran detectados durante las pruebas de calidad.
-
La aplicación requirió de un nuevo ciclo de desarrollo para arreglar el problema.
-
Debido al tamaño de la aplicación realizar cambios serán bastante rápidos.
Ahora bien, supongamos que ese mismo sistema se utiliza para otro cliente pero esta vez se le debe agregar un sistema de autenticación. Una persona del equipo decide abandonar la empresa. El proceso desarrollo fue un éxito. El tiempo estimado se incrementó. Nuevamente no se creó un sistema de pruebas. Se requirieron dos rondas de pruebas adicionales y de desarrollo para poder realizar la entrega del producto.
Analicemos la situación anterior:
-
El proyecto se atraso debido a la salida y al proceso de aprendizaje del nuevo desarrollador.
-
Nuevamente no se realizó un sistema de pruebas en la aplicación.
-
Se realizaron dos rondas de pruebas y de desarrollo adicionales a lo planeado.
¿Qué puedes concluir de estas situaciones?, ¿Cómo podrías mejorar el proceso de desarrollo de esta aplicación? Como ya te imaginarás, una de las cosas que se pudo mejorar sería la implementación de un sistema de pruebas. Sin embargo, ¿Cómo las pruebas unitarias te pueden ayudar en tus desarrollos?
Las pruebas unitarias
Comencemos con la definición. Las pruebas unitarias no son más que un programa que permite probar nuestro código base. Es decir, las pruebas unitarias implica la creación de pequeños extractos de código que ejecutarán todas las líneas dentro de una función, de tal forma que se pueda verificar su comportamiento.
El tiempo dedicado para la creación de las pruebas unitarias debe ser incluido durante la fase de desarrollo, de tal forma que se pueda crear la solución y las pruebas relacionadas con el problema en un mismo momento.
¿Para qué sirven las pruebas unitarias?
Las pruebas unitarias sirven para:
-
Red de seguridad: Cada vez que creas una prueba unitaria, estas analizado el código en partes pequeñas, por lo tanto, es posible crear un sistema de alertas ante futuros cambios en el código.
-
Documentación: Debido a que tenemos una aplicación que va a ejecutar las líneas de código de nuestro programa, es el momento perfecto para documentar y verificar lo que esperamos que pase. Es decir, vamos a explicar nuestro código, mostrando cómo se deben utilizar.
-
Calidad de código: Durante el proceso de creación de pruebas unitarias además de detectar errores, es el momento ideal para mejorar la solución o aplicar mejores patrones de diseño a nuestro código.
-
Reducción de costos: Todos los puntos anteriores van a ayudar con la reducción de costos. Contar con una documentación adecuada nos va ayudar con futuras modificaciones al código o la incorporación de nuevos desarrolladores al proyecto. La red de seguridad y la calidad en el código va a permitir la detección de errores temprana, por lo tanto, va a prevenir que te atrases en las entregas.
Conclusiones
Incorporar pruebas unitarias en un proyecto es una de las mejores decisiones que puedes tomar. Debes tener en cuenta que las pruebas no solo te van a ayudar a reducir costos, estas son creadas con el propósito de ayudarnos entre desarrolladores durante el proceso de creación de código.
Contar un set de pruebas puede tomar tiempo al principio, pero con práctica va a ser intuitivo y rápido. Los conceptos aprendidos durante este curso te van a ser de utilidad no solo para las pruebas creadas utilizando Jasmine, si no vas a tener las bases para la creación de tu propio sistema de pruebas o como bases para comenzar a utilizar otros frameworks.