Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chapter 7 Testing (Tests Scopes (Trade-offs: (A medida que subimos a…
Chapter 7 Testing
Unit tests: Usado com a finalidade de testar uma única função ou método. Dentro do quadrante apresentando ele é um "technology-facing".
Auxilia na hora de evitar bugs, importante para dá confiança ao desenvolvedor na hora de fazer refactores, pois o desenvolvedor saber que o teste vai evitar
Diagrama presente no livro Succeeding Agile.O objetivo do diagrama é dizer o quanto cada teste deve cobrir em cada escopo e proporção que devemos buscar atingir para cada.
Service test: Testa uma determinada parte de uma funcionalidade como um todo. O teste é feito de forma isolada permitindo assim um teste mais rápido, com isso facilita também a busca e a resolução de problemas.
Por ele poder cobrir uma maior área, Pode ser mais difícil descobrir o que quebrou comparado com um teste unitário.
End-to-end tests (UI): Testa a aplicação como um todo. Mas ele é bem complexo de ser aplicados em ambientes de micro-serviços.
Trade-offs:
-
O feedback sobre o funcionamento de determinada parte do sistema pode ser alto dependendo da demora do teste.
Quanto mais próximo da base da pirâmide mais rápido é nosso teste, encontrar problemas é muito mais rápido, integração continua é mais rápida.
Quanto mais próximo da base da pirâmide não temo tanta confiança que nosso sistema como um todo funciona corretamente.
DICA Quando testes de maior escopo falham devemos escrever um teste unitário para esse cenário para que possamos trabalhar
-
-
How many? Ele não dá um valor fechado ou proporção, mas deixa como regra geral a ideia de que quanto mais próxima da base da pirâmide maior o número de testes.
- Those Tricky end-to-end tests
Ele deve cobrir uma maior gama de funcionalidades da aplicação como um todo, pois testa múltiplos serviços de uma única vez.
-
-
Ao lançar alguma funcionalidade que possivelmente vai impactar várias serviços podemos lançar uma versão e testar em conjunto com os sistemas impactados.
Devemos testar nossa aplicação apontando para a versão que esta em produção ou a última versão disponível para deploy?
-
Possível solução para o problema é criar uma esteira para cada serviço e que convergem para um único teste "end-to-end"
- Implementing Service Tests
Growing Object-Oriented Software, Guided by tests
-
Um dos grandes problemas em implementar o teste de serviços é como esses testes devem se comunicar com os serviços que colaboram com ele. O autor entra na questão se esses "colaboradores" devem ser "stubs" para simular o comportamento desses serviços
Ele apresenta a ferramenta http://www.mbtest.org/ (Mountebank) como sendo possível auxiliar para esse tipo de simulação.
-
Latência, número de usuário que o sistema deve aguentar, acessibilidade e etc.
-
- Consumer-Driven Tests to the Rescue
CDC (Consumer driven contract) é uma modo de se testar uma aplicação onde o "Producer" testa o que é esperado dele pelos "Consumers".
Os testes dos contratos são feitos através do mock dos consumers.
-
-
Categorias de testes
- Downsides to End-to-End testing
-
- Test Journeys, Not Stories
Os testes eles são aplicadas para as principais funcionalidades do sistema. Dentro do escopo da equipe de BGC poderia ser a criação de um relatório e a adição de uma nova configuração.
- So Should You Use End-to-End Tests?
Pela quantidade de desvantagens apresentadas por esse tipo de testes, muitos abandonam os testes por CDC tests