En el contexto de la ingeniería de software, la depuración es el proceso de corregir un error en el software. En otras palabras, se refiere a identificar, analizar y eliminar errores. Esta actividad comienza después de que el software no se ejecuta correctamente y concluye resolviendo el problema y probando con éxito el software. Se considera que es una tarea extremadamente compleja y tediosa porque los errores deben resolverse en todas las etapas de la depuración.
Proceso de depuración: Los pasos involucrados en la depuración son:
- Identificación de problemas y elaboración de informes.
- Asignar el informe al ingeniero de software al defecto para verificar que es genuino.
- Análisis de defectos usando modelado, documentación, búsqueda y prueba de defectos candidatos, etc.
- Resolución de defectos mediante la realización de los cambios necesarios en el sistema.
- Validación de correcciones.
El proceso de depuración siempre tendrá uno de dos resultados:
1. La causa será encontrada y corregida.
2. No se encontrará la causa.
Posteriormente, la persona que realiza la depuración puede sospechar una causa, diseñar un caso de prueba para ayudar a validar esa sospecha y trabajar hacia la corrección de errores de manera iterativa.
Durante la depuración, encontramos errores que van desde levemente molestos hasta catastróficos. A medida que aumentan las consecuencias de un error, también aumenta la cantidad de presión para encontrar la causa. A menudo, la presión obliga a veces a un desarrollador de software a corregir un error y, al mismo tiempo, introducir dos más.
Depuración de enfoques/estrategias:
- Fuerza bruta: estudie el sistema durante más tiempo para comprender el sistema. Ayuda al depurador a construir diferentes representaciones de los sistemas a depurar según la necesidad. También se realiza activamente un estudio del sistema para encontrar cambios recientes realizados en el software.
- Backtracking: análisis hacia atrás del problema que implica rastrear el programa hacia atrás desde la ubicación del mensaje de falla para identificar la región del código defectuoso. Se realiza un estudio detallado de la región para encontrar la causa de los defectos.
- El análisis hacia adelante del programa implica rastrear el programa hacia adelante utilizando puntos de interrupción o instrucciones impresas en diferentes puntos del programa y estudiando los resultados. La región en la que se obtienen los resultados incorrectos es la región en la que debe centrarse para encontrar el defecto.
- Usando la experiencia pasada del software, depure el software con problemas similares en la naturaleza. El éxito de este enfoque depende de la experiencia del depurador.
- Eliminación de causas: introduce el concepto de partición binaria. Los datos relacionados con la ocurrencia del error se organizan para aislar las posibles causas.
Herramientas de depuración:
La herramienta de depuración es un programa informático que se utiliza para probar y depurar otros programas. Una gran cantidad de software de dominio público como gdb y dbx están disponibles para la depuración. Ofrecen interfaces de línea de comandos basadas en consola. Los ejemplos de herramientas de depuración automatizadas incluyen rastreadores basados en código, perfiladores, intérpretes, etc. Algunos de los depuradores más utilizados son:
Diferencia entre depuración y prueba:
La depuración es diferente de la prueba. Las pruebas se centran en encontrar fallas, errores, etc., mientras que la depuración comienza después de que se haya identificado un error en el software. Las pruebas se utilizan para garantizar que el programa es correcto y se suponía que funcionaría con una cierta tasa mínima de éxito. Las pruebas pueden ser manuales o automatizadas. Hay varios tipos diferentes de pruebas, como pruebas unitarias, pruebas de integración, pruebas alfa y beta, etc. La depuración requiere muchos conocimientos, habilidades y experiencia. Puede ser compatible con algunas herramientas automatizadas disponibles, pero es más un proceso manual, ya que cada error es diferente y requiere una técnica diferente, a diferencia de un mecanismo de prueba predefinido.