Una comprobación de cordura o prueba de cordura es una prueba básica para evaluar rápidamente si una afirmación o el resultado de un cálculo pueden ser verdaderos. Es una comprobación simple para ver si el material producido es racional (que el creador del material estaba pensando racionalmente, aplicando cordura ). El objetivo de una prueba de cordura es descartar ciertas clases de resultados obviamente falsos, no detectar todos los errores posibles. Se puede comprobar una regla empírica o un cálculo aproximado para realizar la prueba. La ventaja de realizar una prueba de cordura inicial es la de evaluar rápidamente la función básica.
En aritmética, por ejemplo, al multiplicar por 9, utilizar la regla de divisibilidad de 9 para verificar que la suma de los dígitos del resultado es divisible por 9 es una prueba de cordura: no detectará todos los errores de multiplicación, pero es un método rápido y simple para descubrir muchos errores posibles.
En informática , una prueba de cordura es un breve repaso de la funcionalidad de un programa informático , un sistema, un cálculo u otro análisis, para garantizar que parte del sistema o de la metodología funciona aproximadamente como se espera. Esto suele ocurrir antes de una ronda de pruebas más exhaustiva.
Una prueba de cordura puede referirse a varios órdenes de magnitud y otros dispositivos empíricos simples que se aplican para verificar cálculos matemáticos . Por ejemplo:
En el desarrollo de software, una prueba de cordura (una forma de prueba de software que ofrece "pruebas rápidas, amplias y superficiales" [1] ) evalúa el resultado de un subconjunto de la funcionalidad de la aplicación para determinar si es posible y razonable continuar con más pruebas de toda la aplicación. [2] Las pruebas de cordura a veces se pueden usar indistintamente con pruebas de humo [3] en la medida en que ambos términos denotan pruebas que determinan si es posible y razonable continuar con más pruebas. Por otro lado, a veces se hace una distinción de que una prueba de humo es una prueba no exhaustiva que determina si las funciones más cruciales de un programa funcionan antes de continuar con más pruebas, mientras que una prueba de cordura se refiere a si una funcionalidad específica, como una corrección de error particular, funciona como se espera sin probar la funcionalidad más amplia del software. [ cita requerida ] En otras palabras, una prueba de cordura determina si el resultado previsto de un cambio de código funciona correctamente, mientras que una prueba de humo asegura que nada más importante se rompió en el proceso. Las pruebas de cordura y las pruebas de humo evitan la pérdida de tiempo y esfuerzo al determinar rápidamente si una aplicación es demasiado defectuosa como para merecer una prueba de control de calidad más rigurosa , pero necesita más depuración por parte del desarrollador .
Los grupos de pruebas de cordura a menudo se agrupan para realizar pruebas unitarias automatizadas de funciones, bibliotecas o aplicaciones antes de fusionar el código de desarrollo en una rama de control de versiones de prueba o troncal , [4] para la construcción automatizada , [5] o para la integración continua y la implementación continua . [6]
Otro uso común de la prueba de cordura es para denotar las comprobaciones que se realizan dentro del código del programa, normalmente sobre los argumentos de las funciones o sobre los retornos de las mismas, para ver si se puede suponer que las respuestas son correctas. Cuanto más complicada sea la rutina, más importante es que se compruebe su respuesta. El caso trivial es comprobar si el valor de retorno de una función indicó éxito o fracaso, y por tanto detener el procesamiento posterior en caso de fallo. Este valor de retorno es en realidad a menudo el resultado de una comprobación de cordura. Por ejemplo, si la función intentó abrir, escribir y cerrar un archivo, se puede utilizar una comprobación de cordura para asegurarse de que no falló en ninguna de estas acciones, que es una comprobación de cordura que los programadores suelen ignorar. [7]
Este tipo de comprobaciones de cordura se pueden utilizar durante el desarrollo con fines de depuración y también para ayudar a solucionar errores de ejecución del software . Por ejemplo, en una aplicación de gestión de cuentas bancarias, una comprobación de cordura fallará si un retiro solicita más dinero que el saldo total de la cuenta en lugar de permitir que la cuenta quede en números negativos (lo que no sería sensato). Otra prueba de cordura podría ser que los depósitos o las compras correspondan a patrones establecidos por datos históricos; por ejemplo, las transacciones de compras grandes o los retiros en cajeros automáticos en lugares extranjeros que nunca antes haya visitado el titular de la tarjeta pueden marcarse para confirmación. [ cita requerida ]
También se realizan comprobaciones de integridad tras la instalación de código de software de producción estable en un nuevo entorno informático para garantizar que se cumplan todas las dependencias , como un sistema operativo compatible y bibliotecas de enlaces . Cuando un entorno informático ha superado todas las comprobaciones de integridad, se considera que es un entorno sano para que el programa de instalación pueda continuar con una expectativa razonable de éxito.
De manera similar, un programa "¡Hola mundo!" se suele utilizar como prueba de cordura para un entorno de desarrollo . En lugar de un script complicado que ejecuta un conjunto de pruebas unitarias, si este programa simple no se compila o ejecuta, demuestra que el entorno de soporte probablemente tenga un problema de configuración que impedirá que se compile o ejecute cualquier código. Pero si se ejecuta "Hola mundo", es probable que cualquier problema experimentado con otros programas se pueda atribuir a errores en el código de esa aplicación en lugar de al entorno.
La Association for Computing Machinery [ 8] y proyectos de software como Android [9] , MediaWiki [10] y Twitter [11] desaconsejan el uso de la frase prueba de cordura en favor de otros términos como prueba de confianza , prueba de coherencia o simplemente prueba , como parte de un intento más amplio de evitar el lenguaje capacitista y aumentar la inclusión .
Un hábito común de programación es ignorar el valor de retorno de fprintf(stderr, ...