Suas aplicações são seguras?

Conheça a Conviso!

Entenda as diferenças entre testes de aplicações dinâmicos e estáticos

No cenário atual onde vulnerabilidades e vazamentos de dados rotineiramente são notícia, as empresas devem prestar atenção especial aos seus processos de desenvolvimento de software, incorporando boas práticas de segurança em todas as suas etapas — especialmente no ponto focal deste artigo: o teste dinâmico de aplicação e o teste estático de código de software.

As análises estáticas e dinâmicas são os dois tipos mais populares de abordagem para garantia de qualidade do software — vamos usar os termos “teste” e “análise” de maneira intercambiável nesse artigo, exceto quando houver algum ponto mais específico. Esses procedimentos devem ser antecedidos por um desenvolvimento carregado de boas práticas de segurança, pois teste algum é capaz de imunizar o software contra programação pobremente executada. Os testes devem ser considerados investimentos no software, já que mobilizam profissionais e recursos, e portanto devem ser gerenciados com atenção. 

Observando as diferenças

A análise estática usa uma abordagem conhecida como “whitebox”, ela aborda o código em si, “abrindo” a caixa do software para avaliar seus componentes e características, sem executar o software propriamente dito. Uma ferramenta que executa a análise estática de forma automatizada vai tipicamente procurar por erros que possam impedir a execução (run-time errors), erros comuns da linguagem alvo e código potencialmente malicioso.

A análise dinâmica atua no complemento da estática, considerando o código como uma caixa preta (abordagem “blackbox”), e se preocupando apenas com os dados inseridos na rotina, se a saída de dados inseridos é a esperada, o tempo de resposta, o comportamento funcional e a performance da aplicação como um todo.

Como tiveram origens e evoluções distintas, os testes estáticos e dinâmicos algumas vezes são erroneamente vistos como opostos, mas uma rápida análise dos prós e contras de cada um pode trazer alguns insights interessantes.

Muitos defeitos de software que causam erros de memória e de segmentação pode ser detectada de forma dinâmica e estática. As duas abordagens são complementares, porque não há uma única abordagem que encontre todos os erros.

Recapitulando: A análise dinâmica é feita durante a execução. A análise estática é feita através da análise do código sem executar o aplicativo.

A principal vantagem da análise dinâmica é revelar defeitos sutis ou vulnerabilidades cuja as origens são muito complexas para serem descobertas na análise estática. A análise dinâmica pode desempenhar um papel na garantia da segurança, mas seu principal objetivo é encontrar e eliminar erros (debug).

A principal vantagem da análise estática é examinar todos os caminhos de execução possíveis e valores variáveis, não apenas aqueles invocados durante a execução. Assim, a análise estática pode revelar erros que podem ficar ocultos por semanas, meses ou anos após o lançamento. Este aspecto da análise estática é especialmente valioso na garantia da segurança, porque os ataques de segurança muitas vezes irão abordar uma aplicação de formas imprevistas e não testadas.

Analisando os prós e contras

Custos: os testes estáticos têm custo menor do que a análise dinâmica porque é feita já nos estágios iniciais do processo de desenvolvimento.

Tempo: os testes dinâmicos vão exigir um somatório de tempo muito menor do que os estáticos, já que precisam de uma quantidade muito menor de reuniões e comunicações.

Abrangência: em matéria de cobertura das instruções contidas no código, os testes estáticos conseguem cobrir uma área maior do que os testes dinâmicos, em um intervalo menor de tempo.

Complexidade: testes dinâmicos vão revelar e permitir a correção de falhas e comportamentos inesperados que normalmente não podem ou são muito difíceis de se capturar na análise estática. 

Confira Integração contínua e testes de segurança onde apresentamos as duas abordagens integradas em um processo de integração contínua.

E então, ainda tem dúvidas? Não perca tempo: deixe um comentário!

Originalmente postado no Blog da Conviso Application Security – Siga-nos no Twitter @conviso Google+

Tags

Deixe uma resposta

Seu endereço de e-mail não será publicado.

topo