Voce deve usar controladores de testes para testar?

MVC Diagram focused on Controller layer Um controlador de teste é uma forma de acessar funcionalidades diretamente em sua aplicação web sem a necessidade de seguir o fluxo padrão da aplicação: por exemplo, você pode querer acessar diretamente a tela de detalhes do cartão de crédito, então o que você faz é desenvolver um “controlador de detalhes do cartão de crédito” que define o estado desejado (um pedido e um cliente) e lhe exibe a tela de detalhes do cartão de crédito. O controlador de teste é acionado através de uma URL de teste e redireciona à página apropriada. Estes controladores de teste nem mesmo são implantados em produção, ou não são permitidos via roteamento em produção.


 Voce deveria usar controladores de testes para testar

Controladores de teste são feitos para tornar eficiente a leitura de testes de aceitação. Em vez de algo como:

Dado que estou na página inicial
Quando adiciono alguns produtos no meu carrinho
E forneço meus detalhes de cliente
E seleciono entrega expressa
Então devo ver a tela de detalhes do cliente
Quando submeto um número de cartão de crédito inválido
Então vejo um erro
E os detalhes do cartão de crédito estão limpos e devem ser reentrados

Isso pode simplesmente se tornar:

Dado que estou na página de detalhes do cartão de crédito
Quando submeto um número de cartão de crédito inválido
Então vejo um erro
E os detalhes do cartão de crédito estão limpos e devem ser reentrados

O passo Dado simplesmente chama o controlador de teste que configura o estado desejado e fornece a tela. O cenário é focado em testar uma única situação e não é dependente em um fluxo de processo para configurar o estado.

Controladores de teste também lhe permitem testar algo antes de outras coisas serem desenvolvidas. Por exemplo, no caso acima você poderia testar a tela de detalhes do cartão de crédito mesmo que a tela de seleção de entrega não estivesse desenvolvida. Contanto que o controlador de teste configure as coisas corretamente, ele lhe permite que teste histórias isoladamente, sem ter dependências de outras histórias de usuário, o que pode resultar em uma maior velocidade do time.

Voce não deveria usar controladores de testes para testar

Os controladores de teste configuram estados em sua aplicação web, o que pode ser diferente ao estado de usar a aplicação em si. Por exemplo, um controlador de teste  pode definir o método de entrega, mas pode configurá-lo diferente de como a tela de entrega faz, o que resulta em um comportamento inconsistente em sua aplicação e potencialmente falsos positivos. Isso leva a falhas onde você não tem certeza se é um bug na aplicação, ou somente o próprio controlador de teste.

Os usuários não utilizam controladores de teste, portanto, você não deveria usar. Pode ser conveniente pular para uma determinada página, mas o teste é muito mais sobre a jornada como um destino, então pular direto pode significar que você perca erros importantes ao longo do caminho.


Meus 50 centavos:

“Testes funcionais ou end-to-end tests são os últimos testes que devemos nos preocupar na pirâmide de testes, portanto, se o time focar nos testes que sustentam a pirâmide (teste de unidade e testes de integração), não há grandes problemas no uso de controladores de testes, do ponto de vista que não se está percorrendo o real fluxo que o usuário faria, visto que estas integrações já estão sendo testadas em outra camada.”

“Algumas aplicação são difíceis de testar na camada de unidade e precisam de um grande número de testes funcionais automatizados, os quais as vezes são demorados de serem executados, neste caso, tais controladores de teste podem ajudar muito a diminuir o tempo de execução desses testes. Algumas técnicas para implementar tais controladores são requisições HTTP simuladas que retornam um estado esperado ou até mesmo o uso de seeds (sementes) para inicializar o banco de dados em um determinado estado.”

“Teste automatizado também é softwares e sua arquitetura deve ser adaptada às necessidades (do projeto, de experiência do time, de prazos, de custos, etc), portanto, decida sobre o uso ou não de controladores pensando em todas as variáveis que o afetam.”


 TRADUÇÃO/ADAPTAÇÃO DE PRIDE AND PARADE, DE ALISTER SCOTT
Anúncios

2 comentários em “Voce deve usar controladores de testes para testar?

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