01 Dez 2019 - Alison Souza
Sobre como automatizar testes usando Ruby on Rails.
Talvez você ainda não esteja aplicando TDD (Test Driven Development), não considero um requisito, mas será mais fácil pensar na automação quando o ciclo proposto pelo TDD for aplicado.
Testes unitários São testes que verificam os critérios de aceite para um trecho de código específico. São criados para se certificar que partes do seu sistema estão funcionando corretamente. Ao escrever testes unitários, estes serão uma das partes mais importantes do desenvolvimento de uma aplicação.
Não apenas porque:
E também porque:
Os benefícios podem depender do tamanho da sua cobertura de código. Acredito que quanto maior a cobertura de código, mas eficientes os testes podem ser. Contudo, esta não é uma opnião unanime. Interessante ter qualidade nos testes e buscar não a apenas a cobertura de linhas de código, mas também a cobertura dos cenários de testes.
Ponderando que seus testes podem seguir o conceito de pirâmide de Mike Cohn, as ferramentas abaixo irão apoiar.
Mais do que uma forma de criar testes de unidade, RSpec fornece uma forma de criar especificações executáveis do código.
Com o RSpec também é possível aplicar o BDD (Behaviour-Driven Development). Isso porque ao escrever o teste estaremos pensando no comportamento esperado para nosso código.
Para usar são necessários dois passos. Instalar a gem e configurar sua aplicação.
gem install rspec
Adicione no GemFile
group :development, :test do
gem 'rspec-rails', '~> 3.0'
end
Gerar specs
rails generate rspec:install
Outra vantagem do Rspec é a geração de relatórios. Imagine a cada commit gerar uma visão do que esta funcionando ou parou de funcionar?
rspec -f h -o rspec_report.html
Os testes unitários podem/devem cobrir o MVC ao também conseguir aplicar testes nas views (html).
Importante, o simples fato de usar a técnica do BDD não trará a automação.
O Cucumber não é apenas uma ferramenta de testes, mas também uma ferramenta para documentação de requisitos que permite a execução e automação de testes. Requisitos que foram escritos em formato de histórias do usuário. Ao executar testes sobre um requisito podemos estar validando mais de uma funcionalidade de uma vez.
Gosto do Selenium IDE. Com razoável facilidade é possível realizar testes de integração.
Além de auxiliar nos testes também me ajuda durante o desenvolvimento ao preencher os formulários extensos ou com muitas etapas.
Com maior facilidade é possível exportar para o RSpec e conseguir a automação.
E como saber se a minha cobertura de código é suficiente? Uma solução é usarmos uma ferramenta de avaliação de código estático. O simplecov pode ser associado ao Rspec gerando relatórios intuitivos e relevantes.
O assunto é extenso e vou parar aqui. Pretendo em artigos futuros abordar como escrever testes em cada ferramenta. Começar ao menos com o Rspec é uma boa alternativa e não exigirá muito.
Para ir além