Un sanity check 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 verdadero. Es una comprobación sencilla para verificar si el material producido es racional (que el creador del material estaba pensando de manera racional, aplicando cordura). El propósito de una prueba de cordura es descartar ciertas clases de resultados obviamente falsos, no detectar todos los posibles errores. Una regla general o un cálculo aproximado pueden utilizarse para realizar esta prueba. La ventaja de efectuar un sanity check inicial es evaluar con rapidez la funcionalidad básica.
En aritmética, por ejemplo, al multiplicar por 9, utilizar la regla de divisibilidad para 9 para verificar que la suma de los dígitos del resultado sea divisible por 9 es un sanity check: no detectará todos los errores de multiplicación, pero es un método rápido y sencillo para descubrir muchos errores posibles.
En informática, un sanity test es una ejecución muy breve de la funcionalidad de un programa informático, sistema, cálculo u otro análisis, para asegurar que parte del sistema o metodología funciona de manera aproximada a lo esperado. Esto suele realizarse antes de una ronda de pruebas más exhaustiva.
Matemáticas
Un sanity test puede referirse a distintos órdenes de magnitud y otros dispositivos simples basados en reglas generales utilizados para verificar cálculos matemáticos. Por ejemplo:
Si se intenta elevar al cuadrado 738 y se calcula 54 464, un sanity check rápido mostraría que este resultado no puede ser correcto. Dado que elevar al cuadrado enteros positivos preserva su desigualdad, el resultado no puede ser verdadero y, por tanto, es incorrecto.
Física
El análisis dimensional puede usarse como sanity check para ecuaciones físicas: ambos lados de cualquier ecuación deben tener dimensiones conmensurables o iguales. Una persona que haya calculado la potencia generada por un automóvil como 700 kJ puede haber omitido un factor, puesto que el joule es una unidad de energía, no de potencia (energía por unidad de tiempo).
Al determinar propiedades físicas, compararlas con sustancias conocidas o similares suele aportar información sobre si el resultado es razonable. Por ejemplo, la mayoría de los metales se hunden en agua, por lo que la densidad de la mayoría de los metales debe ser mayor que la del agua (~1000 kg/m³).
Las estimaciones de Fermi pueden aportar información sobre el orden de magnitud de un valor esperado.
Desarrollo de software
En desarrollo de software, un sanity test (una forma de prueba de software que ofrece “pruebas rápidas, amplias y superficiales”[1]) evalúa el resultado de un subconjunto de funcionalidad de una aplicación para determinar si es posible y razonable proceder con pruebas adicionales de la aplicación completa.[2] Los sanity tests pueden utilizarse a veces de manera intercambiable 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 pruebas adicionales. Por otro lado, a veces se distingue entre un smoke test como prueba no exhaustiva que confirma si las funciones más cruciales del programa funcionan antes de continuar, y un sanity test como comprobación de que una funcionalidad específica (como una corrección de un error) funciona según lo esperado sin probar la funcionalidad más amplia.[citarequerida] En otras palabras, un sanity test determina si el resultado previsto de un cambio de código funciona correctamente, mientras que un smoke test asegura que nada más importante se ha roto en el proceso.
Los sanity tests también evitan perder tiempo y esfuerzo determinando rápidamente si una aplicación está demasiado defectuosa para merecer pruebas más rigurosas de aseguramiento de calidad, y permiten identificar si se requiere más depuración por parte de los desarrolladores.
Otro uso común de sanity test se refiere a comprobaciones realizadas dentro del código del programa, normalmente sobre los argumentos de funciones o sus valores de retorno, para determinar si las respuestas pueden asumirse como correctas. Cuanto más compleja es la rutina, más importante es verificar su respuesta. El caso trivial es comprobar si el valor de retorno de una función indica éxito o fallo y detener el procesamiento en caso de fallo. Este valor de retorno suele ser en sí mismo el resultado de un sanity check. Por ejemplo, si la función intentó abrir, escribir y cerrar un archivo, un sanity check puede asegurar que no falló en ninguna de estas acciones, una comprobación a menudo ignorada por los programadores.[7]
Este tipo de sanity checks puede utilizarse durante el desarrollo con fines de depuración y para ayudar en la resolución de problemas de errores en tiempo de ejecución.
Los sanity checks también se realizan durante la instalación de código de software en fase estable o de producción en un nuevo entorno de ejecución para asegurar que todas las dependencias están satisfechas, como un sistema operativo compatible y las bibliotecas de enlace. Cuando un entorno de computación supera todos los sanity checks, se considera un entorno “sano” para que el instalador proceda con una expectativa razonable de éxito.
Un programa «Hola, mundo» se usa a menudo como sanity test para un entorno de desarrollo. Si este programa simple falla al compilar o ejecutarse, indica un problema de configuración del entorno que impedirá que cualquier código compile o se ejecute. Pero si «Hola, mundo» funciona correctamente, los problemas en otros programas pueden atribuirse al código de dichas aplicaciones y no al entorno.
Los sanity checks se utilizan a menudo en el vibe coding, especialmente entre distintos modelos de IA (aunque dos instancias separadas del mismo modelo pueden funcionar en algunos casos),[12] con el fin de que un modelo distinto cubra puntos ciegos o verifique posibles errores o lógica defectuosa usando una fuente externa.[13] Esto también puede ser realizado por depuradores humanos, igual que con código escrito por personas.
↑Sammi, Rabia; Masood, Iram; Jabeen, Shunaila (2011). «A Framework to Assure the Quality of Sanity Check Process». En Zain, Jasni Mohamad; Wan Mohd, Wan Maseri bt; El-Qawasmeh, Eyas, eds. Software Engineering and Computer Systems. Communications in Computer and Information Science 181. Berlin, Heidelberg: Springer. pp.143-150. ISBN978-3-642-22203-0. doi:10.1007/978-3-642-22203-0_13.
↑Hassan, A. E.; Zhang, K. (2006). "Using Decision Trees to Predict the Certification Result of a Build". In: Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering. IEEE Computer Society, pp. 189–198.