Testar o que acontece quando as chamadas de função do Software sob teste são feitas, é essencial para todos os níveis de teste dinâmico. O controlo da interface de chamadas Cantata gera automaticamente a estrutura de teste necessária para essas interfaces, facilitando:

  • Simular a interface de chamada entre o Software sob teste e os objetos chamados (incluídos ou não na “build”)
  • Intercetar a interface de chamada entre o Software sob teste e os objetos chamados incluídos na compilação
  • Definir e verificar dados (acessíveis ao Software sob teste) quando ocorrem chamadas de função
  • Configurar e verificar os valores de retorno ao Software sob teste ou aumentar as exceções
  • Injetar erros no Software sob test
  • Verificar a ordem das chamadas feitas
  • Controlar cada instância de uma chamada de função – para que diferentes comportamentos possam ser definidos / verificados para cada ocorrência.

O encapsulamento (wrapping) automático para intercetar (não apenas simular) chamadas é exclusivo do Cantata, oferecendo um controlo de chamadas inigualável para isolamento de unidade e teste de integração.

O que é o Cantata Call Control?

Os controlos da interface de chamadas da Cantata são gerados automaticamente para todas as chamadas de função feitas pelo Software sob teste, por ex. para outras funções no mesmo ou em outros arquivos, código de objeto de terceiros, biblioteca do sistema operativo / compilador ou firmware / hardware de destino. Os utilizadores têm controlo total sobre o estilo apropriado do controle de chamadas Cantata a ser gerado para cada chamada feita de cada função:

  • Stubs para simular chamadas para objetos não incluídos na compilação
  • Isolamento para simular chamadas específicas para objetos incluídos na compilação.
  • Wrappers para simular ou intercetar chamadas específicas para objetos incluídos na compilação.
  • Dependency Resolver para remover automaticamente referências de links indefinidos

Cada tipo de controlo de chamada Cantata é escrito em C/C ++ conforme apropriado, fornecendo um ponto de controlo de teste no fluxo de execução para configurar e verificar dados disponíveis para o Software sob teste (por exemplo, dados globais ou registros de hardware) e parâmetros / retornos. Como cada tipo de controlo também pode ter várias instâncias, diferentes comportamentos e ordens de chamadas podem ser definidos ou verificados sempre que uma chamada é feita em cada cenário de caso de teste.

O isolamento de C ++ para testes a partir do restante base de código pode resultar num efeito de cadeia longa de referências indefinidas no momento da “linkagem” ao construir executáveis de teste. O “Cantata Dependency Resolver” determina as referências ausentes e adiciona automaticamente o código necessário para resolver todas as referências indefinidas (métodos ou variáveis).

Os vários controlos de chamadas Cantata oferecem aos testadores a flexibilidade de escolher simulação ou intercetação, conforme necessário, para conduzir e verificar o código.

O que é o Cantata Wrapping?

Wrapping é uma instrumentação de acessibilidade automática exclusiva que intercepta ou simula chamadas de função. Ele vai muito além das simulações tradicionais (por exemplo, stubs, mocks, fakes etc), fornecendo mais flexibilidade para testar interfaces quando objetos são integrados juntos.

Os Wrappers gerados automaticamente intercetam chamadas antes da chamada (BEFORE Wrappers), após a chamada (AFTER Wrappers), ou podem substituir a chamada original por uma simulação (REPLACE Wrappers).

Quando um script de teste Cantata é usado, as seções BEFORE, AFTER e REPLACE do Wrapper são gravadas no script de teste. O encapsulamento também pode ser usado fora de um script de teste Cantata para fornecer controlo de interface de chamada com outros drivers de teste.

“Very useful, especially for checking the messages sent from one process to another, and also for simulating responses from external processes to the process under test.”

Dave Parker, Software Engineer, Marconi Communications

“Without this [Cantata wrapping], difficult external conditions not directly influenced by our code, such as memory allocation errors, may have been difficult to simulate.”

Simon Prior, Primary Reactor Protection System project, OSyS.

“Very useful, especially for checking the messages sent from one process to another, and also for simulating responses from external processes to the process under test.”

Simon Prior, Primary Reactor Protection System project, OSyS.

O que Wrapping ajuda com?

INTERCEPÇÃO E SIMULAÇÃO DE CHAMADAS EM TESTE UNITÁRIOS

O teste unitário verifica uma ou mais funções sem o resto do sistema. Os controlos das chamadas tradicionais (por exemplo, “stubs”, “mocks”, “fake dummies”) apenas simulam objetos chamados excluídos da unidade de software compilada sob teste.

O Cantata Wrapping permite o controlo de chamadas de função específicas dentro e fora desse limite de compilação. Chamadas específicas para funções podem ser controladas com:

  • Encapsulamento de simulação para substituir a chamada
  • Encapsulamento de interceção para definir / verificar a interface antes e depois da chamada

Cada Wrapper também permite a configuração / verificação de todos os dados acessíveis quando as chamadas são feitas.

O encapsulamento oferece controlo automatizado dentro do limite de compilação (por exemplo, funções que chamam outras funções no mesmo arquivo ou classe) e também maior escolha do testador na definição do que está incluído no limite de teste unitário para isolamento ou testes unitários em cluster.

INTERCEPÇÃO E SIMULAÇÃO DE CHAMADAS NO TESTE DE INTEGRAÇÃO E SISTEMA

Os testes de integração e sistema verifica a interação real entre várias unidades, portanto, quanto mais unidades forem integradas, menos útil será a substituição dessas unidades por simulações. O Cantata Wrapping, nos testes de integração e sistema, retém todos os benefícios do Wrapping no teste de unidade, mas torna-se ainda mais útil ao simular ou intercetar chamadas específicas quando se testam interações reais.

As interceções do Cantata Wrapping estão disponíveis para qualquer chamada de função C/C ++ feita em qualquer lugar dentro do software em teste para:

  • Outros componentes de software na compilação
  • Software externo (incluindo código de terceiros ou objeto)
  • Funções de sistema operacional ou biblioteca padrão
  • Firmware ou hardware

As interceções do Cantata Wrapping permitem que o testador verifique o comportamento real da interface, em vez de usar cenários de teste baseados em suposições numa simulação. A interceção de chamadas fornece inigualável capacidade de injetar erros e verificar o comportamento real de interações reais (por exemplo, falhas com sistemas operacionais, código de terceiros, firmware e hardware) que, de outra forma, seriam impossíveis ou muito caras de serem testadas.

Como funciona o Wrapping?

A Cantata Wrapping usa instrumentação de acessibilidade (via GUI ou CLI) em uma cópia do código-fonte para intercetar chamadas de função do Software a ser testado.

Qualquer coisa chamada por uma chamada de função C/C ++ pode ser “wrapped” (por exemplo, outra função, um objeto de terceiros, um banco de dados, etc.). Um Wrapper possui um protótipo de função idêntica ao objeto chamado que será substituído, mas a instrumentação de testabilidade permite que o objeto chamado seja incluído na construção de teste sem causar erros de “linkagem”.

As seções BEFORE, REPLACE e AFTER no Wrapper inserem funções C/C ++ adicionais programáveis, que então chamam: outra seção do Wrapper, o objeto chamado ou retornam ao Software sob teste. Cada seção do Wrapper contém diretivas Cantata para registar a ordem das chamadas, modificar ou verificar parâmetros / exceções e todos os dados acessíveis ao Software sob teste, ou objeto chamado, e retorna.

EDITAR CONTROLO DE CHAMADAS EM CANTATA

Cantata gera automaticamente cada wrapper (contendo as seções BEFORE, AFTER e REPLACE) no script de teste com uma instância de emparelhada BEFORE-AFTER padrão. Isso significa que os objetos chamados podem ser “wrapped” sem forçar o testador a especificar o valor de retorno.

Instâncias adicionais do Wrapper (em pares Before-After ou Before-Replace) podem ser adicionadas para verificar todos os valores de parâmetros passados para e do objeto chamado. Quando instâncias adicionais são adicionadas, Cantata oferece automaticamente verificações de valores reais em relação aos esperados para todos os parâmetros passados pela interface.

Uma chamada de função para um objeto, pode ter todas as chamadas “wrapped” ou apenas funções de chamada selecionadas.

Os wrappers são implementados em C/C ++ num script de teste Cantata e podem ser editados na GUI de controlo da interface de chamadas Cantata ou diretamente em qualquer editor de C/C ++.

CONTROLO DE CHAMADAS EM CASOS DE TESTE

Os controles da interface de chamadas Cantata podem usar várias instâncias de stubs, Wrappers ou isolados para providenciar diferentes comportamentos em diferentes ocasiões em que a chamada é efetuada. Essas chamadas e instâncias controladas são usadas num script de teste Cantata para definir a ordem esperada de chamadas e o comportamento controlado para cada caso de teste.

As sequências de chamadas esperadas são muito flexíveis (loops lineares, de tamanho fixo, paralelas, etc.) e podem ser configuradas para pedidos específicos ou em qualquer correspondência temporal para cada chamada controlada. A ordem das chamadas esperadas em cada caso de teste pode ser editada na GUI Cantata (gerador de scripts de teste) ou diretamente em qualquer editor C/C ++.

Mais Informações sobre Wrapping

Para mais informações sobre Wrapping, por favour veja o nosso documento de funcionalidades: