Tenho 6 meses de experiência em desenvolvimento Rails. Eu construí um aplicativo da web que está em uso agora com autenticação e autorização e banco de dados postgresql.
Estou passando para meu segundo aplicativo Rails, mas desta vez, depois das lições aprendidas, gostaria de desenvolvê-lo usando TDD, pois percebi que é muito mais fácil escalá-lo e corrigir bugs. É lento para se desenvolver, mas no longo prazo é muito mais fácil de lidar.
Já ouvi falar de Rspec e Cucumber, mas estou completamente confuso com eles.
Gostaria de saber qual é a diferença entre RSpec e Cucumber e para que são utilizados.
Também seria útil saber se, da perspectiva de um iniciante (que também é o único desenvolvedor), uma estrutura de teste é realmente necessária.
Respostas:
RSpec e Cucumber são ambos frameworks de teste. RSpec inclui o Teste de Unidade tradicional (o que significa testar uma classe ou parte do aplicativo isoladamente do resto do aplicativo. Portanto, seu modelo faz o que seu modelo deve fazer, o controlador faz o que deve fazer, etc).
RSpec e Cucumber são usados para Teste de Aceitação (que é chamado ATDD, BDD, Especificação por Exemplo, etc. dependendo de quem você perguntar). Estes são testes de integração orientados para o caso de negócios, o que significa que eles simulam a maneira como um usuário usa o aplicativo e usa a pilha Rails completa, de forma que problemas com a maneira como as diferentes partes de seu aplicativo funcionam juntas podem ser encontrados de uma forma que os testes de unidade não encontrar.
A principal diferença entre RSpec e Cucumber é o fator de legibilidade do negócio. O principal atrativo do Cucumber é que a especificação (recursos) são separados do código de teste, de modo que os proprietários do produto podem fornecer ou revisar a especificação sem ter que vasculhar o código. Estes são os arquivos .feature que você cria no Cucumber. RSpec tem um mecanismo semelhante, mas em vez disso, você descreve uma etapa com um bloco Descrever, Contexto ou It que contém a especificação de negócios e, em seguida, imediatamente tem o código que executa essa instrução. Essa abordagem é um pouco mais fácil para os desenvolvedores trabalharem, mas um pouco mais difícil para pessoas não técnicas.
Qual usar? Se você for o único desenvolvedor e proprietário do produto, eu ficaria com RSpec, acho que é mais fácil para um técnico entender, oferece algumas vantagens em manter as coisas com escopo definido e sob controle e mantê-lo fora de confusão com RegExs para teste passos. Se você estiver construindo isso para um cliente, e ele for prático em relação à Especificação, vá com Cucumber para seu Teste de Aceitação e use RSpec para Testes de Unidade.
Apenas para demonstrar a principal diferença entre os dois:
Pepino:
Rspec
Esta série de blog é excelente para começar a usar o RSpec.
fonte