Cuando hablamos de lo que se debe aplicar para un desarrollo seguro, mencionamos el hecho de incluir un plan de pruebas de software con el objetivo de validar que los nuevos desarrollos o los cambios en los sistemas están libres de defectos o fallas que puedan poner en riesgo la continuidad de las operaciones del negocio, incluyendo la confidencialidad e integridad de la información.

Se puede pensar en detectar vulnerabilidades de software mediante fuzzing o incluso más que pruebas funcionales, pensar en otras pruebas que deberías conocer tales como las pruebas de requisitos, las pruebas en diseño, las de seguridad y las de rendimiento, que deben abarcar todo el ciclo de vida del desarrollo.

Métodos combinatorios para hacer pruebas

Cuando se trata de hacer pruebas de software sobre alguna nueva funcionalidad hay muchos factores que deben considerarse y tenerse en cuenta, para comprobar que las funcionalidades que componen el proyecto cumplan con los requisitos de funcionamiento planteados desde el diseño. Estas pruebas que se pueden realizar paralelamente con el desarrollo de la aplicación o al final del mismo, lo que implica la elección de casos de prueba que permitan probar de forma más exhaustiva las funcionalidades del nuevo desarrollo. Son las pruebas de combinatoria las que nos ayudan a detectar problemas en el ciclo de vida.

La idea clave de las pruebas combinatorias es que no todos los parámetros contribuyen a cada fracaso y la mayoría de los fallos se desencadena por interacciones entre un número relativamente pequeño de parámetros. De  hecho datos empíricos recolectados por el NIST sugieren que los fallos de software son causados por la interacción de pocos valores de los parámetros, y que la proporción de fracasos atribuibles a las interacciones disminuye muy rápidamente con un aumento en la cantidad de parámetros que intervienen. Es decir, que un parámetro individual o a lo sumo un par de valores son la causa de un fracaso.

¿Cuáles son los tipos de pruebas combinatorias?

Existen básicamente dos métodos para pruebas combinatorias: combinaciones de valores de los parámetros de configuración o combinaciones de valores de los parámetros de entrada.

En el primer caso, seleccionamos las combinaciones de valores de parámetros configurables. Por ejemplo, un nuevo aplicativo puede probarse teniendo en cuenta el número de conexiones simultáneas permitidas, memoria, sistema operativo y el tamaño de base de datos.

En el segundo enfoque, seleccionamos las combinaciones de valores de datos de entrada, que luego se convierten en parte de los casos de prueba completa. Un enfoque típico de la prueba es la creación de escenarios de uso y seleccionar los valores de entrada para ejercer la aplicación en cada escenario y complementar estas pruebas con casos problemáticos, inusuales o sospechosas.

Utilizando estos dos enfoques, se pueden simplificar de manera importante la cantidad de casos que se van a abordar en una prueba funcional. En una próxima entrega les contaremos la forma en que podemos llevar esta metodología a la práctica. ¡No se lo pierdan