¿Qué son las pruebas de módulos? Definición, ejemplos
⚡ Resumen inteligente
Las pruebas de módulos comprueban subprogramas, subrutinas, clases y procedimientos individuales, en lugar del programa ensamblado, por lo que los defectos afloran dentro de un pequeño bloque de código bien comprendido, donde resultan económicos de localizar y reparar.

¿Qué son las pruebas de módulos?
Pruebas de módulos Es un tipo de prueba de software que verifica subprogramas, subrutinas, clases o procedimientos individuales dentro de un programa. En lugar de probar todo el programa de software a la vez, las pruebas de módulos recomiendan probar los componentes más pequeños del programa.
Las pruebas de módulos se basan principalmente en el enfoque de caja blanca. El objetivo de las pruebas de módulos no es demostrar el correcto funcionamiento del módulo, sino la presencia de un error. Esta inversión es crucial: una ejecución que no encuentra nada confirma muy poco, mientras que una ejecución que revela un defecto cumple su cometido.
Las pruebas a nivel de módulo también permiten introducir el paralelismo en el proceso de prueba, ya que crean la oportunidad de probar varios módulos simultáneamente en lugar de esperar a que se complete la compilación.
Por qué hacer pruebas de módulos
Se recomienda realizar pruebas de módulos porque modifican la economía de la detección de defectos.
- La probabilidad de identificar errores o fallos en fragmentos más pequeños de un programa aumenta.
- Se pueden probar varios módulos simultáneamente, por lo que este enfoque permite realizar pruebas en paralelo.
- La complejidad de las pruebas se puede gestionar fácilmente, ya que cada módulo se analiza de forma independiente.
- Se encontró un defecto dentro de un módulo. tracPermite escribir una pequeña cantidad de código, por lo que el tiempo de depuración se reduce drásticamente.
¿Cómo hacer pruebas de módulos?
Diseñando un caso de prueba es el segmento importante de las pruebas de módulos. Al diseñar casos de prueba para una prueba de módulo, un probador debe tener en cuenta dos cosas.
- Especificación para el módulo
- El código fuente del módulo.
Analice la lógica del módulo utilizando uno o más de los siguientes métodos: caja blanca métodos, y luego complementar estos casos de prueba aplicando cuadro negro métodos para la especificación del módulo. Los valores realistas importan tanto como las rutas elegidas, así que prepare el datos de prueba junto con los casos, y no después.
Una vez diseñados los casos de prueba, el siguiente paso es combinar los módulos para realizar las pruebas. El método utilizado es uno u otro. incrementales no incremental método.
- Método no incremental — Todos los módulos se prueban de forma independiente. Primero se combinan todos los módulos y luego se prueba el programa completo.
- Método incremental — Cada módulo se prueba primero y luego se agrega gradualmente a la colección que se está probando. Se realiza una nueva prueba paso a paso.
- Dentro de las pruebas incrementales existen dos enfoques, de arriba hacia abajo y de abajo hacia arriba pruebas.
- Para ejecutar el módulo con los datos seleccionados, se requiere un controlador que suministre los datos de prueba, supervise la ejecución y capture los resultados.
La elección entre ambos métodos supone un compromiso entre el esfuerzo de configuración y la facilidad de diagnóstico.
| Aspecto | Método incremental | Método no incremental |
| Mixta | Un módulo a la vez, añadido a una colección probada. | Todos los módulos combinados y luego probados juntos. |
| Se necesita andamio | Más controladores y esbozos, escritos progresivamente | Menos dobles de prueba, ya que hay módulos reales presentes. |
| Aislamiento de fallos | Fuerte: un fallo apunta al módulo recién añadido | Débil: un fallo podría tener su origen en cualquier parte. |
| Mejores adecuados para | Construcciones grandes con muchos módulos que interactúan entre sí. | Programas pequeños con pocos módulos y bajo acoplamiento |
Controladores y stubs en las pruebas de módulos
El controlador mencionado anteriormente es uno de los dos componentes. Dado que un módulo bajo prueba rara vez se encuentra al principio o al final de la cadena de llamadas, los evaluadores sustituyen con código ficticio lo que falte a ambos lados.
- Destornillador — reemplaza el módulo que realiza la llamada por encima del que se está probando. Proporciona los datos de prueba, invoca el módulo, supervisa la ejecución y captura los resultados. Las pruebas ascendentes dependen de los controladores, ya que los módulos inferiores están listos antes que los superiores.
- Talón — reemplaza un módulo llamado que se encuentra debajo del que se está probando. Acepta la llamada y devuelve una respuesta fija y conocida para que el módulo bajo prueba pueda completar su ruta. Las pruebas descendentes dependen de los stubs, ya que los módulos superiores están listos primero.
Un caso práctico hace que la correspondencia sea concreta. Si un módulo de cálculo de pagos está terminado, pero la pantalla de pago que lo llama no lo está, un controlador le proporciona al módulo un conjunto de totales de pedido y registra la respuesta. Si el servicio de consulta de impuestos al que llama el módulo también está incompleto, un módulo auxiliar devuelve una tasa impositiva fija para que el cálculo continúe. Ninguno de los componentes básicos se implementa; ambos se descartan una vez que llegan los módulos reales, razón por la cual la mala interpretación de los simuladores de prueba se menciona más adelante como un desafío recurrente.
Consejos de ejemplo para la prueba de módulos
Aquí hay algunos consejos a tener en cuenta antes de realizar pruebas de módulos.
- RevRevisa los casos de prueba antes de usarlos.
- Evite confusiones sobre el origen de las discrepancias.
- Utilice herramientas de prueba automatizadas.
- Examine las variables que deberían permanecer sin cambios.
- Intercambia los módulos entre los evaluadores para evitar las autopruebas.
- Reutiliza los casos de prueba.
El quinto consejo tiene más peso del que aparenta. Un desarrollador que prueba únicamente el módulo recién escrito repite las mismas suposiciones que generaron el defecto, por lo que rotar los módulos entre diferentes personas es una de las maneras más económicas de mejorar la calidad.
Pruebas unitarias frente a pruebas de módulos
En muchos equipos, ambos términos se utilizan indistintamente, aunque la autoría y el alcance difieren.
| Prueba de módulo | Examen de la unidad |
| Las pruebas de módulo son una colección de pruebas escritas por un evaluador después de que un desarrollador haya escrito algún código. | Pruebas unitarias son una colección de pruebas escritas por un desarrollador durante el proceso de desarrollo de software |
| Las pruebas de módulos pueden implicar la combinación de las pruebas unitarias. | Las pruebas unitarias pueden probar las unidades de forma aislada. |
Pruebas de módulos vs. Pruebas de componentes vs. Pruebas de integración
Las pruebas de módulos también se ubican junto a dos niveles adyacentes que pueden confundirse fácilmente con este. La tabla los separa según lo que se está probando y quién normalmente realiza la prueba.
| Aspecto | Pruebas de módulos | Prueba de componentes | Pruebas de integración |
| Bajo prueba | Un subprograma, clase o procedimiento | Un componente autónomo con sus dependencias inmediatas. | Las interfaces entre módulos combinados |
| Propietario habitual | Probador, después de que se escribe el código. | Tester | probador de integración |
| Andamio | Conductores y espárragos | Stubs para dependencias externas | Cada vez menos dobletes de prueba |
| Defecto expuesto | Error lógico dentro del módulo | Error de comportamiento en el componente | Error de interfaz y de paso de datos |
En el uso cotidiano prueba de componentes y las pruebas de módulos se tratan frecuentemente como la misma actividad, mientras que pruebas de integración El proceso comienza únicamente una vez que cada módulo individual haya sido aprobado por separado.
Desafíos en las pruebas de módulos
Estos son los retos a los que se enfrentan con mayor frecuencia los equipos cuando se introducen las pruebas de módulos.
- Las pruebas no incrementales requieren más trabajo — Combinar todo primero significa que un solo fallo puede hacer que los evaluadores tengan que repetir todo el programa.
- La prueba de malentendidos se duplica — Un stub que devuelve un valor irreal produce una ejecución verde que no prueba nada.
- A menudo, las pruebas de depuración — El código de andamiaje conlleva sus propios defectos, y el tiempo dedicado a corregir un controlador es tiempo que no se dedica a probar el módulo.
- Necesito entender el código. — La orientación de caja blanca significa que un evaluador que no pueda leer el módulo no podrá diseñar casos significativos para él.
