Use o código e tenha 10% de desconto!

Cucumber e RSpec Construa aplicações Ruby com testes e especificações

Hugo Baraúna

Conteúdo

Todo o desenvolvedor Ruby precisa saber testar suas aplicações. Ruby é, sem dúvida, uma das linguagens mais produtivas que existem e, quando aliada ao poderoso framework Rails, nos permite criar aplicações complexas de forma muito rápida. Porém, é preciso garantir que essas aplicações continuem de fácil manutenção com o passar do tempo e que tenhamos um código de qualidade. Por isso, é primordial que qualquer rubista saiba testar suas aplicações.

O Cucumber e o RSpec fornecem ao desenvolvedor as ferramentas necessárias para criar uma aplicação robusta e bem testada, onde você pode seguir tanto o TDD como o BDD. Neste livro, Hugo Baraúna, experiente desenvolvedor Ruby, ensina como você pode criar suas aplicações Ruby de forma testável e sem complicações.

 

Sumário

  • 1 Visão geral sobre TDD
  • 1.1 TDD e sua história
  • 1.2 E por qual motivo eu deveria usar TDD?
  • 2 Primeiros passos com RSpec e Cucumber
  • 2.1 Olá RSpec
  • 2.2 Olá Cucumber
  • 2.3 O que é BDD?
  • 3 Introdução ao básico do RSpec
  • 3.1 Aprendendo a estrutura básica de um teste com RSpec
  • 3.2 Por que existem tantos matchers no RSpec
  • 3.3 Conhecendo os RSpec built-in matchers
  • 3.4 Custom matchers
  • 3.5 Entendendo o protocolo interno de matcher do RSpec
  • 3.6 Pontos-chave deste capítulo
  • 4 Organização, refatoração e reuso de testes com o RSpec
  • 4.1 Reduzindo duplicação com hooks do RSpec
  • 4.2 DRY versus clareza nos testes
  • 4.3 After hook
  • 4.4 Around hook
  • 4.5 Organizando seus testes
  • 4.6 Reuso de testes
  • 4.7 Pontos-chave deste capítulo
  • 5 Mocks e stubs
  • 5.1 Por que preciso de mocks?
  • 5.2 Conhecendo o conceito de test doubles
  • 5.3 Usando stubs com RSpec
  • 5.4 Escrevendo mock expectations com RSpec
  • 5.5 Quando usar mock e quando usar stub
  • 5.6 Usando o método double para fazer testes isolados
  • 5.7 Pontos-chave deste capítulo
  • 6 Conhecendo o Cucumber
  • 6.1 Por que usar cucumber?
  • 6.2 Cucumber como estímulo de conversa sobre os requisitos
  • 6.3 Cucumber: especificação e testes juntos!
  • 6.4 Cucumber para construir uma documentação viva
  • 6.5 Visão geral de cucumber
  • 6.6 Pontos-chave deste capítulo
  • 7 Especificando funcionalidades com Cucumber
  • 7.1 Instalando e fazendo setup do Cucumber
  • 7.2 Estrutura de uma feature com cucumber
  • 7.3 Escrevendo um cenário
  • 7.4 Escrevendo cenários expressivos com Cucumber
  • 7.5 Pontos-chave deste capítulo
  • 8 Automatizando especificações com cucumber
  • 8.1 Escrevendo os primeiros step definitions
  • 8.2 Escrevendo step definitions para cenários expressivos
  • 8.3 Support code
  • 8.4 Cucumber World
  • 8.5 Usando Cucumber hooks
  • 8.6 Pontos-chave deste capítulo
  • 9 Boas práticas no uso de Cucumber
  • 9.1 Use e abuse das descrições da funcionalidade e dos cenários
  • 9.2 Evite detalhes desnecessários
  • 9.3 Cenários imperativos VS cenários declarativos
  • 9.4 Organizando os arquivos da minha especificação executável
  • 9.5 Pontos-chave deste capítulo
  • 10 BDD na prática, começando um projeto com BDD
  • 10.1 Definindo o escopo da nossa aplicação: Jogo da Forca
  • 10.2 Especificando uma funcionalidade com Cucumber
  • 10.3 Usando RSpec no nosso primeiro teste
  • 10.4 Usando Aruba para testar uma aplicação CLI
  • 10.5 Reutilizando step definitions de um modo melhor
  • 10.6 Pontos-chave deste capítulo
  • 11 Começando o segundo cenário
  • 11.1 Definindo o segundo cenário
  • 11.2 Reduza duplicação através de support code
  • 11.3 Implementando o fluxo do jogo no binário
  • 11.4 Modificando nosso cenário para receber o feedback correto
  • 11.5 Usando subject e let do RSpec para evitar duplicação nos testes
  • 11.6 Refatorando o código para poder implementar o segundo cenário
  • 11.7 Extraindo uma classe através de refatoração
  • 11.8 Possibilitando ao jogador terminar o jogo no meio
  • 11.9 Pontos-chave deste capítulo
  • 12 Finalizando a primeira funcionalidade
  • 12.1 Deixando o segundo cenário no verde
  • 12.2 Finalizando a primeira funcionalidade
  • 12.3 Pontos-chave deste capítulo
  • 13 Refatorando nosso código
  • 13.1 Identificado os pontos a serem refatorados
  • 13.2 Extraindo uma classe de um método privado
  • 13.3 Distribuindo responsabilidades para outras classes
  • 13.4 Pontos-chave deste capítulo
  • 14 Especificando a segunda funcionalidade
  • 14.1 Documentando especificação e critério de aceite com Cucumber
  • 14.2 Definindo o teste de aceitação do primeiro cenário
  • 14.3 Melhore a testabilidade do seu software
  • 14.4 Pontos-chave deste capítulo
  • 15 Finalizando a segunda funcionalidade
  • 15.1 Refatorando nosso jogo para ter uma máquina de estados
  • 15.2 Refatorando o fluxo do jogo para usar a máquina de estados
  • 15.3 Organizando seus testes otimizando para leitura
  • 15.4 Interface discovery utilizando test doubles
  • 15.5 Finalizando a funcionalidade Adivinhar letra
  • 15.6 Pontos-chave deste capítulo
  • 16 Finalizando nosso jogo
  • 16.1 Especificando o fim do jogo
  • 16.2 Jogador vence o jogo
  • 16.3 Jogador perde o jogo
  • 16.4 Próximos passos

veja mais detalhes

Autor

Hugo Baraúna

Hugo Baraúna é cofundador da Plataformatec, empresa de consultoria em desenvolvimento de software especializada em Ruby e Rails. A Plataformatec é referência nacional e internacional no mundo Ruby, devido principalmente a seus projetos open source e sua colaboração com a comunidade. Ele atua tanto na direção da empresa quanto como desenvolvedor, tendo participado de projetos de consultoria, coaching e testes de carga. Hugo formou-se em Engenharia de Computação pela Politécnica da USP em 2010. Durante a faculdade, passou pelo laboratório USP-Microsoft e por empresas como Procwork e IBM. Para ele, só é possível fazer produtos e serviços de qualidade quando se ama o que faz. Está no Twitter como @hugobarauna.

Dados do produto

Número de páginas:
438
ISBN:
978-85-66250-34-3

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter