# TTCN-3

TTCN-3 (notação de teste e controle de teste versão 3) é uma linguagem de teste fortemente tipada usada em testes de conformidade de sistemas de comunicação. TTCN-3 é escrito por ETSI na série ES 201 873 e padronizado por ITU-T na série Z.160. A TTCN-3 tem seus próprios tipos de dados e pode ser combinado com as definições de tipo ASN.1, IDL e XML.

## Organização padrão

O padrão ITU-T TTCN-3 faz parte da Série Z e é organizado em várias partes:
* Z.161 - Linguagem central que define a notação textual central.
* Z.162 - Formato de apresentação tabular (TFT) - Uma maneira de apresentar os testes em uma apresentação tabular.
* Z.163 - Formato de apresentação gráfica (GFT) - Uma forma de apresentar os testes graficamente com uma representação semelhante ao MSC.
* Z.164 - Semântica operacional - Define como o TTCN-3 é executado.
* Z.165 - TRI - Define a API fornecida e necessária com um testador.
* Z.166 - TCI - Define a API fornecida e necessária com um controlador de teste.
* Z.167 - ASN.1 - Define como usar os tipos de dados ASN.1 em um conjunto de testes TTCN-3.
* Z.168 - Mapeamento IDL para TTCN-3.
* Z.169 - Usando esquema XML com TTCN-3.

## Organização de linguagem
### Módulo

    O contêiner de nível superior em uma suíte de teste é um módulo. Geralmente é um arquivo.

### Componente

    O componente é uma entidade de execução. Um caso de teste ou uma função é executada em um componente.

### Porta

    Os componentes se comunicam entre si ou com o SUT por meio de portas mapeadas entre si.

### Caso de teste

    Um caso de teste é uma sequência de envios e recebimentos. Quando uma mensagem é enviada para o SUT (sistema em 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.

### Template

    Ao enviar ou receber informações os valores dos parâmetros são de suma importância. Devem ser definidos ao serem enviados e verificados ao serem recebidos. A construção do template visa definir os valores dos parâmetros no momento do envio ou verificar os valores dos parâmetros no momento do recebimento. Uma vez que os parâmetros podem ser bastante complexos, definir e verificar os valores não é uma questão de uma única linha. O modelo permite uma verificação complexa em uma única instrução para que o caso de teste permaneça legível.

### Veredicto

    O veredicto é o resultado da execução de um caso de teste. Possui 5 valores possíveis: Nenhum, aprovado, inconc, reprovado ou erro.

## Aplicações

A TTCN-3 foi usada para definir conjuntos de testes de conformidade para os protocolos SIP, WiMAX e DSRC padrão.
A OMA adotou em 2008 uma estratégia de usar o TTCN-3 para traduzir alguns dos casos de teste em uma especificação de teste habilitadora em uma representação executável.
O projeto AUTOSAR promoveu (em 2008) o uso do TTCN-3 na indústria automotiva.
O projeto 3GPP promoveu o uso do TTCN-3 na indústria móvel.

## Arquitetura

Durante a execução, a arquitetura é organizada da seguinte forma:
* TE: Executável TTCN-3 é a forma executável do conjunto de testes.
* TRI: TTCN-3 Runtime Interface é a interface entre o TE e o SUT. Está dividido em 2 partes:
** SA: Adaptador do sistema.
** PA: Adaptador de plataforma.
* TCI: TTCN-3 Control Interfaces é a interface para controlar a execução do teste. Está dividido em:
** TM: Gerenciamento de teste.
** TL: Registro de teste.
** CD: Codificação e decodificação.
** CH: Manuseio de componentes.

## Exemplo de código

Este é um exemplo TTCN-3 com seu equivalente gráfico em MSC (gráfico de sequência de mensagens).

## Veja também

* TTCN
* ETSI