Elemar DEV

Tecnologia e desenvolvimento

Escreva testes de unidade E testes funcionais

Olá. Tudo certo?!

Testes de unidade são muito importantes. Afinal, com eles, testamos se nossas classes (e métodos) estão implementados adequadamente.

Testes de unidade também são importantes porque nos ajudam a identificar problemas de acoplamento. Indicam a necessidade prática de implementar IoC facilitando DI. Além disso, nos “lembram” de programar para interfaces no lugar de implementações concretas.

Testes de unidade são indicativos de que estamos fazendo certo as coisas.

Entretanto, testes de unidade não são adequados para demonstrar que nosso sistema, “montadinho”, está funcionando de acordo. Além disso, testes de unidade não nos ajudam, necessariamente, a produzir boas interfaces públicas, de nossas bibliotecas, para nossos clientes (outros desenvolvedores). Para atender essas necessidades, devemos escrever testes funcionais.

Testes funcionais são indicativos de que estamos fazendo as coisas certas.

Percebeu a diferença?

Testes funcionais verificam se as unidades do sistema estão funcionando bem juntas.

Examinando o código fonte do Entity Framework, por exemplo, percebemos que há um extenso conjunto de testes de unidade E um extenso conjunto de testes funcionais.

funcionais

Testes funcionais podem ser incrivelmente mais simples de escrever. Principalmente, em sistemas legados.

Compartilhando uma experiência pessoal, na empresa, há algum tempo, estou trabalhando em um compilador. Como podem imaginar, o processo de compilação é resultado da execução correta de um conjunto considerável de unidades. Apenas para ilustrar parte do meu escopo, há:

  • pré-processadores;
  • analisador léxico/sintático;
  • analisador semântico;
  • elementos da AST;
  • otimizadores;
  • geradores de código intermediário;
  • geradores de código executável.

Obviamente, todos esses elementos são testados como unidade. Entretanto, considero indispensável escrever testes funcionais que “passam” por todas unidades executando completamente o processo de compilação.

Enfim, considero fundamental a escrita de testes de unidade E testes funcionais. Você não acha?

O que aprendi vendo projetos Open Source como o Entity Framework? Além de escrever esses dois tipos de teste, devo isso identificar claramente. Em casos mais complexos, criando projetos separados. Em casos mais simples, usando namespaces.

Era isso.

4 comentários em “Escreva testes de unidade E testes funcionais

  1. E vale indicar dois excelentes livros que tratam desse assunto:
    – Growing Object-Oriented Software, Guided by Tests
    – Specification by Example: How Successful Teams Deliver the Right Software

  2. Rafael Ponte
    07/03/2013

    Oi Elemar,

    O que você considera “testes funcionais”? Seria os testes de integração?

  3. Matheus
    07/03/2013

    Testes de integração dão mais trabalho, mas são muito necessários, pois as vezes um teste de unidade não expressa muita coisa, você acaba por testar absolutamente nada.
    Quando chego nesse ponto penso em duas possibilidades, “não preciso testar isso”, ou “preciso de um teste de integração”.
    As vezes as pessoas falam “ah mais eu não preciso testar framework/biblioteca x ou y, eu sei que ele funciona”.
    O framework funciona, mas a integração do seu código com ele talvez não funcione como o esperado.
    “Testes funcionais dão mais trabalho” ->
    Testes de integração se tornam mais fáceis se você fez os testes de unidade primeiro, que é o T.D.D.. As vezes até eu me confundo:

    Testes de Unidade != T.D.D.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado às 07/03/2013 por em Post e marcado .

Estatísticas

  • 643,399 hits
%d blogueiros gostam disto: