Un control 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 puede ser cierto. Es una simple comprobación para ver si el material producido es racional (que el creador del material estaba pensando racionalmente, aplicando la cordura ). El objetivo de una prueba de cordura es descartar ciertas clases de resultados obviamente falsos, no detectar todos los errores posibles. Para realizar la prueba se puede comprobar una regla general o un cálculo aproximado . 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, usar 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 una prueba rápida y sencilla. Método para descubrir muchos errores posibles.
En informática , una prueba de cordura es un repaso muy breve de la funcionalidad de un programa , sistema, cálculo u otro análisis de computadora, para garantizar que parte del sistema o metodología funcione más o menos 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 simples de regla general aplicados 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 funcionalidades de la aplicación para determinar si es posible y razonable continuar con pruebas adicionales. de toda la aplicación. [2] Las pruebas de cordura a veces pueden usarse indistintamente con las pruebas de humo [3] en la medida en que ambos términos denotan pruebas que determinan si es posible y razonable continuar con las pruebas. Por otro lado, a veces se hace la 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 pruebas adicionales, mientras que una prueba de cordura se refiere a si una funcionalidad específica, como un error en particular, La solución funciona como se esperaba sin probar la funcionalidad más amplia del software. [ cita necesaria ] 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 garantiza que no se haya roto nada más importante en el proceso. Las pruebas de cordura y las pruebas de humo evitan perder tiempo y esfuerzo al determinar rápidamente si una aplicación tiene demasiados defectos como para merecer pruebas de control de calidad más rigurosas , pero necesita más depuración por parte del desarrollador .
Los grupos de pruebas de cordura a menudo se agrupan para pruebas unitarias automatizadas de funciones, bibliotecas o aplicaciones antes de fusionar el código de desarrollo en una rama de control de versión troncal o de prueba , [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 indicar comprobaciones que se realizan dentro del código del programa, generalmente en argumentos de funciones o 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 será comprobar su respuesta. El caso trivial es verificar si el valor de retorno de una función indica éxito o fracaso y, por lo tanto, detener el procesamiento posterior en caso de falla. En realidad, este valor de retorno suele ser en sí mismo el resultado de una verificación de cordura. Por ejemplo, si la función intentó abrir, escribir y cerrar un archivo, se puede utilizar una verificación de cordura para garantizar que no falló en ninguna de estas acciones, lo cual es una verificación de cordura que los programadores a menudo ignoran. [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 tiempo de ejecución del software . Por ejemplo, en una aplicación de administración de cuentas bancarias, una verificació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 se vuelva negativa (lo cual 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 nunca antes visitados por el titular de la tarjeta pueden marcarse para su confirmación. [ cita necesaria ]
También se realizan comprobaciones de cordura tras la instalación de un 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 pasado todas las comprobaciones de seguridad, se le considera un entorno sano para que el programa de instalación proceda con expectativas razonables de éxito.
Un "¡Hola mundo!" El programa se utiliza a menudo como prueba de cordura para un entorno de desarrollo de manera similar. 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", cualquier problema experimentado con otros programas probablemente pueda atribuirse a errores en el código de esa aplicación y no 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 control de cordura en favor de otros términos como prueba de confianza , control de coherencia o simplemente pruebe , como parte de un intento más amplio de evitar el lenguaje capacitista y aumentar la inclusión .
Un hábito de programación común es ignorar el valor de retorno de fprintf(stderr, ...