O que é a Pirâmide de testes?
A pirâmide de testes é uma ilustração que permite visualizar de forma simples os tipos de testes, seus níveis, velocidades, complexidades e “custos”.
Além disso ela busca dar um direcionamento em relação a quantidade de testes a ser implementados em cada nível.
Além do direcionamento em relação a quantidade também apresenta uma visão acerca da velocidade da execução dos testes (e da sua criação também) e também do nível de isolamento do testes.
A pirâmide apresenta 3 níveis, são eles:
- Base – Testes unitários
- Meio – Testes de integração
- Topo – Testes ponta a ponta (E2E)
Então vamos ver cada um dos níveis da pirâmide.
Base – Testes Unitários
Os testes unitários são os testes da menor parte testável de uma aplicação.
A menor parte testável de uma aplicação é um método público em uma classe(falando em orientação a objetos) ou uma função.
Os testes unitários é que eles são extremamente pequenos e rápidos.
Já que se referem a uma parte especifica da aplicação.
Além disso os testes são totalmente independentes.
Não tendo assim nenhum vínculo com outras partes da aplicação
Outra vantagem é que caso um teste unitário falhe é fácil descobrir o problema, já que o teste cobre um escopo de unidade do código.
Além disso outro ponto sobre os testes unitários é que eles podem guiar o desenvolvimento de todo o seu sistema
Usando o desenvolvimento orientado a testes (TDD).
Meio – Testes de Integração
O teste de integração busca testar como diferentes módulos (ou unidades) do sistema interagem entre si.
Diferente dos testes unitários os testes de integração dependem de componentes externos para serem criados e executados.
Alguns casos comuns de cobertura de testes de integração são por exemplo.
- Comunicação com bancos de dados
- Comunicação entre micro serviços
Por usarem elementos externos os testes de integração precisam de maior infraestrutura para serem criados e executados.
Muitas vezes os testes de integração demandam um ambiente completo.
Ambiente esse criado para testes de integração e testes ponta a ponta na maior parte dos casos.
Topo – Testes ponta a ponta (E2E)
Os testes ponta a ponta (E2E) buscam testar todo um fluxo de funcionamento da aplicação.
Nesse caso a ideia é realmente validar todo o funcionamento de fluxos que o usuário mais faz.
Além disso muitas vezes os testes ponta a ponta são um bom termômetro da saúde da aplicação.
Pois eles testam a aplicação como um todo.
Mas o tempo de desenvolvimento e de execução de testes ponta a ponta é muito grande.
Levando assim a terem poucos testes de ponta a ponta, cobrindo só os casos principais na maior parte dos casos.
Pirâmide de Testes – Conclusão
Voltando a pirâmide de testes em si, devemos lembrar que a base da pirâmide é mais simples de criar e mais rápida de rodar.
Já o topo da pirâmide é mais complexa de se criar e muito mais demorada de se rodar.
Então a maior parte dos testes deve estar na base da pirâmide, já no topo devemos ter só os fluxos principais.
Já os testes de integração devem ser usados para fluxos onde o teste ponta a ponta não cobre mas que os testes unitários não conseguem cobrir como um todo.
Mas se você assim como eu está começando no mundo dos testes de software mas se sente perdido no que aprender então da uma olhada no curso Aprenda a testar Aplicações Javascript.
Nesse curso você vai aprender como testar todo tipo de aplicações Javascript, passando por todas as etapas da pirâmide de testes que vimos no post.
Quer saber mais dicas sobre desenvolvimento clique aqui.
Caso queira saber mais sobre testes e TDD sugiro a leitura do artigo do Martin Fowler.