No projecto que estou envolvido temos a obrigação de manter uma percentagem muito elevada de cobertura por testes unitários e desde à algum tempo que tenho vindo a desafiar os meus colegas sobre este assunto, o que temos e o que não temos que testar no nosso software.
Muitos de vós irão dizer sem pensar: "Temos que testar tudo!", mas, aqui é que reside o problema, o que é tudo?
Será que esse tudo quer dizer que devo testar se a minha ViewModel tem o [ImportingConstructor] no constructor ou se tem o [Export] na class, ou ainda se todas as propriedades tem o "OnPropertyChange"?
Outros que testam classes que são gateways entre o client side e o server side que o fazem é testar que o método é chamado com os mesmos parametros recebidos, será que estão a trazer valor acrescentado aos nossos testes ou estaremos só a aumentar a coverage dos testes para nosso regorzijo?
Outro ponto que queria tocar é que por vezes para testar duas linhas de código que escrevemos em 30s, demoramos 20 minutos ou mais a preparar o teste. Será que este teste vale a pena ser escrito?
Não quero com estas palavras que pensem que eu sou contra os testes unitários, muito pelo contrário. O que acho é que há limites para o que devemos ou não testar e se estamos a perder mais tempo a preparar testes que a programar, algo vai mal na arquitectura da nossa solução.
Agradeço os Vossos comentários.
Paulo Aboim Pinto
1 comment:
Excelente questão difícil resposta também vou ficar à espera dos comentários.
Post a Comment