3.2 Conceptos Generales del Método de Pruebas
3.2.1 Conformidad
Conformidad significa que una implementación se ajusta a su especificación. Para precisar el concepto de conformidad, se elaboran modelos formales de las implementaciones y así la conformidad puede definirse mediante relaciones entre los modelos de las implementaciones y la especificación, por la satisfacción de requisitos por parte de los modelos de la implementación, o por ambas cosas a la vez. La noción convencional de conformidad que se usa, por ejemplo en telecomunicaciones, de conformidad de una implementación con un protocolo determinado no es la empleada por el método propuesto en la Tesis Doctoral. Se asume que la especificación no es un estándar único sino que puede ser un conjunto de requisitos definido a partir de por ejemplo, una norma técnica de carácter general, documentos diversos del cliente, etc. En el trasfondo de esta decisión están la experiencia profesional del autor de la Tesis Doctoral y el ejemplo escogido para validar el método propuesto, que es un sistema de control ferroviario, cuyos requisitos se definen a medida del proyecto concreto entre el cliente y la empresa adjudicataria basándose en los reglamentos de circulación ferroviarios generales y otros estándares relativos a calidad, seguridad, etc.
Una especificación (formal) prescribe el comportamiento de un sistema usando una técnica de descripción formal (FDT). Si la técnica de descripción formal permite el uso de parámetros, la especificación con parámetros formales se caracteriza como especificación parametrizada. Si los parámetros formales se instancian con valores concretos o no existen, la especificación se denomina
especificación instanciada. En las especificaciones pueden existir opciones de implementación, cuando la implementación puede tener determinadas características o no sin dejar de ser conforme con la especificación. En una Línea de Producto Software siempre hay opciones de implementación, puesto que existen diferentes variantes respecto de la especificación genérica, que son cada uno de los productos.
Una implementación es un conjunto compuesto por software y hardware que se comunica con su entorno y sus usuarios por medio unas determinadas interfaces. Una implementación es por tanto algo concreto y tangible, mientras que la especificación es algo abstracto. Por eso para poder relacionar la especificación con la implementación se precisa de una abstracción denominada modelo. Para una misma especificación puede haber diferentes modelos. En el caso del método propuesto en la Tesis Doctoral los modelos van a estar construidos con diagramas de estados jerárquicos (statecharts). La conformidad entre una especificación y la implementación, denominada también implementación bajo prueba (en inglés IUT, implementation under testing), existe cuando la implementación es correcta respecto de la especificación. La conformidad se divide en dos partes:
Conformidad estática a nivel de características u opciones de implementación, si la especificación parametrizada está instanciada correctamente, es decir la combinación de opciones de implementación
de la implementación es válida. En el caso de una Línea de Producto Software, esta conformidad existe cuando las opciones de implementación elegidas resultan en un producto determinado e identificable.
Conformidad dinámica, consistente en que el comportamiento observable de la implementación es acorde con lo descrito por la especificación. Esta conformidad se caracteriza mediante la relación de implementación entre el modelo de la implementación y la especificación [ITU97], que en la Figura 3.2 se denomina imp,
imp⊆ MODELOS x ESPECIFICACIONES
y el conjunto Ms de todos los posibles modelos de una especificación s se describe como
Ms ={m ∈ MODELOS | m imp s}
Por tanto, una implementación IUT es conforme dinámicamente respecto de una especificación s si su modelo asociado Miut verifica que Miutimp s.
Es decir, una especificación puede tener múltiples implementaciones conformes, y múltiples modelos conformes asociados. Se está postulando que siempre se puede elaborar un modelo válido de la implementación para probarla, lo que [ITU97] denomina test assumption (postulado de prueba).
ESPECIFICACIONES MODELOS IMPLEMENTACIONES Miut IUT s implementa imp modelada por Is Ms
Figura 3.2 Relación entre Especificación, Modelo e Implementación
En el caso del método propuesto por la Tesis Doctoral el postulado de prueba o test assumption
consiste en que se modela la especificación de requisitos mediante un conjunto de diagramas de estados jerárquicos y escenarios, cada uno de los cuales cubre una parte de los requisitos que constituyen la especificación. Si la implementación se comporta de acuerdo con lo descrito mediante las máquinas de estados, se concluye que la implementación bajo prueba es conforme desde el punto de vista dinámico. Para verificar la conformidad dinámica se ha escogido el algoritmo de prueba de máquina de estados denominado estrategia N+ en [Bin00] que se explica con más detalle en la parte de Estado de la Ciencia y en la parte de herramientas asociadas al método de la Tesis Doctoral.
[ITU97] dice que en general no es posible una certeza plena en cuanto a la conformidad debido por ejemplo, a posibles comportamientos no deterministas de la aplicación, restricciones en las posibilidades de control y observación de la implementación y el hecho práctico de que sólo es posible
Un conjunto de pruebas puede ser según [ITU97] exhaustivo (toda implementación que lo pasa es conforme), robusto (toda implementación que no lo pasa es no conforme) o completo (exhaustivo y robusto a la vez). En la práctica los conjuntos de pruebas exhaustivos finitos no existen. El método de pruebas propuesto no busca conseguir conjuntos de pruebas de estas características, sino que busca optimizar en la práctica de la forma más estructurada posible el tiempo y los recursos disponibles para las pruebas.