viernes, 15 de septiembre de 2023

Las pruebas a un programa

Conseguir probar todo es complicado, sobre todo teniendo en cuenta que la cantidad de pruebas al menos se duplica por cada if que tenga el programa.

Llamemos C a todo el conjunto posible de entradas para una función del programa, y llamemos A al conjunto de datos válidos para esa función. Evidentemente, A está incluido en C.  

Por ejemplo, para la función que dadas dos palabras, devuelve un texto que contiene la primera y la segunda palabra si ambas palabras se encuentran en ese orden en un texto fijo. C es el conjunto de {strings, strings}, y A es el conjunto de palabras presentes en el texto fijo.

Casi todos hacen pruebas para comprobar que cuando se pasan dos parámetros de A el resultado es el esperado. Pero casi nadie hace pruebas para comprobar que cuando se pasan dos parámetros fuera de A (de C menos A), el resultado también está controlado y no se para por excepciones de ningún tipo.

Ahora complicamos un poco y suponemos que ese conjunto A, además tiene una forma concreta de un JSON. Es decir, C ha pasado de ser {string, string} a ser {string}, y A ha pasado a ser el JSON del conjunto de palabras presentes en el texto fijo, pero lo que está fuera de A puede ser desde un JSON con los parámetros incorrectos, pasando por cifras, algo que no sea JSON, y una buena cantidad de combinaciones .... Cuando se realizan pruebas ahora, hay que probar los casos buenos de A, pero también representantes de los casos malos de C menos A. Solo con hacer eso, la estabilidad y fiabilidad de los programas supera con creces a los de cierta corporación.


Copyleft Ender. El presente artículo no tiene finalidad informativa, de creación de opinión pública o de entretenimiento. Tiene como finalidad principal, la enseñanza y la divulgación de experiencias, proyectos, pensamientos y conocimientos del autor. Se permite la copia textual, la traducción y la distribución de este artículo entero en cualquier medio, a condición de que este aviso sea conservado. Se permite la cita. El autor no reclamará ninguna cantidad por el ejercicio de las dos autorizaciones anteriores. No autorizo a ninguna Entidad de Derechos de Autor a reclamar cantidad alguna en mi nombre por el ejercicio de los dos derechos anteriores.





miércoles, 6 de septiembre de 2023

La informática ya no es cosa de ingeniería o matemática

Por desgracia, vivimos en un mundo informático donde hay muchas más personas que no saben programar, ni conocen nada de la teoría de la computación, ni de bases de datos (relacionales, arborescentes, grafos, u otras), ni de comunicaciones, ni de lógica, ni estructuras de datos, a veces ni cómo funciona un ordenador, un sistema operativo o un programa cualquiera. Y superan, con creces, a quienes sí saben lo que se puede hacer o no, y como hacerlo.

Lo malo, es que toda esa gente ocupa, en esas jerarquías que tanto gustan, los puestos superiores de esas jerarquías, donde se deciden qué cosas se tienen que hacer, y lo peor, cómo se deben hacer, y sin consultar con quienes saben hacerlo. Lo malo es que al no conocer lo que se puede o no se puede hacer, empezar a mezclar conceptos simplemente porque la palabra inglesa se parece a la española aunque signifiquen cosas distintas, pues salen cosas muy raras, y mucho más complejas de lo que debieran.

Pero claro, es muy sencillo decir, hágase esto, lo difícil es hacerlo. Y tampoco hay que desdeñar la creación de nuevas palabras para describir "sus hágase esto" o el cambio de significado de palabras ya existentes.

Son ese tipo de personas que piensan que todo se puede solucionar con ficheros con palabras y hojas de cálculo. Lástima. Y que quienes sabemos hacer algo más somos demasiado técnicos. 😂

Copyleft Ender. El presente artículo no tiene finalidad informativa, de creación de opinión pública o de entretenimiento. Tiene como finalidad principal, la enseñanza y la divulgación de experiencias, proyectos, pensamientos y conocimientos del autor. Se permite la copia textual, la traducción y la distribución de este artículo entero en cualquier medio, a condición de que este aviso sea conservado. Se permite la cita. El autor no reclamará ninguna cantidad por el ejercicio de las dos autorizaciones anteriores. No autorizo a ninguna Entidad de Derechos de Autor a reclamar cantidad alguna en mi nombre por el ejercicio de los dos derechos anteriores.