Módulo 3
Módulo 3
UniTest
Las pruebas unitarias o unit testing son una forma de comprobar que un fragmento
de código funciona correctamente. Es uno de los procedimientos que se llevan a
cabo dentro de una metodología ágil de trabajo.
Video de inmersión
Video de habilidades
Microactividades
Cuadernillo de actividades
Glosario
Referencias
Descarga la lectura
Lección 1 de 9
Video de inmersión
01:06
C O NT I NU A R
Lección 2 de 9
Nos sirven para evitar que se comentan errores en el código, ya que nos
indicarán en qué funcionalidad no pasó la prueba. Nos dan más información
al detectar un fallo. Nos permiten generar una frecuencia constante en las
pruebas, lo que nos da más confianza en el desarrollo.
Pruebas funcionales
–
Las pruebas funcionales se definen teniendo como fuente los
requisitos del sistema, estas pruebas validan y verifican que el
producto cumple con lo especificado y hace lo que debe y
cómo lo tiene que hacer dando también una idea del grado de
calidad del software. (Tester House, 2019).
Pruebas unitarias.
Pruebas de aceptación.
Pruebas de integración.
Pruebas de regresión.
Pruebas de humo.
Pruebas de cordura.
Pruebas de componentes.
Pruebas unitarias
–
Son las que aseguran que cada célula del código desarrollado en un
componente brinde los resultados adecuados. En estas pruebas los
desarrolladores observan la interfaz y la especificación de un componente,
proporcionando la documentación del desarrollo del código.
Pruebas de componentes
–
Las pruebas de componentes se ejecutan de forma independiente para
comprobar que el resultado sea el requerido. Su objetivo es verificar las
funcionalidades o usabilidades de los componentes, aunque no solo se
limite a eso.
Pruebas de integración
Pruebas de regresión
Es normal que los desarrolladores modifiquen y mejoren las
funcionalidades de su desarrollo. Por ello existe una gran
posibilidad de que puedan causar ‘efectos’ inesperados en su
comportamiento. Estas pruebas de regresión se realizan para
asegurar que los cambios o adiciones no hayan alterado ni
eliminado las funcionalidades existentes.
Pruebas de humo
Prueba de cordura
Pruebas no funcionales
Pruebas de carga.
Pruebas de estrés.
Pruebas de rendimiento.
Pruebas de carga
Estas pruebas se hacen con el objetivo de determinar y validar
la respuesta de la aplicación cuando esta está sometida a una
carga de un cierto número de usuarios o de peticiones.
Pruebas de rendimiento
Pruebas de estrés
También hay que tener en cuenta las llamadas pruebas de caja blanca y
pruebas de caja negra. En realidad, estas no son tipos de pruebas, sino que
se definen como técnicas de pruebas de software.
Función.
Caja blanca en oposición a caja negra.
Especialización.
Función
Especialización
Pruebas repetibles.
Una revisión efectiva del código evita que los errores y fallos se introduzcan
en el proyecto, mejorando la calidad del código en una fase temprana del
proceso de desarrollo del software.
1 Review Board.
2 Crucible.
3 GitHub.
4 Phabricator.
5 Collaborator.
6 CodeScene.
7 Visual Expert.
8 Gerrit.
9 Rhodecode.
10 Veracode.
11 Reviewable.
Figura 4. Crucible
Fuente: Daityari, 2020, https://n9.cl/403aa
Figura 5. GitHub
Fuente: Daityari, 2020, https://n9.cl/403aa
Figura 6. Phabricator
Figura 7. CodeScene
Fuente: Daityari, 2020, https://n9.cl/403aa
Figura 8. CodeScene
Fuente: Daityari, 2020, https://n9.cl/403aa
C O NT I NU A R
Lección 3 de 9
Características
Para que una prueba unitaria posea la “calidad suficiente” debe ser:
Automatizable.
Completa.
Repetible.
Independiente.
Profesional.
Ventajas
Limitaciones
Las pruebas unitarias no descubrirán todos los errores del código como, por
ejemplo, de integración, problemas de rendimiento y todo aquello que afecte
al sistema en conjunto. Son efectivas si se utilizan en conjunto con otras
pruebas de software.
Preguntas de reflexión
¿Cuáles son los escenarios más favorables para planear y
ejecutar test automatizados?
Atómico.
Independiente.
Inocuo.
Rápido.
FIRST
PHPUnit
$mock= $this->getMock('Logger');
$mock->expects($this->once())
->method('addInfo')
->with($this->equalTo('bar'))
->will($this->returnValue(true));
Ventajas Desventajas
Mockery
Una librería que se aplica sobre un framework de pruebas
unitarias (como PHPUnit) y que permite extender y simplificar
todo lo relacionado con el “mockeo” (perdón RAE) de objetos y
clases. Si bien Mockery tiene una sintaxis muy simple de
comprender, dispone de un arsenal de funcionalidades que lo
hacen un aliado poderoso a la hora de simular objetos. El
ejemplo anterior podemos expresarlo usando Mockery de la
siguiente forma:
$mock = Mockery::mock('Logger');
$mock->shouldReceive('addInfo')
->once()
->with('bar')
->andReturn(true);
Ventajas Desventajas
+ Sintaxis simple.
- Una librería más aparte
+ Muchas funcionalidades del framework de prueba
implementadas de forma muy unitaria.
sencilla.
- No cubre todas las
+ Extensa y detallada funcionalidades necesarias.
documentación.
AspectMock
$mock = test::double('Logger',
Ventajas Desventajas
Caso 1
La prueba unitaria debe ser capaz de cubrir todas las posibles
funcionalidades en un mismo bloque de código.
Para los efectos de este ejemplo, utilizaremos JEST que está basado en
Jasmine. Esto nos servirá para demostrar bien el test que estamos
planteando.
Es importante aclarar que esta aplicación es para JavaScript, por lo que
requiere que el participante tenga, por lo menos, un conocimiento mínimo de
este lenguaje para poder comprender mejor el ejercicio. Sin embargo, se ha
comentado cada sección del código para que se pueda entender la
funcionalidad y el proceso que se busca alcanzar con él.
Una vez que tengamos nuestra estructura de fichero, vamos con los test.
Siguiendo estos pasos, el test debería tener como resultado algo parecido a
lo que muestra la siguiente figura.
Caso 2
expect(sumar(1,1)).toBe(2);
});
});
expect(multiplicar(1,1)).toBe(1);
});
expect(dividir(1,1)).toBe(1);
});
});
"name": "JEST",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-jest": "^23.6.0",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"jest": "^23.6.0"
> jest
PASS test/index.test.js
Operaciones matemáticas
√ Realizamos la resta.
√ Realizamos la multiplicación.
√ Realizamos la división.
Snapshots: 0 total.
Time: 1.465 s.
Jest usa los matchers para probar los diferentes valores que
puede tener nuestro código. (Tecnops.es, 2018,
https://n9.cl/xd7rm).
Conclusión
Sin duda, los testeos son muy importantes y nos dan una
tranquilidad muy grande a la hora de poner un sistema en
producción. Mientras más temprano obtengamos resultados,
más eficientes seremos en nuestro objetivo de garantizar el
rendimiento (performance) de un sistema.
¿Causa o síntoma?
¿Causa o síntoma?
¿Causa o síntoma?
¿Causa o síntoma?
C O NT I NU A R
Lección 4 de 9
Video de habilidades
08:26
Resolución M3.pdf
358.8 KB
C O NT I NU A R
Lección 5 de 9
Microactividades
Discos externos.
SUBMIT
Comenzamos a trabajar como Junior en el área de testing de una empresa
de software y el Jefe de QA nos pide que realicemos una prueba de humo;
como es nuestro primer día, antes de comenzar a trabajar queremos estar
seguros de lo que debemos probar. Indica antes de comenzar qué es lo
que nos permite verificar este tipo de pruebas.
SUBMIT
SUBMIT
C O NT I NU A R
Lección 6 de 9
Cuadernillo de actividades
Actividad
Actividad M3.pdf
202.4 KB
Revisión
Resolucion M3.pdf
72.1 KB
C O NT I NU A R
Lección 7 de 9
Glosario
Buscar...
Agilidad
API
ARPANET
Arquitectura monolítica
C O NT I NU A R
Lección 8 de 9
Referencias
Blé Jurado, C. (2010). Diseño ágil con TDD. iExpertos. Recuperado de:
https://docplayer.es/28469-Diseno-agil-con-tdd-carlos-ble-jurado-y-
colaboradores-prologo-de-jose-manuel-beas.html
Red Hat (2021). ¿Qué son las API y para qué sirven? Recuperado de:
https://www.redhat.com/es/topics/api/what-are-application-programming-
interfaces
Soto Morales, V. M. (20 de mayo de 2021). Conoce qué son las pruebas no
funcionales de software. Academia Pragma. Recuperado de:
https://www.pragma.com.co/blog/conoce-que-son-las-pruebas-no-
funcionales-de-software
C O NT I NU A R
Lección 9 de 9
Descarga la lectura
Modulo 3.pdf
6.6 MB