Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Fantasia dos Testes de Integração

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

A Fantasia dos Testes de Integração

Testes de Integração são uma farsa e você provavelmente está escrevendo 2-5% dos testes que você realmente deveria. Sem contar que seus Testes de Integração provavelmente estão duplicados. Aprenda duas formas de atacar o problema: Testes de Colaboração e Testes de Contrato.

Avatar for Lukas Alexandre

Lukas Alexandre

April 27, 2013
Tweet

Other Decks in Programming

Transcript

  1. Testes de Integração - 101 Depende de multiplos objetos; Múltiplos

    comportamentos interessantes; Monday, May 27, 13
  2. Testes de Integração - 101 Depende de multiplos objetos; Múltiplos

    comportamentos interessantes; Depende de mais de um método ou função não relacionados; Monday, May 27, 13
  3. Testes de Integração - 101 Depende de multiplos objetos; Múltiplos

    comportamentos interessantes; Depende de mais de um método ou função não relacionados; End2End tests são testes de integração. Monday, May 27, 13
  4. Teste Unitário - 101 Micro teste / Teste de foco;

    Único comportamento sob o seu controle; Monday, May 27, 13
  5. Verifica uma entidade ou comportamento interessante; NÃO testa multiplas entidades

    ou comportamentos ao mesmo tempo; Teste Unitário - 102 Monday, May 27, 13
  6. it 'has a single jedi order associated' do luke.jedi_order =

    jedi_council luke.save.must_equal true first_jedi = Jedi.first first_jedi.jedi_order.wont_be_nil first_jedi.jedi_order_id.must_be_instance_of Fixnum first_jedi.jedi_order.must_be_instance_of JediOrder end Monday, May 27, 13
  7. it 'has a single jedi order associated' do luke.jedi_order =

    jedi_council luke.save.must_equal true first_jedi = Jedi.first first_jedi.jedi_order.wont_be_nil first_jedi.jedi_order_id.must_be_instance_of Fixnum first_jedi.jedi_order.must_be_instance_of JediOrder end it 'has_one padawan' do qui_gon_jinn.save obi_wan_kenobi_padawan.save qui_gon_jinn.padawan = obi_wan_kenobi_padawan qui_gon_jinn.padawan.must_equal obi_wan_kenobi_padawan qui_gon_jinn.padawan.must_be_instance_of Padawan end Monday, May 27, 13
  8. Problemas!! Feedback lento; Custo da correção aumenta; Você para de

    rodá-los; Começa a rodar subsets; Monday, May 27, 13
  9. Problemas!! Feedback lento; Custo da correção aumenta; Você para de

    rodá-los; Começa a rodar subsets; Falsa sensação de segurança; Monday, May 27, 13
  10. Qualidade do código Setup excessivo (arrange, act, assert) it 'has

    many jedis associated' do jedi_council.save yoda.jedi_order = jedi_council yoda.save Jedi.create name: 'Qui-Gon Jinn', age: 37, midi_chlorians: '3k', jedi_order: jedi_council luke.save jedis = jedi_council.jedis jedis.count.must_equal 2 jedis.first.must_be_instance_of Jedi end Monday, May 27, 13
  11. De quantos testes você Precisa?!?! Produto dos caminhos; Ex: 1

    clusters com 3 objetos, com 3, 4, 5, caminhos respectivamente, precisa de 60 testes; Monday, May 27, 13
  12. De quantos testes você Precisa?!?! Produto dos caminhos; Ex: 1

    clusters com 3 objetos, com 3, 4, 5, caminhos respectivamente, precisa de 60 testes; Progressão é combinatória. Monday, May 27, 13
  13. A realidade... 2! = 2 10! =~ 4kk Você vai

    escrever 2k testes Monday, May 27, 13
  14. A realidade... 2! = 2 10! =~ 4kk Você vai

    escrever 2k testes 2k/4kk = 0.05% (menos de 1%) Monday, May 27, 13
  15. A realidade... 2! = 2 10! =~ 4kk Você vai

    escrever 2k testes 2k/4kk = 0.05% (menos de 1%) Escolhendo os testes (20%~80%) Monday, May 27, 13
  16. Eu consigo lidar com as suas respostas?? Eu faço as

    perguntas certas aos meus colaboradores?? Monday, May 27, 13
  17. Eu consigo lidar com as suas respostas?? Eu faço as

    perguntas certas aos meus colaboradores?? TESTE DE COLABORAÇÃO Monday, May 27, 13
  18. Eu compreendo a pergunta que você fez? Eu respondo da

    forma que você espera? Monday, May 27, 13
  19. Eu compreendo a pergunta que você fez? Eu respondo da

    forma que você espera? TESTE DE CONTRATO Monday, May 27, 13