banner

1.2. Detección de defectos


_ Free photo by Markus Spiske on [Unsplash](https://unsplash.com/photos/ypNLP0-ZB6E) _ **Detección.** ¿Cuántos defectos hay en la imagen? ¿4,8,10? La imagen muestra tres fotos instantaneas (también conocidas como polaroid) que al parecer tuvieron problemas en el proceso de revelado o al momento de disparar la toma (de pronto el fotógrafo no era el mejor , ooops). OK, pero ¿qué tiene que ver esto con pruebas? Lo que pasó en este ejemplo ficticio es que las fotos fueron tomadas con una cámara defectuosa, pero para poder identificar el defecto en la cámara fue necesario realizar varias tomas y repetir el revelado para identificar las condiciones que generan las fotos defectuosas. Este es un ejemplo de análisis dinámico, el cual consiste en "ejecutar" el proceso (o en nuestro caso particular la aplicación o sistema) para **VALIDAR** que bajo ciertas entradas el sistema bajo pruebas genere los resultados esperados. > ¿Entonces, verificar no es lo mismo que validar? **NO** Los términos **VERIFICAR** y **VALIDAR** suelen usarse en Español como sinónimos, por lo tanto para nosotros es fácil caer en la tentación de usarlos de forma indiscriminada. Sin embargo, en la jerga de pruebas los dos términos no significan lo mismo. La siguiente imagen ilustra las diferencias; nota que hay una actividad que se hace (usualmente) antes de liberar el producto y otra que se hace cuando hay una versión de producto ejecutable. ¿Cuál es verificación? ¿Cuál es validación?

VERIFICAR consiste en evaluar (de forma estática) que el producto se está construyendo de acuerdo con el diseño y que en su interior se está haciendo de la forma correcta. VALIDAR consiste en evaluar que el producto (ejecutable) cumple con las expectaticas del usuario y los requerimientos. Por eso es que al usar el término testing se habla de validación, y cuando se realiza análisis estático lo que se está haciendo es verificación.

Momento, según esto las inspecciones son para verificación. Pero ¿se puede considerar a las inspecciones como una técnica de detección? SI. Por eso es que las inspecciones son poderosas !! Con inspecciones también se pueden detectar errores de codificación, mala implementación de lógica de negocio, etc.

Adicionalmente al "testing" como técnica de análisis dinámico, contamos con depuración (debugging), monitoreo (monitoring) y perfilamiento (profiling). Mientras que el testing tradicional (es decir de caja negra) se enfoca en validar las salidas del sistema para unas entradas dadas, las DMP (debugging, monitoring, profiling) son más de corte caja blanca, es decir, buscan analizar el comportamiento interno del sistema mientras este se ejecuta.

Monitoreo vs Perfilamiento. Ambas miden consumo de recursos de un sistema bajo análisis, pero el monitoreo hace medición de datos crudos a nivel de componentes de hardware (ejemplo consumo de memoria), y el perfilamiento detecta hot spots, es decir, componentes de software con alto consumo (o inusual) de recursos.





results matching ""

    No results matching ""