Wednesday, July 16, 2014

Testeo Combinatorial de APIs, + Combinando Reflection.

Testear librerias y API, puede llegar a ser un trabajo tedioso debido a la cantidad de parámetros y sus posibles combinaciones que pueda soportar, el presente artículo muestra como se puede testear un método, CreateFile con sus diferentes posibles combinaciones.

Comenzamos escribiendo un algoritmo que devuelve las posibles combinaciones de diferentes objetos, en este caso no especificaremos ningún tipo pues necesitamos que nuestro algoritmo sea lo más genérico posible.

La ventaja del algoritmo mostrado es su generalidad, pues no necesita pasarle tipos específicos. Un ejemplo de uso del algoritmo anterior, puede darnos la potencia combinando con Reflection como se muestra el ejemplo en el cual estamos testeando FileCreate(string Path, int bufferSize, FileOptions).

Generamos una combinatoria con todos los posibles parametros el cual nos da casi total cobertura del mismo.

Como se ve el algoritmo se adaptaría automáticamente a cualquier cambio en los tipos enumerados en FileOptions, el cual también es aplicable a Actions, la salida del algoritmo anterior seria la combinatoria:

Dado que este algoritmo soporta objetos sin tipo específico es posible combinar tipos del tipo MethodInfo, para invocar acciones genéricas de tal forma generar métodos de test más poderosos a través de un assembly adaptador de test.

El objetivo de este artículo fué mostrar la potencia de nuestros test al combinar Reflection con test Combinatoriales, para lograr un gran porcentaje de cobertura. Se dará un ejemplo de como lograr este objetivo en artículos más adelante.

No comments:

Post a Comment