Product Design, Manufacturing & Innovation Resources
Lar » Verificação estática versus dinâmica (TI)

Verificação estática versus dinâmica (TI)

1970
Software engineer performing static verification using code analysis tools in Computer Science.

(Imagem gerada apenas para fins ilustrativos)

Verification As técnicas são amplamente classificadas como estáticas ou dinâmicas. A verificação estática (ou análise estática) examina o código ou o projeto do sistema sem executá-lo. Exemplos incluem revisões de código, inspeções e ferramentas automatizadas de análise estática. A verificação dinâmica (ou teste) envolve a execução do sistema com um conjunto de entradas e a observação de seu comportamento para encontrar defeitos. Ambas são complementares para uma garantia de qualidade abrangente.

A verificação estática e a dinâmica são abordagens complementares para a detecção de defeitos. A verificação estática é realizada no início do ciclo de desenvolvimento, muitas vezes antes mesmo da compilação do código. Ela pode analisar toda a base de código e identificar problemas como erros de sintaxe, incompatibilidades de tipos, desreferências de ponteiros nulos e violações de padrões de codificação. Como não requer execução, pode revelar problemas em trechos de código de difícil acesso por meio de testes. Ferramentas automatizadas de análise estática são hoje um componente padrão dos fluxos de trabalho de desenvolvimento modernos, fornecendo feedback imediato aos desenvolvedores em seus ambientes de desenvolvimento integrados (IDEs).

A verificação dinâmica, também conhecida como teste dinâmico, concentra-se no comportamento do software em tempo de execução. Envolve a execução do programa com entradas específicas e a comparação da saída real com a saída esperada. Esta é a única maneira de detectar certos tipos de erros, como gargalos de desempenho, vazamentos de memória que ocorrem ao longo do tempo ou tratamento incorreto de interações complexas do usuário. A verificação dinâmica inclui vários níveis de teste, desde testes unitários que verificam componentes individuais até testes de sistema que validam toda a aplicação. Embora poderosa, a verificação dinâmica é inerentemente incompleta; ela só pode comprovar a presença de erros para as entradas testadas, não a sua ausência para todas as entradas possíveis.

Uma estratégia de verificação abrangente utiliza ambos os métodos. A análise estática detecta uma classe de erros de forma barata e precoce, enquanto os testes dinâmicos validam o comportamento funcional e não funcional do sistema em execução, garantindo que ele funcione conforme o esperado em condições operacionais.

UNESCO Nomenclature: 1203
Ciência da Computação

Tipo

Sistema abstrato

Interrupção

Substancial

Uso

Uso generalizado

Precursores

  • compiler theory (for parsing and semantic analysis)
  • técnicas iniciais de depuração (por exemplo, instruções de impressão)
  • lógica formal
  • processos de revisão e inspeção de código

Aplicações

  • Ferramentas de análise estática em IDEs (ex: lint, findbugs)
  • frameworks de teste unitário (ex: junit, pytest)
  • processos de inspeção de código e revisão por pares
  • testes de desempenho e carga
  • testes de penetração de segurança

Patentes:

NA

Ideias de Inovação Potencial

Devido ao tráfego de bots de coleta de dados, atualmente superior a 40 mil por dia, este conteúdo é reservado aos membros da comunidade.
> Login < ou > Registrar < (100% gratuito) para acessar isso, assim como todo o restante do conteúdo e das ferramentas restritas.

Relacionado a: análise estática, análise dinâmica, testes, verificação, qualidade de software, revisão de código, testes unitários, lint.

Contexto histórico

Verificação estática versus dinâmica (TI)

1960
1960
1967
1970
1970
1970
1970
1956
1960
1967
1967
1970
1970
1970
1970-01-01

(Caso a data seja desconhecida ou irrelevante, por exemplo, "mecânica dos fluidos", é fornecida uma estimativa aproximada de seu surgimento notável)

Princípios relacionados à invenção, inovação e tecnologia

Imagens em tamanho real e downloads estão disponíveis apenas, 100% gratuitos, para membros registrados.