La Industria de la Prueba de Software

Según datos que circulan desde hace tiempo y de diversas fuentes, tanto gubernamentales como privadas, el mercado de software en México se estima en alrededor de 1,100 millones de dólares estadounidenses; se estima también que ha venido creciendo a tasas del 10% en los últimos años. Por otra parte, el mercado de prueba se estima en aproximadamente 100 millones de dólares, distribuido en los sectores típicos.Además de que el mercado mexicano de la prueba está creciendo, el de nuestros vecinos del norte es enorme y comienza a recuperarse. Sin embargo, para entrar en ese mercado tan competido es menester contar con buenas credenciales. Ciertamente la industria mexicana de pruebas ha venido mejorando y fortaleciéndose; sin embargo, la pregunta es si lo hace con la rapidez necesaria. Estamos frente a una oportunidad coyuntural que no esperará mucho tiempo.

Capacidades actuales de la industria de pruebas
Basados en nuestras experiencias en México y en el extranjero, en los números de Nov-Ene 2010 (certificaciones para testers), Ago-Oct 2008 (diagnósticos de productos), Nov-Dic 2006 (assessments de organizaciones de prueba) y Mar-Abr 2006 (la industria de pruebas en México) hemos expresado algunos comentarios que pueden resumirse en que, para que México aparezca en el radar internacional como proveedor de servicios de prueba es necesario que el país cuente con:

• Más testers y mejor calificados, certificados internacionalmente, de manera que se pueda infundir confianza.
• Procesos de prueba más maduros, que utilicen modelos estadísticos para realizar las pruebas de una manera efectiva.
• Más empresas especializadas en prueba, que cuenten con certificaciones en modelos internacionales de calidad especializados en prueba de software.
• Una mayor aplicación sistemática de la práctica de la prueba en la industria. El que las pruebas no se realicen, o se ejecuten esas deficiencias, hace que el mercado interno sufra con productos defectuosos, lo cual inhibe su crecimiento; al mismo tiempo, dado que el producto se libera con muchos defectos, el mantenimiento se vuelve más costoso, lo cual nuevamente inhibe el mercado.

Las empresas de prueba de software no suelen trabajar en base a métricas, ni utilizar modelos de calidad especializados en prueba que les provean un marco de referencia adecuado que les facilite mejorar. La mayoría de ellas se concentra en ofrecer servicios de outsourcing de testers en el esquema conocido en el sector financiero como “man-power”, consistente en sólo proporcionar la gente, para que el cliente administre el proyecto. La tendencia, sin embargo, es hacia lo que se suele llamar “fábrica de pruebas” en el cual el cliente paga por la productividad alcanzada, lo cual requiere procesos maduros basados en métricas.

En nuestra práctica de consultoría venimos observando que muchas organizaciones de prueba suelen presentar debilidad en recabar y aplicar métricas para la estimación de defectos, para la distribución del esfuerzo de pruebas, y para la definición del criterio de terminación de las mismas. Las métricas son muy importantes para realizar las pruebas de manera efectiva.

Un principio básico
La prueba es finalmente una práctica basada en métricas y en la aplicación de la estadística; cuando no se realiza de esta manera se pierde efectividad y dinero. Desde el punto de vista teórico, dado que el software no puede probarse algorítmicamente, y que el state of the practice (no sólo en México, sino en el mundo) no es el uso de “métodos formales” (tecnología que describiremos en otro número), la estrategia es aplicar las heurísticas apropiadas basándose en datos estadísticos. Déjenme ejemplificar el punto tomando un caso clásico de Myers. Supongamos que nos contratan para probar un pequeño sistema que recibe como entrada 3 números enteros entre 1 y 100,000 que representan los lados de un triángulo, y que genera como salida un letrero con un mensaje que puede ser uno de los siguientes:

• “eQuilátero”, si los 3 enteros son iguales.
• “Isósceles”, si 2 de los enteros son iguales.
• “eScaleno”, si los enteros son diferentes.
• “No es triángulo”, si no puede formarse un triángulo con lados de esas dimensiones.
La figura 1 ilustra este problema.

Figura 1. Ilustración del problema a probar

¿Cuántos casos de prueba serían necesarios para probar exhaustivamente el sistema? Y si pudiéramos diseñar y aplicar 1 caso de prueba por segundo, ¿en cuánto tiempo terminaríamos? Recuerden que cada uno de los 3 enteros varían en un intervalo de tamaño 10^5; por otro lado, escribir un programa para realizar las pruebas nos regresa al problema original de probar un producto. De este ejercicio debiera quedar claro que la meta de probar exhaustivamente un producto no es una buena estrategia.

La zona rentable de la prueba
La labor de la prueba es utilizar técnicas ingenieriles para diseñar y aplicar casos de prueba en cantidad y calidad suficiente, de manera que el producto alcance el nivel de calidad deseado; para poder hacerlo adecuadamente es necesario contar con métricas. La calidad incluye que el caso de prueba sea diseñado sistemáticamente para que tenga una alta probabilidad de detectar defectos. La cantidad tiene que ver con que con ese número de casos de prueba estemos en la “zona rentable” de la relación costo-beneficio, como se muestra en la figura 2.


Figura 2. La zona rentable

Hay una zona en la que es rentable invertir para detectar defectos (la enmarcada en el rectángulo), porque encontrarlos no requiere de muchos recursos; sin embargo, pasando un punto eso ya no es conveniente. Para definir ese punto, que implica especificar la cantidad de defectos a encontrar y la de casos de prueba a diseñar y aplicar, es necesario por un lado considerar el dominio de aplicación del producto (no puede probarse igual un producto para el mercado administrativo, que la turbina de un avión), y por otro contar con métricas afinadas que guíen las pruebas para encontrar dejar el producto listo para su mercado.