A TTCN-3 (Testing and Test Control Notation version 3) é uma linguagem de teste fortemente tipada usada em testes de conformidade de sistemas de comunicação. A TTCN-3 é desenvolvida pelo ETSI na série ES 201 873, e padronizada pela ITU-T na Série Z.160.

A TTCN-3 possui seus próprios tipos de dados e pode ser combinada com definições de tipos ASN.1, IDL e XML.

Organização da norma A norma ITU-T TTCN-3 faz parte da Série Z e está organizada em várias partes: Z.161 – Linguagem Principal (Core Language): define a notação textual principal Z.162 – Formato de apresentação tabular (TFT): uma forma de apresentar testes em formato tabular Z.163 – Formato de apresentação gráfica (GFT): uma forma de apresentar testes graficamente com uma representação semelhante ao MSC Z.164 – Semântica operacional: define como a TTCN-3 é executada Z.165 – TRI: define a API fornecida e exigida por um testador Z.166 – TCI: define a API fornecida e exigida por um controlador de teste Z.167 – ASN.1: define como usar tipos de dados ASN.1 em uma suíte de testes TTCN-3 Z.168 – Mapeamento de IDL para TTCN-3 Z.169 – Uso de XML Schema com TTCN-3

Organização da linguagem Módulo O contêiner de nível superior em uma suíte de teste é um módulo. Ele geralmente é mapeado para um único arquivo. Componente Uma entidade de execução. Um caso de teste ou uma função é executado em um componente. Porta Os componentes se comunicam entre si ou com o sistema sob teste por meio de portas que são mapeadas umas para as outras. Caso de teste (Test case) Uma sequência de envios e recebimentos. Quando uma mensagem é enviada ao SUT (do inglês Sistema sob teste), várias respostas possíveis podem ser recebidas. Alternativa Como um caso de teste é uma sequência de estímulos seguida por um conjunto de respostas possíveis, a notação inclui alternativas. É uma forma compacta de listar todas as alternativas possíveis em um cenário. Modelo (Template) Define valores de parâmetros ao enviar ou verifica valores de parâmetros ao receber. O construto de modelo permite verificações complexas em uma única instrução para manter o caso de teste legível. Veredicto O resultado da execução de um caso de teste. Possui cinco valores possíveis: , , , ou .

Aplicações A TTCN-3 tem sido usada para definir suítes de testes de conformidade para protocolos padrão como SIP, WiMAX e DSRC.

A Open Mobile Alliance adotou, em 2008, a estratégia de usar TTCN-3 para traduzir casos de teste das especificações de teste de ativadores (enabler test specifications) em uma representação executável.

O projeto AUTOSAR promoveu o uso de TTCN-3 no setor automotivo.

O projeto 3GPP promoveu o uso de TTCN-3 na indústria de telecomunicações móveis.

Arquitetura Durante a execução, a arquitetura do sistema de teste é organizada da seguinte forma: TE (TTCN-3 Executable): A forma executável da suíte de teste. TRI (TTCN-3 Runtime Interface): A interface entre o TE e o SUT. É dividida em duas partes: SA: Adaptador de Sistema (System Adaptor) PA: Adaptador de Plataforma (Platform Adaptor) TCI (TTCN-3 Control Interfaces): A interface para controlar a execução do teste. É dividida em: TM: Gerenciamento de Teste (Test Management) TL: Registro de Teste (Test Logging) CD: Codificação e Decodificação (Coding and Decoding) CH: Manipulação de Componentes (Component Handling)

Exemplo de código A seguir está um exemplo de TTCN-3 acompanhado por uma representação gráfica do cenário como um diagrama de sequência de mensagens (MSC).

legenda|Representação em MSC de um cenário básico em TTCN-3.|alt=Diagrama de sequência de mensagens mostrando trocas de mensagens entre componentes

module TestSystem {

// Define um subtipo do tipo inteiro type integer myNewType (0..50)

// Declara o tipo de estrutura Request com 2 campos type record Request { myNewType param1, charstring param2 }

// Declara o tipo de estrutura Answer com um campo type record Answer { myNewType param1 }

// Declara uma porta de comunicação baseada em mensagens type port cEnv_type message { out Request; in Answer; }

// Declara o componente no qual o caso de teste será executado type component sSystem { port cEnv_type cEnv; }

// Os modelos definem valores de parâmetros de saída // e verificam os valores de parâmetros de entrada template Request Good_Req := {param1 := 42, param2 := "hello !" }; template Answer All_is_OK := {param1 := 0};

// Define o testcase1 que será executado no componente sSystem testcase testcase1() runs on sSystem { // Envia a mensagem Request com (42, "hello !") como parâmetros cEnv.send(Good_Req); // Uma alternativa para as 2 respostas possíveis alt

// Recebemos Answer com 0 como parâmetro? []cEnv.receive(All_is_OK)

// Veredicto: Aprovado (pass)! setverdict(pass)

// Ou recebemos outra coisa? []cEnv.receive

// Veredicto: Reprovado (fail) setverdict(fail)

// A parte de controle encadeia a execução dos casos de teste automaticamente control { var verdicttype verdict1; verdict1 := execute(testcase1());

Ver também ASN.1 ETSI TTCN

Ligações externas (em inglês) ETSI TTCN-3 User Conference (em inglês) Vídeo de introdução à TTCN-3 no YouTube (em inglês) Cartão de referência rápida da TTCN-3 (em inglês) Lista de ferramentas TTCN-3 (em inglês) Exportação de modelos Use Case Map (ITU-T Z.151) para TTCN-3 (ITU-T Z.161) (em inglês) História da TTCN na ITU-T (em inglês)

Categoria:Linguagens de programação Categoria:Teste de software