DEV Community

Testes e validação de software

Indicações

  • Livro: Accelerate - Building and Scaling High Performing Technology Organizations
  • Pesquisa: Os testes finais de aceitação pelo usuário (UAT: User acceptance Testing) exigem perguntas difíceis de responder em um ambiente ágil.

Desejo

A grande maioria das empresas de serviços digitais desejam que suas aplicações estejam disponíveis para o consumo dos clientes sempre que precisarem. Para obter esse nível de disponibilidade, elas vão precisar, além de outras coisas, que o produto seja devidamente testado e validado. Sejam arquiteturas, servidores ou sistemas, se desejamos resiliência, confiabilidade e segurança precisamos fazer isso.

Vamos ao que interessa!

Code & Test & Release & Repeat

Agil

Algumas metodologias ágeis são mais favoráveis aos testes, como: Estórias de usuário, Behavior Driven Development (BDD) e Teste Driven Development (TDD). Pode-se utilizar os princípios INVEST para criar as estórias de usuário. Para esse tema eu recomendo muito esse post.

A técnica conhecida como TDD foi introduzida no XP e é a mais eficaz em garantir que os testes automatizados funcionem de forma confiável. Antes mesmo de iniciarmos o desenvolvimento, o programador já faz a criação do teste seguindo três princípios: testes de falha esperada, testes de sucesso, e tanto testes antigos como testes novos bem estruturados/refatorados.

Os testes precisam estar versionados. As mudanças precisam ser integradas ao repositório remoto diariamente (Integração Contínua).

Testes

Quando falamos de desenvolvimento de software, costuma-se dividir os testes em duas classes: os funcionais, que verificam o comportamento da aplicação, e os não-funcionais, que verificam os elementos que a aplicação precisa.

No tocante aos testes funcionais, o Manual de DevOps divide os testes em quatro tipos:

  • Testes unitários: testes de um método, função ou classe (pequenas parte) do código com valores de entrada, consulta e saída pré-definidos (mockados);
  • Testes de aceitação: esse tipo de teste verifica se o que foi desenvolvido foi o que o cliente pediu, e não o que o programador esperava desenvolver;
  • Testes de integração: visando garantir que a nova funcionalidade não interfiram de forma inesperada com as demais;
  • Teste de segurança: garantem que as politicas de segurança e conformidade foram seguidas, e verificar a existência de vulnerabilidades.

Por outro lado, os testes não-funcionais, não estamos falando apenas da aplicação, mas da infraestrutura que a suporta, da lógica e dos diretórios, das regras e das integrações internas e externas. Em suma, limites e requisitos. Muitas vezes, o testes não-funcionam dizem respeito ao desempenho. Existem três testes primordiais quando tratamos de limites e requisitos. São eles:

  • Testes de carga: valida o volume que uma aplicação suporta;
  • Testes de resistência: valida a estabilidade e capacidade de um ambiente (aplicação, plataforma, banco, cache) em um determinado período de tempo;
  • Testes de stress: verificamos o comportamento das métricas de uma aplicação, sua estabilidade e capacidade de recuperação quando levada ao limite.

Ferramentas

Além das metodologias citadas (TDD e BDD), também existem frameworks de testes e bibliotecas de testes, como é o caso, respectivamente, do JBehave e da XUnit's. Foram desenvolvidos até mesmos recursos linguísticos para criação de testes, como o Gherkin.

Realidade

Espero que tenha ficado mais do que claro que quando se deseja que suas aplicações sejam consumíveis sempre que os clientes precisarem é preciso uma boa cobertura de testes. Os testes previnem e anteveem problemas nos ambientes produtivos por meio do aferimento de diversos indicadores. Quer sejam arquiteturas, servidores ou sistemas, se desejamos resiliência, confiabilidade e segurança precisamos testá-los.

Um minuto do seu tempo

O que eu disse faz sentido pra você? Me fala um pouco da sua experiência com testes!

Não esquece de curtir e comentar esse post. Se esse conteúdo foi relevante pra você ele com certeza pode ser pra alguém do seu trabalho ou empresa.

Me conta o mais você gostaria de ver aqui. Alguma das palavras acima chamou a sua atenção? Me conta.


Um abraço, rede!

Top comments (0)