Article image
Lauany Silva
Lauany Silva17/02/2022 12:36
Compartilhe

F.I.R.S.T. Test Unit

  • #Testes unitários
  • #.NET C#

Mas afinal, o quê são testes unitários?

Testes Unitários são testes automatizados de pequenas unidades de códigos que são testados de forma isolada. Essencialmente, um teste de unidade é um programa que chama os métodos (públicos) de uma classe e verifica se o resultado é o esperado.

E quais são os benefícios do teste de unidade?

Torna possível encontrar bugs ainda na fase de desenvolvimento. Tal benefício garante economia pois se os bugs forem encontrados ainda em fase de produção, o custo de correção e as perdas são maiores! Além disso, tais testes ajudam a evitar que alterações no software criam novos bugs.

Ok, mas o quê é esse F.I.R.S.T.?

F.I.R.S.T. é um acrônimo em inglês, que estabelece regras de boas práticas e testes limpos baseado nos conceitos de Clean Code. O significado para cada letra definem as regras que são respectivamente Fast, Indepedent, Repeatable, Self-validation e Timely. A seguir temos a disposição de cada regra de acordo com o acrônimo:

  • Fast (Rápidez): Os testes unitários devem ser executados em questão de segundos, caso contrário está havendo mais complexidade do que deveria, portanto não será um teste de unidade;
  • Indepedent (Independência/Isolamento): Cada teste dese tratar de apenas um caso de uso previsto, para que seus resultados não sejam influenciados por nenhum outro fator;
  • Repeatable (Repetibilidade): Os testes devem ser repetíveis e determinísticos, ou seja, todo teste deve poder ser executado mais uma vez e os resultados devem permanecer os mesmos a cada execução, independente do ambiente de testes;
  • Self-validation (Autovalidação): Não deve haver necessidade de verificar manualmente os valores e cada teste em si deve dizer por si só se houve falha ou não;
  • Thorough (Minuciosidade): Seu teste deve cobrir todos os "caminhos felizes" de um método, todos os casos extremos (onde você acha que o teste pode falhar), argumentos ilegais, falhas de segurança, valores grandes e etc. Desse modo, é preciso mapear todos possíveis cenários para os casos de uso;
  • Timely o T "extra" (Oportunamente): Os Testes Unitários devem ser escritos antes do código ser testado. Isso pode ser feito utilizando a abstração (Interface) com a assinatura dos métodos e na especificação.

Estou convencido, mas quais ferramentas posso utilizar?

Para desenvolvimento de testes unitários em C# com .NET, existem diversas ferramentas que estão disponíveis pelo gerenciador pacotes NuGet, mas a seguir serão apresentadas algumas opções que são altamente recomendadas:

  • xUnit: é uma estrutura de teste poderosa e completa para .NET que geralmente é empacotada com o VisualStudio junto com o NUnit. No geral, ambos são bons frameworks, mas o xUnit é mais legível e intuitivo
  • Shouldly: é uma ferramenta de asserçãomuito mais intuitiva de afirmar seus resultados de teste do que a classe nativa Microsoft.VisualStudio.TestTools.UnitTesting.Assert. O repositório do github fornece muitos exemplos,
  • NSubstitute: é uma ferramenta de simulação (ou em inglês mocking) que ser aplicada em qualquer classe ou interface para que você possa testar facilmente os métodos e também permite utilizar APIs e bancos de dados.

Muito obrigada por ler esse artigo até o final e espero ter ajudado.

Também está estudando TDD e tem mais dicas que podem ajudar nossa comunidade? Não hesite em comentar.

Referências

https://dzone.com/articles/writing-your-first-unit-tests

https://github.com/ghsukumar/SFDC_Best_Practices/wiki/F.I.R.S.T-Principles-of-Unit-Testing

https://medium.com/@tasdikrahman/f-i-r-s-t-principles-of-testing-1a497acda8d6

Compartilhe
Comentários (5)
Bruno Oliveira
Bruno Oliveira - 27/03/2024 22:55

Parabens! Muito bom. Agradeço.

Agno Santiago
Agno Santiago - 29/03/2023 16:37

Estou no inicio dos estudos, mas gostei do seu artigo. Procuro conteudo de testes unitarios em Java! Se fizer algum assim, me avisa ; )

GF

Gustavo Flores - 05/03/2022 16:11

Me ajudou bastante a entender TDD, muito obrigado.

Moacir Alves
Moacir Alves - 23/05/2022 22:04

O teste é um das ferramentas que esta cada vez mais essencial no ambiente de desenvolvimento, a pessoa que possui essa experiência se destaca no comercio hoje.


Parabéns pelo conteúdo, ficou muito bom

Carlos Júnior
Carlos Júnior - 17/02/2022 13:08

Artigo muito bom!