Qual a importância de fazer testes?

Fazer testes é algo que deve ser rotina para todo programador, como uma regra, mas, você sabe o motivo? Abaixo, vamos relacionar alguns motivos importantes:

  • Qualidade nos entregáveis: o código que chega para o cliente tem a garantia de ser validado e suas as funcionalidades estão de acordo com o que foram implementadas.
  • Garantia do comportamento: novas rotinas que impactam em rotinas antigas, assim como alterações em rotinas antigas, têm a garantia de manter o mesmo comportamento, pois é possível detectar os problemas antes de chegar ao cliente, liberando assim, um código mais assertivo.
  • Fácil depuração: não é necessário subir um sistema inteiro para verificar o funcionamento, os testes garantem a checagem das rotinas, basta rodar os testes e avaliar o log do resultado da execução.
  • Rodar testes a cada liberação: os testes sempre rodam, pois estão na pipeline de liberação de forma automatizada, a cada liberação tudo é testado garantindo a qualidade.
  • Baixo custo: os testes automatizados rodam automaticamente, desta forma, diferentemente de um teste manual que precisa rodar rotina a rotina (podendo esquecer algumas, ou até mesmo informar valores diferentes a cada testa), a automatização roda de forma rápida e completa, sem variações.

Importante destacar alguns pontos de atenção, que podem gerar uma falsa percepção no desenvolvedor:

  • Codificar coisas demais: o desenvolvedor pode ter a falsa impressão que está codificando coisas demais, já que além da rotina, precisa também implementar o teste para ela, entretanto, isso não é verdade, pois o ganho obtido ao longo do tempo, mitigando impactos futuros no funcionamento desta rotina compensam todo e qualquer tempo investido na análise e implementação do teste.
  • MR não aprovados: o programador pode ter a sensação que seus MR não são aprovados, mas na verdade, os testes estão validando e impedindo que alguma alteração corrompa o código já existente.
  • Demora para entrega: escrever código a mais, pode causar a impressão de que o prazo para entrega pode ser mais longo, entretanto, isso evita que o desenvolvedor precise de retrabalho na correção de bugs futuros, o que leva um tempo consideravelmente maior do que a implementação dos testes na origem da implementação da rotina.

O que a Tecnologia oferece para testes?

A tecnologia oferece o BEF Integration Tests (BIT) que é uma biblioteca que permite o desenvolvimento de testes de integração para as regras de negócio escritas em BEF, já que ele entrega o contexto do Benner (como se tivéssemos o Provider ou o Runner rodando por trás). Para saber mais sobre o BIT, consulte a nossa WIKI.

Além disso, a Benner possui integração total com os principais frameworks de teste do mercado:

  • MSTest: É o mais simples, para usar basta adicionar os atributos [TestClass] (para classes) e [TestMethod] (para métodos), para iniciar a execução dos testes, além disso o Visual Studio já possui um painel para exibir os testes.
  • NUnit: É muito popular sendo referência para os testes de unidade. A instalação é feita através do NuGet package. Para usar, usamos os atributos [TestFixture] (para classes) e [Test] (para métodos), tendo a possibilidade de parametrizar os testes com o atributo [TesteCase(“seu parâmetro”)].
  • xUnit: Baseado no NUnit é mais flexível e abrangente, para testar basta decorar os métodos com os atributos [Facts] (para métodos sem parâmetros) e [Theory] (para métodos com parâmetros) – não há necessidade de decorar a classe.

Tudo isso, ainda pode ser usado junto com o NSubstitute que vai possibilitar a criação dos mocks (objetos que simulam o comportamento de objetos reais, podendo definir retornos específicos em seus métodos, de maneira que a classe a consumir eles nem note que algo foi alterado), permitindo criar objetos baseados em interfaces definindo contratos de retorno usando a injeção de dependência (que foi assunto de outro BE.TECH).

E os testes unitários?

Fundamentais e primordiais!!! Prefira usá-los sempre que possível já que possuem um melhor desempenho na execução, sem necessidade de configuração das regras de negócio tampouco de banco de dados e similares.

Teste unitário = Teste mais rápido = Teste mais barato.

Para saber mais

Gostou do tema e quer saber mais? Eu gravei uma série de vídeos sobre testes, o primeiro iniciando com os conceitos básicos:

Para ver a trilha de testes inteira, basta acessar a Trilha de Testes no YouTube.

Além disso o Alessando Vieira de Souza apresentou um BE.TECH com muita dica e mão na massa (o vídeo ficou sem a abertura e fechamento pois o YouTube criticou a nossa trilha sonora😑, mas o conteúdo está íntegro):

No nosso BE.TECH falando de testes, também surgiu a dica de um livro: Trabalho Eficaz com Código Legado do Michael C. Feathers.

Sem contar toda a documentação presente na nossa Wiki.

Com essas dicas, e todo esse material, com certeza você vai ficar um ninja em testes além de querer implementar testes para tudo!

Te vejo na próxima, um abraço,

Danton C. Franco Junior

#TimeTec

Compartilhe
Autor
Leia mais
Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *