# TPT (software)

TPT (Time Partition Testing) es una metodología de pruebas sistemática basada en tests de software automáticos. TPT es una herramienta especializada para probar y validar sistemas embebidos, cuyas entradas y salidas puedan ser representadas mediante señales. TPT es un método dedicado para sistemas de comportamiento continuo. La mayoría de los sistemas de control actuales pertenecen a esta categoría. El hecho más sorprendente de los sistemas de control de hoy en día es que interactúan de manera estrecha con un entorno real. Para poder reaccionar acorde a su entorno, las herramientas de control realizan una observación continua sobre el mismo.
De este modo, el sistema trabaja en un ciclo iterativo con su entorno y está sujeto a restricciones temporales. Para probar este tipo de sistemas, es necesario estimularlos para así poder comprobar su funcionamiento en relación con el tiempo. Los métodos tradiciones de tests funcionales emplean scripts. TPT funciona con tests basados en modelos.
TPT combina una técnica de modelado gráfico y sistemático para tests con una ejecución totalmente automática de los mismos en diferentes entornos. Además, realiza una evaluación automática de la prueba.
TPT cubre los siguientes tipos de pruebas:
* Modelado de pruebas.
* Ejecución de pruebas en distintas plataformas, como MATLAB/Simulink, ASCET, TargetLInk o Código C (Automatizado).
* Permite su uso bajo estándares de comunicación como CAN, LIN o EtherCAT.
* Análisis de los resultados de la pruebas (Automatizado).
* Documentación de la pruebas (Automatizado).
* Trazabilidad de los requisitos de Telelogic DOORS y de los diferentes casos de prueba.

## Casos de pruebas gráficos

El proceso exacto para cada prueba se modela gráficamente con la ayuda de máquinas especiales de estados. El uso de texto natural como un elemento gráfico ayuda a la comprensión, facilitando el uso de TPT a personal no programador. Técnicas sustanciales, como el uso de máquinas de estado paralelas y jerárquicas, ramificación condicional, descripción y medida de señales, permiten un modelado gráfico de manera sencilla e intuitíva, incluso en casos de alta complejidad.

### Modelado con lista de pasos

Esta técnica se emplea cuando el caso a modelar implica un número predefinido de pasos, ejecutados de manera secuencial y por lo tanto, ordenados cronológicamente. Por ejemplo, la siguiente simulación de una maniobra de frenado de emergencia:
Arranque motor -> Acelerar hasta 50 km/h -> Frenada de emergencia con volante a la izquierda -> Detener el vehículo -> Parar el motor
TPT dispone de numerosas secuencias, como configurar un canal, señal rampa, configurar parámetros, comparar, espera y otras secuencias en función del tiempo (if, else, if else value, etc). Estas secuencias se pueden combinar con otras técnicas de modelado disponibles en TPT. También, pasos de prueba en paralelo son posibles .

### Modelado con definición directa

Además del modelado con lista de pasos, se puede usar otro método llamado definición directa (Direct Definition). Cada caso definido con este método consiste en una lista ordenada de ecuaciones o definiciones de señal, una para cada canal local o estimulación. Las señales pueden ser definidas en función del tiempo, en función a otras señales o a un histórico. Es posible también importar señales o crearlas manualmente mediante un editor de señales incluido en el programa. O utilizar un asistente para la creación de dichas señales. Además, las señales se pueden crear usando un lenguaje similar a C, lo que hace la tarea más intuitiva.

### Casos de pruebas sistemáticos

TPT fue desarrollado específicamente para la prueba de sistemas embebidos de comportamiento continuo y reactivo. TPT puede ser visto como la extensión del método de clasificación de árbol en términos de comportamiento temporal. Debido a su enfoque sistemático en la generación de casos de prueba, TPT es capaz de hacer un seguimiento de sistemas de alta complejidad, cuya prueba exhaustiva requiere de una gran cantidad de casos de prueba. De hecho, hace posible encontrar fallos en un sistema bajo prueba, con una cantidad ideal de casos de prueba.
La idea que subyace bajo la sistemática de TPT es la separación de similitudes y diferencias entre los casos de prueba: la mayoría de estos casos de prueba son muy similares en sus procesos estructurales y "sólo" se pueden diferenciar mediante unos pocos pero cruciales detalles. TPT saca partido de este hecho. Así, por otro lado, se evitan redundancias. Se puede observar en que se diferencia un caso de otro, es decir, cual es el objeto exacto al que someten a prueba. Comparar los casos de esta manera permite concentrar la atención en lo esencial, marcando la singularidad de cada prueba.
La estructura jerárquica de los casos de prueba permite el desglose y la simplificación de pruebas complejas en subproblemas más sencillos, lo cual aporta claridad, y por ende, un aumento en la calidad del proceso de prueba.
Estas técnicas de modelado ayudan al usuario que realiza las pruebas a encontrar los casos relevantes, evitando redundancias, aun trabajando con un gran número de casos diferentes.

### Tests reactivos

Con TPT, cada caso de prueba puede reaccionar específicamente al comportamiento del sistema en tiempo real durante el proceso de la prueba. Por ejemplo, se puede examinar que ocurre en un momento o estado concreto del sistema, o cuando una señal de un sensor excede un cierto valor.
Si se quiere simular un fallo en un sensor de un control de un motor, cuando por ejemplo, se sobrepasa la velocidad de ralentí, debe ser posible reaccionar ante el evento "exceso de velocidad en ralentí motor", detallado específicamente durante la prueba.

## Ejecución de la prueba

En TPT, los casos de prueba se construyen independientemente de su ejecución. Estos casos pueden ser ejecutados en tiempo real en casi cualquier entorno, gracias al concepto de máquina virtual (VM o Virtual Machine). Algunos ejemplos son MATLAB/Simulink, TargetLink, ASCET, C-Code, CAN, LIN, AUTOSAR, LABCAR, INCA, Software-in-the-Loop (SiL) y Hardware-in-the-loop (HiL). De este modo, TPT es una herramienta integrada que puede ser utilizada en todas las fases de un desarrollo, como pruebas de unidades, pruebas de integración, prueba de sistemas o pruebas de regresión.
Si se necesita comprobar la cobertura del test (en inglés code coverage), TPT puede interactuar con herramientas a tal efecto, como por ejemplo en:Testwell CTC++ para código C.

### Máquina Virtual TPT

Los casos modelados en TPT se compilan, y durante la ejecución de la prueba son interpretados por la máquina virtual. Ésta máquina virtual es la misma para todas las plataformas y pruebas. Sólo un adaptador de plataforma realiza el mapeo de la señal para la aplicación individual. La máquina virtual de TPT se implementa en ANSI C y emplea una memoria de solo unos pocos kilobytes. Se puede ejecutar sin asignación de memoria dinámica, lo cual permite ser ejecutada en entornos limitados y con pocos recursos. También es capaz de procesar las pruebas en tiempo real con respuesta de comportamiento definida. Los tiempos de respuesta son normalmente de micro segundos – dependiendo de la complejidad del test y de los recursos de hardware.

## Evaluación programada de las pruebas

El comportamiento esperado del sistema para los casos de pruebas individuales debería ser probado automáticamente para asegurar un proceso eficiente. TPT ofrece la posibilidad de calcular las propiedades para el comportamiento esperado de manera en línea (durante la ejecución de la prueba) y offline (después de la ejecución de la prueba). Mientras que la evaluación en línea emplea las mismas técnicas de modelado para diseñar las pruebas, la evaluación offline ofrece sin duda posibilidades de mayor alcance para poder realizar evaluaciones más complejas. Esto incluye, entre otros, operaciones como comparaciones con datos de referencias externas, monitorización de valores límite, filtros de señal, análisis de estados de secuencias y condiciones temporales.
La evaluación offline está basada en lenguaje Python, que ha sido ampliado con elementos específicos de sintaxis y con una librería, para poder conseguir un mayor soporte a la evaluación de las pruebas. El uso de un lenguaje script como Python asegura un alto grado de flexibilidad en la evaluación de las pruebas, posibilitando el acceso a datos de referencia, comunicación con otras herramientas, además del desarrollo de librerías específicas propias. Junto a la evaluación basada en lenguaje script, la interfaz del usuario permite el acceso de manera sencilla a la evaluación de la prueba, lo que ayuda al personal no programador a evitar el lenguaje script.
La medida de datos desde otras fuentes como TargetLink, Simulink o MCD-3 pueden ser evaluadas de manera automática. Estos datos pueden ser independientes de la ejecución de la prueba.

## Documentación de la prueba

La documentación de las pruebas llevadas a cabo con TPT se realiza conforme a la norma IEEE 829. Una vez ejecutada la prueba, se presenta el resultado de la evaluación en un informe en formatos HTML, MHTML y PDF, en el cual no sólo figura información del tipo “éxito/fallo/desconocido”, sino que también muestra parámetros característicos o detalle de señales observados durante la ejecución de la prueba.
El análisis de las pruebas devuelve información a cerca del tiempo y del comportamiento chequeado, que puede ser colocada en los informes. El contenido de los informes así como la estructura del documento pueden ser configurados libremente con la ayuda de un editor de plantilla.

## Requerimientos de trazabilidad

Algunos estándares de la industria, como IEC 61508, DO-178B, EN 50128 o ISO 26262 exigen la trazabilidad de las necesidades y de las pruebas. TPT ofrece una interfaz para este tipo de herramientas, como Telelogic DOORS, con el fin de realizar estas actividades.

## Aplicación de TPT

TPT es un método de pruebas basado en modelos y su aplicación se realiza principalmente en el desarrollo de proyectos de automoción. Fue originalmente desarrollada en Daimler AG para su uso propio. La primera versión de la herramienta se usó en el 2000. Daimler coordinó el desarrollo de la herramienta durante años. Ahora, Piketec GmbH continúa con el desarrollo y mantenimiento de TPT. Hoy en día TPT lo usan muchos otros fabricantes y proveedores del sector de la automoción, como Robert Bosch GmbH, Continental AG, Hella, BMW, Audi o VW.

## Enlaces

* TPT