Cantata é uma ferramenta de teste dinâmica para testes unitários e de integração para C / C ++. O seu conjunto flexível de recursos de automação de testes permite que os programadores cumpram os requisitos de teste dos standards de segurança de software aplicáveis e implementem as melhores práticas do setor.

A automação de testes da Cantata permite-lhe selecionar a combinação mais eficaz e eficiente de técnicas de testes dinâmicos, adequadas aos sues estilos de implementação de código C e C ++.

Os testes da Cantata podem ser estendidos diretamente em qualquer editor de código, estendendo a flexibilidade a qualquer coisa possível na linguagem de programação C / C ++.

Flexibilidade Focada

Nenhuma suíte de ferramentas pode suportar todos os tipos de testes, e o Cantata não é exceção. O Cantata está focado nos requisitos de teste unitário e de integração de código C e C ++ de teste dinâmico em conformidade com standards de sistemas embarcados.

 

Com o conjunto de ferramentas flexíveis Cantata, pode escolher qual combinação de recursos de testes automatizados correta para conduzir seus testes unitários, testes de integração ou aprimorar seus testes de nível superior.

"Module testing early during development is becoming more important due to the increasing complexity of software. In practice Cantata has proved successful and increased unit testing efficiency. Cantata from QA Systems offers an ideal solution for the creation and execution of unit and integration tests, including coverage analysis."

Matthias Schmidt, Test management, Verification and Validation,
Bosch Engineering GmbH

"Through years of experience in unit testing using Cantata for various platforms and languages… we are confident in suggesting Cantata to our clients."

Padmakumar TV, Senior Engineering Specialist,
TATA Elxsi

Capacidades do Cantata em diferentes técnicas de teste

TESTES ORIENTADOS A REQUISITOS

O Cantata suporta testes orientados por requisitos para verificar se o software faz o que deve fazer (derivado de requisitos, especificações ou modelos de baixo nível).

O arnês de teste do Cantata conduz o código em teste por meio de um script de teste, chamando uma função com entradas selecionadas (parâmetros e dados) e automatizando a verificação do comportamento real em relação ao esperado.

Os requisitos importados para o IDE do Cantata facilitam a definição de casos de teste e os requisitos de rastreamento com scripts de teste ou casos de teste.

(Veja também Rastreabilidade dos Requisitos no Cantata).

TESTES DE ROBUSTEZ

 

O Cantata suporta testes de robustez dinâmica para verificar se o código lida com condições anormais usando técnicas recomendadas por todos os standards de segurança de software, como:

  • inicialização anormal do sistema
  • entradas e dados inválidos
  • manipulação do modo de falha
  • valores limite
  • condições fronteiras de aritmética
  • restrições de tempo
  • alocação de memória
  • propagação de erro

Os testes de robustez são facilitados com os conjuntos de regras de robustez do Cantata, de valores pré-definidos para tipos de dados básicos, em casos de teste de ciclo. Todos os dados globais acessíveis também são verificados automaticamente relativamente a alterações inadvertidas. Os scripts de teste e “wrapping” do Cantata facilitam a criação de pré-condições de teste anormais e a injeção de erros durante a execução do teste. (Veja também o Controle de Chamadas Cantata)

TESTES ESTRUTURAIS

 

OS testes estruturais identificam o código-fonte não testado pelos testes orientados por requisitos e de robustez e aborda essas lacunas.

A cobertura do código do Cantata (usada dentro ou fora dos testes Cantata) identifica todos os elementos de código não executados em contextos específicos ou em todos os contextos. As lacunas podem ser resolvidas adicionando novos casos de teste baseados em requisitos, documentando os motivos pelos quais o código não deve ser executado num contexto específico ou removendo o código redundante.

O Cantata AutoTest gera automaticamente scripts de teste completos ou casos de teste adicionais para obter 100% de cobertura estrutural para o código C. (Veja também  Cobertura do Código da Cantata Code & Cantata AutoTest).

Test Driven Development (TDD)

 

Cantata allows tests to be written as soon as function prototypes are created within header files. This allows tests to be constructed before the body of the software under test is fully implemented. Cantata for TDD enhances traditional black-box TDD techniques, by giving access to full featured white-box testing on encapsulated code internals such as private/static data and functions.

TESTE DE CAIXA NEGRA (“BLACK-BOX”)

 

Os testes de caixa preta verificam o código apenas por meio de suas interfaces públicas e não requer conhecimento da implementação interna do código para verificar o comportamento correto.

 

O Cantata oferece poder a essa técnica com testes de ciclo parametrizados selecionados ou pré-definidos pelo utilizador, para que as mesmas funções possam ser chamadas com grandes conjuntos de dados de parâmetros de entrada ou valores de dados. A sequência de chamadas esperadas e os valores de retorno esperados podem variar de acordo com os conjuntos de dados de entrada, juntamente com as saídas de dados globais verificadas ao longo do teste.

 

Os conjuntos de dados de teste acionados por tabela da Cantata também podem ser importados / exportados via CSV. Uma calculadora de efeito combinatório de GUI ajuda na seleção de vetores de teste. A otimização de cobertura automática da Cantata identifica o conjunto preciso de vetores de caso de teste necessários para atingir as metas de cobertura.

TESTES EM “WHITE-BOX”

O teste de “white-box” verifica o código concedendo acesso ao interior de código encapsulado (dados e funções privados / estáticos).

A Cantata concede aos testadores acesso direto sem poluir o código de produção com compilação condicional, usando instrumentação de acessibilidade totalmente automática somente durante o teste. Os scripts de teste podem chamar diretamente funções privadas ou estáticas e definir / verificar parâmetros e dados declarados como privados ou estáticos para um ficheiro ou função local.

Os testes em “white-box” do Cantata podem configurar condições de acionamento e verificar diretamente os valores ou o comportamento interno com mais eficiência do que com os testes de caixa preta (“black-box”).

O controle de chamadas da Cantata também pode ser usado em chamadas dentro do limite de compilação para testes de “white-box”.

TESTES PROCEDIMENTAIS E DE MÁQUINAS ESTADOS

Testes procedimentais do Cantata verificam a lógica de processamento ou os algoritmos em funções usando conjuntos apropriados de entradas de parâmetros / dados e verificando se a ordem de chamada real, leitura / escrita de dados e valores de retorno são os esperados. O Cantata analisa o código-fonte para gerar scripts de teste com os pontos de apoio necessários nos parâmetros de função e dados acessíveis para os utilizadores configurarem e verificarem.

As máquinas de estado são testadas definindo condições de acionamento e criando eventos, para verificar as transições de estado corretas. O teste de caixa branca da Cantata torna isso particularmente eficiente por meio do acesso direto aos dados estáticos da função local que armazenam o estado da máquina.

A cobertura de código de contexto definida pelo usuário da Cantata também pode ser usada para verificar se o código foi testado em estados diferentes. (Veja também Cobertura de Código no Cantata).

 

TESTANDO SOFTWARE ORIENTADO A OBJETOS

 

Os testes de estilo Cantata OO são implementados como classes para métodos de teste, modelos ou clusters de classes. Eles apresentam automatização de:

  • reutilização do caso de teste por meio de uma hierarquia de herança paralela
  • estrutura de herança de classes de teste para classes herdadas
  • implementação concreta de classes base abstratas (ABCs) ou métodos virtuais puros (PVMs)

Para quebrar a cadeia de dependência de classe e facilitar o teste de isolamento de C ++, o Cantata localiza e resolve automaticamente as dependências em referências indefinidas que não são chamadas diretamente pelo software em teste.  (Veja também o Controlo de Chamadas em Cantata).

TESTES A UNIDADES ISOLADAS

 

O Cantata não dita qual o item de código a ser testado como uma unidade ou quanto cada unidade é isolada (desacoplada) do resto do sistema. A flexibilidade total é dada pela geração configurável automática de stubs e isolamentos para simular e wrappers para intercetar chamadas feitas externamente e internamente pela unidade sob teste. O processamento interno correto e o uso correto das interfaces (parâmetros e dados) podem ser verificados com o Cantata como um executável isolado, assim que uma unidade é compilada, sem a necessidade do resto do sistema.

 

Cantata gera um caso de teste executável inicial para cada função / método no(s) ficheiros(s) de origem selecionado(s) sob teste. Os testes unitários do Cantata chamam uma função, inicializando todos os parâmetros de entrada / saída, dados acessíveis e ordem de chamada esperada. Os casos de teste são independentes uns dos outros e da plataforma em que são executados, evitando uma cadeia de dependências.

TESTES UNITÁRIOS DE INTEGRAÇÃO

Os testes de integração orientados por Cantata são apenas grandes testes unitários, mas com um cluster de várias unidades criadas como um único executável. Esses testes podem verificar o mesmo comportamento interno da unidade, mas, mais importante, as interações entre unidades, como:

  • alocação de memória entre unidades
  • ordem de leitura / gravação de dados
  • ordem de chamadas entre unidades

Os testes de integração Cantata fornecem poder de escolha sobre os pontos de entrada do driver de script de teste, com simulações internas e externas (stubs e isolados) ou interceções (wrappers) para uso flexível de estilos de teste de integração (top-down, bottom-up ou all-as-one). Os wrappers Cantata também podem ser usados onde o Cantata não é o driver do teste, adicionando ainda mais controlo sobre os testes de integração

As técnicas descritas acima podem ser aplicadas em várias combinações para atender aos requisitos de diferentes standards de segurança de software e as melhores práticas do setor. Para obter informações mais detalhadas sobre como projetar casos de teste e os requisitos de um standard específico, consulte nosso extenso conjunto de recursos.