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

TDD e BDD na prática Construa aplicações Ruby usando RSpec e Cucumber

Hugo Baraúna, Philippe Hardardt

*Você terá acesso às futuras atualizações do livro.

Conteúdo

Saber fazer testes automatizados é uma habilidade essencial para todo mundo que desenvolve software atualmente. Como devo escrever testes que ajudem a garantir o funcionamento do meu código? Organizar seus testes e saber aplicar TDD (Test-Driven Development) e BDD (Behavior-Driven Development) devidamente é um conhecimento que você pode usar em várias linguagens de programação. Para Ruby, dentre as ferramentas mais famosas para fazer isso estão o RSpec e o Cucumber.

Neste livro, Hugo Baraúna e Philippe Hardardt apresentam desde os fundamentos para escrever um teste que vá ajudar você a garantir a qualidade do seu software, até tópicos mais avançados, tais como: usar testes automatizados para ajudar no design do seu código, com TDD e BDD; a diferença entre mocks e stubs, quando usar um ou outro; como criar uma documentação executável do seu software e como isso pode ser útil.

Saiba o que você vai aprender

 

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 Conhecendo o 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
  • 4 Organização, refatoração e reúso 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 Reúso de testes
  • 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 Verified doubles
  • 6 Conhecendo o Cucumber
  • 6.1 Por que usar Cucumber?
  • 6.2 Visão geral de Cucumber
  • 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
  • 8 Automatizando especificações com Cucumber
  • 8.1 Escrevendo os primeir
  • os step definitions
  • 8.2 Escrevendo step definitions para cenários expressivos
  • 8.3 Support code
  • 8.4 Cucumber World
  • 8.5 Usando Cucumber hooks
  • 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 versus cenários declarativos
  • 9.4 Organizando os arquivos da minha especificação executável
  • 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
  • 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
  • 12 Finalizando a primeira funcionalidade
  • 12.1 Deixando o segundo cenário no verde
  • 12.2 Finalizando a primeira funcionalidade
  • 13 Refatorando nosso código
  • 13.1 Identificando os pontos a serem refatorados
  • 13.2 Extraindo uma classe de um método privado
  • 13.3 Distribuindo responsabilidades para outras classes
  • 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
  • 15 Finalizando 15 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
  • 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
  • 17 Referências bibliográficas

Autores

Hugo Baraúna

Hugo Baraúna fundou a Plataformatec, empresa de consultoria de software especializada em Ruby, agile e Elixir. A Plataformatec foi a empresa que criou a linguagem Elixir. Também foi uma referência nacional e internacional no mundo Ruby, devido principalmente a seus projetos open source, como Devise e Simple Form. Hugo se formou em Engenharia de Computação pela Politécnica da USP e tem um MBA pelo Insper. Atualmente, ele mora em São Paulo com sua esposa e seus dois gatinhos.

Philippe Hardardt

Philippe Hardardt trabalha com desenvolvimento de software desde 2008 e já experimentou muitas linguagens de programação diferentes, desde ASP até Clojure. Tem um interesse especial por tópicos que se aplicam a qualquer tecnologia, como testes automatizados. Teve a oportunidade de trabalhar na Plataformatec até sua aquisição pelo Nubank, onde trabalha atualmente.

Dados do produto

Número de páginas:
429
ISBN:
978-65-86110-29-6

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter