Un grupo de investigadores del NIST está desarrollando una herramienta de fuente abierta, basada en combinaciones de pruebas, que permitirá a los desarrolladores de software encontrar errores más rápidamente.
Antes de empezar su desarrollo, los informáticos del NIST estudiaron con detenimiento los fallos de software en una gran variedad de aplicaciones, desde herramientas médicas hasta navegadores de Internet.
Tal como explicó al respecto en una reciente conferencia el profesor de la Facultad de Informática de la Universidad Politécnica de Madrid, Juan José Moreno Navarro, los fallos de software son tan habituales que su coste es cercano a los 60 mil millones de dólares año, lo que representa un 0.6% del PIB de Estados Unidos. Un 80% de los costes del desarrollo de software se destina a identificar y resolver fallos, según la misma fuente.
Esto es así, según Moreno Navarro, porque una gran parte del software producido sigue siendo de mala calidad. Las causas son diversas, especialmente las validaciones incorrectas y el uso de metodologías inadecuadas y no rigurosas.
Tras analizar los datos obtenidos, los informáticos del NIST obtuvieron una evidencia que apoyaba lo que casi la lógica y el conocimiento convencional ya decían: los fallos de software son resultado de los eventos simples más que de los complejos.
Por ejemplo, los navegadores de Internet, que contienen cientos de variables diferentes, suelen fallar debido a las interacciones entre sólo dos variables. De hecho, en las aplicaciones estudiadas por estos informáticos del NIST, los fallos adicionales eran resultado de interacciones de seis variables.
De dos en dos
Partiendo de este punto, los creadores de esta herramienta han intentado superar la práctica más popular para testar los fallos de un software. Ésta consiste en la “prueba por pares”, es decir, explorar las interacciones entre únicamente dos variables al mismo tiempo.
El método diseñado por los informáticos del NIST, según recoge un comunicado del NIST, permite testar eficientemente combinaciones diferentes de ajustes en, por lo menos, seis variables que estén interactuando al mismo tiempo. Esta técnica se parece a la química combinatorial, en la que los científicos investigan múltiples compuestos químicos de manera simultanea en lugar de uno cada vez.
Para explicar cómo funciona esta herramienta, sus creadores ponen el ejemplo de un procesador de textos que es capaz de proporcionar diez formatos de texto diferentes. Ciertas combinaciones de ajustes (pongamos por caso subrayar y poner el texto en itálica) podrían ocasionar un fallo del software.
Probar todas las combinaciones de fallos posibles en este ejemplo requeriría ni más ni menos que 1.024 pruebas. Sin embargo, afirman los informáticos, con la nueva herramienta probar todas las combinaciones posibles de tres efectos cualquiera del procesador de texto requeriría sólo 13 test. ¿Por qué? Gracias al hecho de que, si los test son seleccionados con cuidado, las diez variables posibles permiten explorar 120 combinaciones de “triples” al mismo tiempo. Es decir, no es necesario realmente hacer esas 1.024 pruebas, sino seleccionar bien las pruebas que se hacen.
Seleccionar las variables
El nuevo programa examina las variables del software y, dependiendo del número de variables, genera conjuntos de pruebas que se puedan ejecutar utilizando más de seis variables diferentes (en lugar de hacerlo de una en una o por pares, como hasta ahora). Es decir, que más que probar de forma exhaustiva cada variable única, el equipo cree que esta interacción entre unas pocas variables puede detectar los mismos errores que haciéndolo con la manera “tradicional”, pero en menos tiempo, evidentemente.
La herramienta lo que hace es generar pruebas que exploran las interacciones entre ajustes de múltiples variables en un programa informático. En comparación con la mayoría del software de prueba actuales este desarrollo genera rápidamente pruebas para testar seis interacciones simultáneamente.
Los investigadores tienen pensado presentar este desarrollo el próximo año. Han decidido, además, que sea de código abierto. De hecho, han invitado a varios desarrolladores a participar en las pruebas de la versión beta antes de lanzarla.
La nueva herramienta podría ser particularmente útil para incrementar la rentabilidad de los portales de comercio electrónico, ya que contienen frecuentemente muchas variables que interactuan. También podría ser muy útil en las líneas de ensamblado industrial. Éstas incluyen muchos elementos controlados por softwares que regularmente se encienden y se apagan, y que pueden fallar con cierta facilidad.
Hacer un comentario