# TPT (software)

TPT (Time Partition Testing) is een methode en een software-tool ontwikkeld door het bedrijf PikeTec om geautomatiseerde software van continue en reactieve ingebedde systemen te testen of te verifiëren. Vooral de automobielindustrie maakt er gebruik van. In TPT worden testcases grafisch gemodelleerd in plaats van het schrijven van testscripts. Deze grafisch gemodelleerde testcases kunnen voor het testen van controlesystemen en systemen met continu gedrag gebruikt worden.

## Geschiedenis

Het idee voor TPT ontstond in het kader van de automobielontwikkeling door Daimler en Mercedes-Benz. De eerste versies van de testtool werden in 2000 ingezet. Ondertussen werken ook andere automobielbedrijven met TPT, bijvoorbeeld General Motors, Volkswagen, Audi, Porsche, BMW, en ook toeleveranciers uit de automobielindustrie zoals Bosch, Hella, TRW en Continental. Daimler heeft meerdere jaren de ontwikkeling van TPT gecoördineerd. Sinds 2007 wordt TPT ontwikkelt en verkocht door het Berlijnse bedrijf PikeTec GmbH.

## Onderdelen

TPT heeft volgende onderdelen:
* modellering van testcases (handmatig of geautomatiseerd)
* uitvoering van tests in verschillende testomgevingen zoals MATLAB/Simulink, ASCET, TargetLink, HiL (Hardware-in-the-Loop), en C-Code, of via communicatiestandaards zoals CAN (Controller Area Network) en LIN (Local Interconnect Network) (geautomatiseerd)
* testevalutie (geautomatiseerd)
* testdocumentatie (geautomatiseerd)
* testadministratie
* traceren van requirements in verbinding met andere Requirements Management Tools

## Reactieve tests

Een test geldt als reactief als hij tijdens het uitvoeren in een testomgeving op het gedrag van het systeem reageert. Zo kan de reactieve test op het moment dat een gespecifieerde toestand wordt bereikt zijn gedrag veranderen, bijvoorbeeld meer testrelevante systeemtoestanden stimuleren. De reactiviteit maakt het samen met de realtime verwerking mogelijk dynamische systemen in discrete tijd te programmeren. Zo kunnen bijvoorbeeld filter functies en regelalgoritmes in TPT worden geïmplementeerd.

## Grafische testmodellering

Testcases worden in TPT met speciale state machines of met toestandsdiagrammen grafisch gemodelleerd. De grafische testmodellering is een voor de hand liggende keuze wat ingebedde systemen betreft omdat hier testcases altijd uit opeenvolgende stappen opgebouwd zijn. Het voordeel van de grafische benadering is dat de testcases intuïtief leesbaar zijn, zelfs als ze zeer complex zijn.

## Functies

Naast het grafische modelleren is het mogelijk functies te definiëren die als client of server ageren. Clientfuncties worden door TPT in het te testende systeem opgeroepen; serverfuncties kunnen in TPT als geïmplementeerde stub-functies vanuit het te testende systeem of ook direct worden opgeroepen.

## Systematische testcases

Middels systematische testcases kunnen zwakpunten in het te testende systeem ontdekt worden. De meeste testcases lijken op elkaar en hebben amper, maar juist essentiële details die schelen. Daarom worden in TPT gezamenlijke structuren tezamen gemodelleerd en gebruikt. Redundancies worden zo vermeden en verschillen tussen de testgevallen zijn beter te herkennen.

## Automatische testcasegeneratie

TPT biedt verschillende mogelijkheden om testcases automatisch te genereren:
* testcases op basis van equivalentieklassen
* testcases door analyse van MATLAB/Simulink- en TargetLinkmodellen
* testcases door het creëren van sequenties op de basis van toestands- en transitievarianten van het testmodel
* testcases door het opnemen van interacties van gebruikers met het te testende systeem via een grafisch gebruikersinterface (Dashboard)

## Testuitvoering

Testcases worden in TPT met behulp van een zogenaamd virtuele machine (TPT-VM) aan de testomgeving overgebracht, dit kan ook in realtime gebeuren. Door het gebruik van een virtuele machine is TPT flexibel wat betreft testomgevingen. Zo kunnen tests gecreëerd worden voor Model-in-the-Loop (MiL), Software-in-the-Loop (SiL), Processor-in-the-Loop (PiL) en Hardware-in-the-Loop (HiL). Uitgevoerd worden dergelijke testcases in verschillende testomgevingen of middels applicaties zoals MATLAB/Simulink, TargetLink, ASCET, C-programmen, CAN, of AUTOSAR-componenties, INCA, of LABCAR. Om meetgrootheden van electronic control units (ECU) tijdens de testuitvoering te controleren, is een speciale application programming interface (API) nodig, i.e. de MCD-3-API van ASAM. Met behulp van die API kunnen ook tools zoals INCA en CANape gebruikt worden.

## Geprogrammeerde testevaluatie

Testresultaten moeten worden geëvalueerd; dat betekent dat qualitatieve stellingen zoals "waar", "verkeerd" of "onduidelijk" alsook afwijkingen van de nominale waarde moeten worden geprotocolleerd.
Naast het manuele evalueren en het vergelijken van testresultaten met referentiegegevens (regressietest) kunnen met TPT ook testresultaten automatisch op basis van zelfgekozen evaluatiegegevens worden beoordeeld. Het tijdelijke en functionale gedrag van het te testen systeem kan dus niet alleen quantitatief maar ook qualitatief worden beoordeeld. Visuele inspecties na elke testuitvoering worden zo onnodig.
Er zijn grafische gebruikersinterfaces voor de gangbaare en eenvoudige testevaluaties zoals:
* controle van de drempelwaarden van signalen (Min/Max-vergelijking)
* fouttolerante vergelijking van signalen met referentiegegevens
* controle van discrete signaalsequenties
* controle op basis van tijdelijke triggercondities
* integratie van MATLAB-scripts
Diepergaande evaluaties kunnen met een programmeertaal die op Python gebaseerd is, worden toegepast. Meetresultaten van andere bronnen kunnen tevens worden geevalueerd. Meetgegevens van model-interne TargetLink- of Simulinksignalen, alsook gegevens van andere meetinstrumenten kunnen automatisch ter testevaluatie worden gebruikt.

## Testmanagement

TPT is geen testmanagement tool maar ondersteunt wel sommige aspecten van het testmanagement zoals:
* modelleren van testcases
* plannen van tests
* documenteren van tests
* voortgangsmeldingen wat betreft software releases
* traceerbaarheid van requirements, testcases, testuitvoeringen en testresultaten

## Traceren van requirements

Internationale standaarden voor veiligheidsgerelateerde systemen, bijvoorbeeld IEC 61508, DO-178B, of ISO 26262 vergen dat requirements en tests getraceerd worden. Met TPT kunnen requirements onder uit externe Requirements Management Tools zoals Rational DOORS geïmporteerd, aan testcases gekoppeld en de gegevens gesynchroniseerd worden. Analyses van de dekkingsgraad en traceerbaarheid zijn mogelijk.