Testes de software

Testes de software para
sistemas complexos

Analise o código, execute testes repetíveis em ambientes complexos e recolha evidências de execução, numa só plataforma.

Porque importam os testes de software

Um sistema complexo falha de formas que uma única execução de testes não explica. A falha aparece num dispositivo, numa configuração, e desaparece na execução seguinte.

O Midair liga a análise estática, os testes distribuídos e a monitorização em tempo de execução. Foi feito para sistemas onde as falhas são difíceis de reproduzir e caras de investigar. Isso inclui dispositivos embebidos, hardware de rede, serviços de alta carga e software em que a cibersegurança é crítica.

O que são os testes de software?

Os testes de software verificam que um sistema faz o que a especificação define, nas condições que vai encontrar no terreno.

Numa aplicação isolada, a verificação é sobretudo funcional: dá-se uma entrada ao programa e compara-se a saída com a especificação. Um sistema complexo é mais difícil. O código corre em hardware que não controla por completo, em vários nós, com limites de tempo e de memória. Um defeito pode depender do dispositivo, da carga ou da ordem dos eventos. Por isso, uma execução de testes sem falhas prova menos do que parece.

Testar um sistema destes responde a três perguntas diferentes. O que pode o código fazer antes de ser executado? Como se comporta ao longo de muitas execuções controladas? O que acontece quando chega à produção?

O que são os testes de sistemas embebidos?

Os testes de sistemas embebidos verificam o software que corre num dispositivo físico e o controla. O código tem de estar correto no hardware de destino, com temporização real, limites de memória reais e condições de funcionamento reais.

"Testes de software embebido" é outro nome para a mesma prática. Nos dois casos, testa-se o firmware e as aplicações embebidas no hardware, nos barramentos e nos ambientes onde vão funcionar.

O hardware também está em teste

O dispositivo de destino faz parte do sistema em teste. Uma execução na máquina anfitriã não o substitui.

A temporização decide se está correto

As interrupções e os prazos de tempo real podem fazer falhar código correto.

Os recursos têm limites rígidos

A memória, a energia e o tempo de CPU têm tetos fixos. Ultrapassá-los é um defeito.

Pouca visibilidade no terreno

Um dispositivo já instalado muitas vezes não tem consola, coletor de registos nem depurador ligado.

Correções tardias custam caro

Um defeito encontrado depois do lançamento pode custar caro a corrigir, e alguns não se corrigem remotamente.

O ambiente é uma entrada do teste

A temperatura, a qualidade da alimentação e a perda de sinal mudam o comportamento do dispositivo.

Para dispositivos e firmware, veja testes de sistemas embebidos. Para routers, switches e infraestrutura ligada, veja testes de hardware de rede.

Desafios nos testes de sistemas complexos

As falhas ficam mais difíceis de explicar quando os resultados dependem do hardware, da configuração, da temporização e das interações entre várias partes do sistema.

Visibilidade limitada

Pouca informação sobre o comportamento do sistema em condições reais

Defeitos ocultos

Erros que se escondem entre dependências e camadas de integração

Difíceis de reproduzir

É difícil recriar as condições reais de falha em ambientes de teste

Falhas tardias custam caro

Os defeitos descobertos em produção são exponencialmente mais caros de corrigir

Midair

Como o Midair testa sistemas complexos

Três componentes, um único fluxo de trabalho.

Visao

Antes da execução

A análise estática lê o código-fonte antes de o software ser executado. Encontra usos inseguros de memória, transbordos de inteiro e violações das regras do seu projeto.

TS Factory

Durante os testes

Executa testes repetíveis em dispositivos, nós e ambientes complexos, e regista o ambiente exato de cada execução.

Delta

Em execução

Recolhe registos, eventos do sistema e dados de recursos enquanto o software corre. Assim, o comportamento real pode ser comparado com os resultados dos testes.

O Midair liga as três fases

Uma ocorrência da análise estática de código, a execução de testes que chegou a esse código e as evidências dessa execução ficam ligadas.

As ocorrências no código, as execuções de testes e as evidências de execução não ficam em três ferramentas separadas. Uma falha pode ser lida em conjunto com o código e o ambiente que a produziram.

Análise estática, testes distribuídos e monitorização em tempo de execução ligados no Midair

Casos de utilização

O Midair foi feito para sistemas onde um defeito é difícil de reproduzir e sai caro se escapar.

•

Testes de sistemas embebidos

Firmware, microcontroladores e ambientes de tempo real

•

Hardware de rede

Routers, switches e o software que faz passar o tráfego por eles

•

Sistemas de alto desempenho

Serviços sob carga contínua, onde um defeito só aparece em grande escala

•

Ambientes distribuídos complexos

Sistemas com vários nós, onde o resultado depende da temporização e da ordem dos eventos

•

Software crítico para a cibersegurança

Software em que as falhas de segurança têm consequências graves na operação e exigem evidências reproduzíveis

O que o Midair cobre

Cinco capacidades, para usar em conjunto ou uma de cada vez.

Análise estática de código

Encontre defeitos, padrões inseguros e violações de regras no código-fonte antes de o software ser executado.

Testes distribuídos e repetíveis

Execute o mesmo conjunto de testes em muitos dispositivos e nós em paralelo, e obtenha sempre a mesma resposta.

Monitorização em tempo de execução

Recolha registos, eventos do sistema e dados de recursos do sistema em execução, ligados à execução que os produziu.

Testes em dispositivos reais e ambientes complexos

Execute testes em hardware real, em ambientes de rede e nas montagens hardware-in-the-loop que já tem.

Integração com CI/CD

Corre dentro dos seus pipelines atuais, por isso cada alteração é verificada antes do merge.

Iniciar o seu piloto

Escolha um plano e inicie um piloto do Midair no sistema que precisa de validar.