El Test Template Framework ( TTF ) es un marco de pruebas basado en modelos (MBT) propuesto por Phil Stocks y David Carrington [ 1 ] para la realización de pruebas de software . Aunque el TTF fue concebido para ser independiente de la notación, la presentación original se realizó utilizando la notación formal Z. Es uno de los pocos marcos MBT que se acercan a las pruebas unitarias .
Introducción
El TTF es una propuesta específica de pruebas basadas en modelos (MBT). Considera los modelos como especificaciones Z. Cada operación dentro de la especificación se analiza para derivar o generar casos de prueba abstractos . Este análisis consta de los siguientes pasos:
- Defina el espacio de entrada (EI) de cada operación.
- Derive el espacio de entrada válido (VIS) a partir del IS de cada operación.
- Aplique una o más tácticas de prueba , [ 1 ] comenzando desde cada VIS , para construir un árbol de prueba para cada operación. Los árboles de prueba se llenan con nodos llamados clases de prueba , especificaciones de prueba o condiciones de prueba.
- Pode cada uno de los árboles de prueba resultantes .
- Encuentra uno o más casos de prueba abstractos en cada hoja de cada árbol de pruebas .
Una de las principales ventajas del TTF es que todos estos conceptos se expresan en la misma notación de la especificación, es decir, la notación Z. Por lo tanto, el ingeniero solo necesita conocer una notación para realizar el análisis, incluso para generar casos de prueba abstractos .
Conceptos importantes
En esta sección se describen los principales conceptos definidos por el TTF.
Espacio de entrada
DejarSea una operación Z.sean todas las variables de entrada y de estado (no primadas) a las que se hace referencia en, ysus tipos correspondientes. El espacio de entrada (EI) de, escrito, es el cuadro de esquema Z definido por.
Espacio de entrada válido
DejarSea una operación Z.ser la condición previa de. El espacio de entrada válido (VIS) de, escrito, es el cuadro de esquema Z definido por.
Clase de prueba
Dejarser una operación Z y dejarsea cualquier conjunción de predicados atómicos que dependan de una o más de las variables definidas en. Luego, el cuadro de esquema Zes una clase de prueba de. Tenga en cuenta que este esquema es equivalente aEsta observación puede generalizarse diciendo que sies una clase de prueba de, luego el cuadro de esquema Z definido pores también una clase de prueba deSegún esta definición, el VIS también es una clase de prueba.
Sies una clase de prueba de, entonces el predicadoenSe dice que es el predicado característico deose caracteriza por.
Las clases de prueba también se denominan objetivos de prueba, plantillas de prueba, especificaciones de prueba y condiciones de prueba.
Táctica de prueba
En el contexto de la TTF, una táctica de prueba [ 1 ] es un medio para particionar cualquier clase de prueba de cualquier operación. Sin embargo, algunas de las tácticas de prueba utilizadas en la práctica no siempre generan una partición de algunas clases de prueba.
Algunas de las tácticas de prueba propuestas originalmente para el TTF son las siguientes:
- Forma Normal Disyuntiva (FND). Al aplicar esta táctica, la operación se escribe en Forma Normal Disyuntiva y la clase de prueba se divide en tantas clases de prueba como términos tenga el predicado de la operación resultante. El predicado que se agrega a cada nueva clase de prueba es la precondición de uno de los términos del predicado de la operación.
- Particiones estándar (PE). Esta táctica utiliza una partición predefinida de algún operador matemático. [ 1 ] Por ejemplo, la siguiente es una buena partición para expresiones de la formadóndees uno de,y(véase Teoría de conjuntos ).
- Como puede observarse, las particiones estándar pueden variar en función de la cantidad de pruebas que el ingeniero desee realizar.
- Propagación de subdominios (SDP). Esta táctica se aplica a expresiones que contienen:
- Dos o más operadores matemáticos para los que ya existen particiones estándar definidas, o
- Operadores matemáticos que se definen en términos de otros operadores matemáticos.
- En cualquiera de estos casos, las particiones estándar de los operadores que aparecen en la expresión o en la definición de una compleja se combinan para producir una partición para la expresión. Si la táctica se aplica al segundo caso, la partición resultante puede considerarse como la partición estándar para ese operador. Stocks y Carrington ilustran esta situación con, dóndesignifica anti-restricción de dominio , al proporcionar particiones estándar parayy propagándolos para calcular una partición para.
- Mutación de especificación (SM). El primer paso de esta táctica consiste en generar una versión modificada de la operación Z. Una versión modificada de una operación Z es similar en concepto a una versión modificada de un programa , es decir, es una versión modificada de la operación. El ingeniero introduce la modificación con la intención de descubrir un error en la implementación. La versión modificada debe ser la especificación que el ingeniero supone que el programador ha implementado. A continuación, el ingeniero debe calcular el subconjunto del VIS que produce resultados diferentes en ambas especificaciones. El predicado de este conjunto se utiliza para derivar una nueva clase de prueba.
Otras tácticas de prueba que también se pueden utilizar son las siguientes:
- En la Extensión de Conjuntos (ISE). Se aplica a predicados de la forma. En este caso, genera n clases de prueba tales que un predicado de la formase añade a cada uno de ellos.
- Conjunto de pruebas obligatorio (MTS). Esta táctica asocia un conjunto de valores constantes a una variable VIS y genera tantas clases de prueba como elementos haya en el conjunto. Cada clase de prueba se caracteriza por un predicado de la formadonde var es el nombre de la variable y val es uno de los valores del conjunto.
- Intervalos enteros (IS). Esta táctica se aplica únicamente a las variables de VIS de tipo(o su "subtipo")). Consiste en asociar un rango a una variable y derivar clases de prueba comparando la variable con los límites del rango de alguna manera. Más formalmente, sea n una variable de tipoy dejarsea el rango asociado. Luego, la táctica genera las clases de prueba caracterizadas por los siguientes predicados:,,,,. La táctica se generaliza fácilmente a una lista de números enteros .
- Tipo suma (ST). Esta táctica genera tantas clases de prueba como elementos se pueden construir en un tipo suma aplicando todos los constructores del tipo. En otras palabras, si un modelo define el tipo COLOUR ::= red | blue | green y alguna operación usa c de tipo COLOUR , entonces al aplicar esta táctica cada clase de prueba se dividirá en tres nuevas clases de prueba: una en la que c es igual a red , otra en la que c es igual a blue y la tercera en la que c es igual a green .
- Subconjunto propio de extensión de conjunto (PSSE). Esta táctica utiliza el mismo concepto de ISE, pero aplicado a inclusiones de conjuntos. PSSE ayuda a probar operaciones que incluyen predicados comoCuando se aplica PSSE, generaclases de prueba donde un predicado de la formacony, se añade a cada clase.está excluido deporque expr es un subconjunto propio de.
- Cardinalidad de conjunto (SC). Esta táctica se aplica a variables de tipo conjunto. El usuario selecciona una de dichas variables () y un número entero positivo (). La táctica genera una especificación de prueba caracterizada porpara cada.
Árbol de prueba
La aplicación de una táctica de prueba al VIS genera algunas clases de prueba. Si algunas de estas clases de prueba se subdividen aplicando una o más tácticas de prueba, se obtiene un nuevo conjunto de clases de prueba. Este proceso puede continuar aplicando tácticas de prueba a las clases de prueba generadas hasta el momento. Evidentemente, el resultado de este proceso puede representarse como un árbol con el VIS como nodo raíz, las clases de prueba generadas por la primera táctica de prueba como sus hijos, y así sucesivamente. Además, Stocks y Carrington proponen utilizar la notación Z para construir el árbol, como se muestra a continuación.
Prueba de poda de árboles
Las tácticas de prueba en TTF tienden a generar clases de prueba insatisfactorias. Estas clases deben eliminarse del árbol de pruebas porque representan combinaciones imposibles de valores de entrada; es decir, no se puede derivar ningún caso de prueba abstracto a partir de ellas.
Caso de prueba abstracto
Un caso de prueba abstracto es un elemento que pertenece a una clase de prueba . El TTF indica que los casos de prueba abstractos deben derivarse solo de las hojas del árbol de pruebas . Los casos de prueba abstractos también pueden escribirse como cajas de esquema Z.sea alguna operación, dejemosser el VIS de, dejarsean todas las variables declaradas en, dejarser una clase de prueba (hoja) del árbol de prueba asociado a, dejarsean los predicados característicos de cada clase de prueba dearriba a(siguiendo los bordes desde el hijo hasta el padre ), y dejarservalores constantes que satisfacen. Luego, un caso de prueba abstracto dees el cuadro de esquema Z definido por.
Véase también
Referencias
- Stocks, Phil; Carrington, David (1996), "Un marco para pruebas basadas en especificaciones", IEEE Transactions on Software Engineering , 22 (11): 777–793 , doi : 10.1109/32.553698.
- Utting, Mark; Legeard, Bruno (2007), Pruebas prácticas basadas en modelos: un enfoque de herramientas (1.ª ed.), Morgan Kaufmann , ISBN 978-0-12-372501-1.
- Stocks, Phil (1993), Aplicación de métodos formales a las pruebas de software , Departamento de Ciencias de la Computación, Universidad de Queensland, tesis doctoral.
Notas
- 1 2 3 4 Stocks y Carrington utilizan el término estrategias de prueba en ( Stocks & Carrington 1996 ) .
- Introducciones relacionadas con la informática en 1996
- Pruebas de software
- notación Z