Test-first FAÇA! - Maximiliano Alves
undo
menu

Test-first FAÇA!

  Hoje temos como principais buzzwords nomes como TDD, BDD e até DDD, que basicamente são designs para desenvolvimento de software, isso incluindo times de desenvolvimento, qualidade e análise. Mas hoje proponho começarmos a pensar em Test-first e pensar nisso para um time inteiro desde aquela análise primária até o deploy de um projeto ou produto.

O conceito é entendível bem facilmente: Escreva, crie e pense em testes/qualidade antes de escrever o código.

 

Mas falando da parte conceitual, o termo surgiu no tempo do XP (Extreme Programming) e foi incorporado no TDD realizando o Test-first + Refatoração. Alguns profissionais já acham o termo Test-first obsoleto, eu já penso que não, pois o termo está presente em todos os modelos atuais de desenvolvimento.

O Test-first é formado por alguns passos para começar a pensar nesta aplicação, isso vale tanto para o QA quanto para o Desenvolvedor :

  • Pensar em como vai ser construída a aplicação, método ou módulo.
  • Pensar sobre como o cliente está vendo isso.
  • Pensar e validar sobre os dados que estão sendo retornados da API
  • Elencar o que será testado e qual a cobertura.
  • Escrever teste superficial
  • Desenvolver a funcionalidade
  • Expandir os testes e a cobertura
  • Desenvolver a funcionalidade para produção

Um ponto para se observar é a maturidade que está sendo criada em todo processo, podendo ser expandido para diferentes áreas, tal como a análise, participando do passo de pensar como vai ser construída a funcionalidade e qual será a visão do cliente, tendo logo após o QA já realizando a escrita deste teste e a cobertura e após o desenvolvedor realizando a escrita do código e assim por diante, notando sempre que o QA está incluso em todas estas etapas. Penso que o cenário ideal que é implementar TDD full em todas as frentes, mas em algum momento precisamos chegar no cenário ideal, passar pelo tempos de maturação e assim evoluir. E um avanço que pode estar nas nossas mão é pensar primeiro em qualidade, pensar primeiro como vai ser entregue aquela feature, cobrindo o maior campo possível com testes e assim entregando o esperado para o cliente.

Sim, sei que muitas vezes é difícil implementar, por falta de equipe de qualidade ou por falta de braço no time de desenvolvimento, mas algo que ouvi a um tempo atrás é que o desenvolvedor vai estar perdendo tempo de desenvolvimento sim, porém a empresa e o produto ou feature vão estar ganhando em qualidade e em melhoria contínua estando com um código que facilmente pode ser reutilizado e ser confiável para novas features. Implementando uma equipe de testes tem-se a maior cobertura daquele produto e automatizando o ganho é maior ainda, prolongando essa cobertura das features em quantas vezes forem startados os testes.

Isso é um pouco do que tenho estudado, pensado e colocado em prática no ambiente de trabalho, o pensamento e a ação de Test-first.

 

Grande Abraço.

Maximiliano Alves