AgileTesters / forum

Fórum de Discussão do Agile Testers
https://agiletesters.com.br
MIT License
80 stars 2 forks source link

Feedbacks sobre projeto de estudo pessoal #156

Open teixeira-fernando opened 3 years ago

teixeira-fernando commented 3 years ago

Olá pessoal, feliz ano novo!!

Nos últimos meses comecei um projeto de estudo pessoal. O objetivo inicial era de estudar mais aprofundamente as diferenças de elaboração e aplicação de estratégias de qualidade para microserviços de comunicação sincrona e assincrona. Decidi fazer todo o desenvolvimento da aplicação e dos testes do zero para poder observar melhor na prática alguns detalhes. Acabou que fui fazendo bastante coisas e o projeto cresceu bem hahaha

https://github.com/teixeira-fernando/EcommerceApp

Estou escrevendo esse post porque gostaria muito de receber feedbacks/code reviews sobre código, estratégia e qualquer outro detalhe que possa agregar no projeto ou em conhecimento. Fiquem a vontade para opinar  e criticar sobre qualquer ponto. Vou descrever com mais  detalhes algumas coisas que foram feitas para dar um contexto melhor:

A estratégia de testes envolve:

O projeto ainda inclui alguns extras como configuração com docker compose, pipelines configuradas no Github Actions, configuração de swagger pra cada um dos módulos, criação e publicação automatizadas de docker images dos módulos e aplicação de Code Style com spotless plugin. Mais detalhes é só conferir lá no repositório.

Um detalhe que fiquei pensando quanto a incluir nessa estratégia de testes em específico, são os testes E2E, uma vez que nesse contexto da minha aplicação, já consegui cobrir vários pontos diferentes com os outros testes mencionados acima. Um tipo de problema que o teste E2E conseguiria identificar nesse contexto que os outros não conseguiriam, são problemas de infraestrutura e configuração da mesma. Por exemplo, quando criei containers Dockers de cada um dos modulos, vi que estes não estavam se comunicando apropriadamente por conta de possíveis problemas do meu DockerFile. Este tipo de problema só foi possível de identificar com um teste E2E. Aí o ponto que fico refletindo é se seria mais eficiente ter somente algum tipo de health check de pontos da infraestrutura como esse, ao invés de criar todo um teste E2E pra identificar detalhes como esse, ou então esse teste E2E ainda poderia ter um valor de teste de aceitação pro negócio, logo ainda seria melhor criar ele. Obs: Talvez seja complicado de demonstrar por aqui, mas acredito que em cobertura da aplicação em si, esses testes E2E iriam apenas validar novamente alguns pontos já cobertos nos outros testes.

Segue o link para o repositório do projeto: https://github.com/teixeira-fernando/EcommerceApp

Desde já agradeço, abraço!!

teixeira-fernando commented 3 years ago

Complementando o que mencionei sobre os testes E2E acima:

Tentei listar quais detalhes poderiam ser identificados no teste E2E, e não pelos outros testes, para esse meu contexto. Peguei como exemplo, a funcionalidade de criar uma ordem de compra, onde o módulo "shop" irá realizar uma comunicação sincrona com o módulo "inventory" e uma comunicação assíncrona com o módulo "shipment".

Vejo que o segundo e quarto ponto poderiam ser resolvidos com um healthcheck e mais recursos de monitoração da aplicação. O terceiro ponto tbm imagino que podemos ter recursos de health check da fila para garantir que não ocorrerá uma falha nesse ponto;

O primeiro ponto de timeout (poderia estar relacionado a oscilações da rede), poderia ser parcialmente remediado com algumas retry policies e retry polling para essa comunicação sincrona.

Também vejo que se caso eu tivesse um API gateway que intermediasse toda a comunicação direta aos módulos, poderíamos ter um valor extra em um possível teste E2E (Mais um ponto de possíveis problemas de configuração e infraestrutura);

A minha dúvida é: Existe mais algum outro problema que o teste E2E poderia identificar que eu não anotei aí em cima? Falando especificamente só desse contexto da minha aplicação, onde já temos os testes de unidade, integração e contrato já bem estruturados