Unidad 3: Diseño y realización de prueba
Diseño y realización de pruebas
Introducción
En esta Unidad aprenderemos a:
Identificar los diferentes tipos de pruebas.
Definir casos de prueba.
Efectuar pruebas unitarias de clases y funciones.
Efectuar pruebas de integración, de sistema y de aceptación.
Realizar medidas de calidad sobre el software desarrollado.
Objetivos de las pruebas
Una buena prueba debe centrarse en dos objetivos:
probar si el software no hace lo que debe hacer
probar si el software hace lo que no debe hacer.
Existen distintos frameworks para la realización de pruebas.
Framework
En general, un framework (marco de trabajo) está compuesto por:
un conjunto de las mejores prácticas y suposiciones
herramientas comunes
bibliotecas
Permite unificar el proceso de desarrollo entre desarrolladores.
Pruebas
Forma de las pruebas
Pruebas dinámicas: Requieren la ejecución de la aplicación. Permiten medir el comportamiento de la aplicación desarrollada.
Pruebas estáticas: Se realizan sin ejecutar el código de la aplicación. Se examina el código fuente.
Estrategias de prueba
Caja negra: Se estudia el sistema desde fuera. Son pruebas funcionales.
Caja blanca: Se examina el código fuente y su ejecución. Son pruebas estructurales.
Estrategias de prueba
Estrategias de prueba de caja negra
Se estudia el sistema desde fuera.
Se trabaja sobre la interfaz.
No se tienen en cuenta los detalles internos de funcionamiento.
Se proporcionan entradas y se estudian las salidas.
Principales técnicas:
Particiones de equivalencia
Valores límite
Estrategias de prueba de caja blanca
Se examina el código fuente y su ejecución.
Se comprueban los flujos de ejecución dentro de cada unidad (función, clase, módulo, etc.)
También pueden comprobarse los flujos entre unidades durante la integración.
E incluso entre subsistemas, durante las pruebas de sistema.
Principales técnicas:
Cobertura lógica
Prueba de bucles
Tipos de pruebas
Funcionales: Evaluan el cumplimiento de los requisitos.
No funcionales: Evaluan aspectos adicionales como rendimiento, seguridad, ...
Pruebas funcionales
Pruebas unitarias (o de unidad)
Pruebas de regresión
Pruebas de integración
Pruebas del sistema
Pruebas de humo (smoke test)
Pruebas alfa y beta
Pruebas de aceptación (validación por parte del cliente)
Pruebas no funcionales
Pruebas de usabilidad
Pruebas de rendimiento
Pruebas de stress
Pruebas de seguridad
Pruebas de compatibilidad
Pruebas de portabilidad
...
Mecanismos de prueba
Manual
Mediante pruebas realizadas por personal de la empresa o externo.
Automático
Mediante software que ejecuta código de forma automatizada y compara los resultados obtenidos y los resultados esperados.
Soporte del depurador
Puntos de ruptura
Ejecución paso a paso
Análisis de variables
Automatización de pruebas
Frameworks de pruebas (xUnit)
Aserciones
https://en.wikipedia.org/wiki/XUnit
Frameworks para pruebas
Java: JUnit, TestNG
C++: CppUnit, Google Test
PHP: PHPUnit
Javascript: Mocha
https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
Caso de prueba
precondición --> postcondición
Una entrada conocida --> Una salida esperada
http://www.jtech.ua.es/j2ee/publico/lja-2012-13/sesion04-apuntes.html
Anotaciones JUnit4 / Anotaciones JUnit5
@BeforeClass / @BeforeAll
@Before / @BeforeEach
@Test
@After / @AfterEach
@AfterClass / @AfterAll
@Ignore / @Disabled
JUnit - Aserciones
https://junit.org/junit5/docs/5.0.1/api/org/junit/jupiter/api/Assertions.html
TDD
Desarrollo guiado por pruebas de software, o Test-Driven Development (TDD)
Escribir las pruebas primero (Test First Development).
Refactorización (Refactoring).
Integración
Formas de integración
Integración Big bang
Integración Descendente
Integración Ascendente
Integración Continua (CI)
Servidores de integración continua
CI : Integración continua CD : Despliegue continuo
Jenkins
Bamboo
TravisCI
CircleCI
Note: CI=Continuous Integration / CD=Continuous Delivery.
Calidad
Control de calidad
Control de calidad = medición de la calidad de un producto --> Pruebas
Calidad del proceso/producto (QA/QC)
QA es un conjunto de actividades para garantizar la calidad en los procesos mediante los cuales se desarrollan los productos.
QC es un conjunto de actividades para garantizar la calidad de los productos. Las actividades se centran en identificar defectos en los productos reales producidos.
Note: QA = Quality Assurance / QC = Quality Control
Factores de calidad
Corrección
Fiabilidad
Eficiencia
Seguridad
Facilidad de uso
Mantenibilidad
Flexibilidad
Facilidad de prueba
Portabilidad
Reusabilidad
Interoperatividad
Last updated