61
Não tem teste? Já nasceu legado. Hedley Luna

Não tem teste ? Já nasceu legado

  • Upload
    gts-ce

  • View
    77

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Não tem teste ? Já nasceu legado

Não tem teste? Já nasceu legado.Hedley Luna

Page 2: Não tem teste ? Já nasceu legado

Quem?

·Graduado em Ciência da Computação - UECE ·Mestrando em Ciência da Computação - UECE ·Líder Técnico INSERT-UECE ·Agilista desde 2010 ·@hedlabel ·[email protected]

Page 3: Não tem teste ? Já nasceu legado
Page 4: Não tem teste ? Já nasceu legado

Agora sim...

Page 5: Não tem teste ? Já nasceu legado

Mas… o que é teste?

Page 6: Não tem teste ? Já nasceu legado

– Dicionário Aurélio

“Averiguação do funcionamento de algo.”

Page 7: Não tem teste ? Já nasceu legado

Mas, como?

Page 8: Não tem teste ? Já nasceu legado

l “na unha” “print/alert/console“ Teste automatizado

Teste unitário Teste de integração Teste de aceitação

Test Driven Development Behaviour Driven Development

Acceptance Test Driven Development Planilhas Checks

Caixa Preta Caixa Branca Caixa Cinza

etc… !!!!!!!!

Page 9: Não tem teste ? Já nasceu legado

Mas...

Page 10: Não tem teste ? Já nasceu legado

Tá pronto!(falta só testar….)

Page 11: Não tem teste ? Já nasceu legado

Mas, vale a pena…

Page 12: Não tem teste ? Já nasceu legado
Page 13: Não tem teste ? Já nasceu legado
Page 14: Não tem teste ? Já nasceu legado
Page 15: Não tem teste ? Já nasceu legado
Page 16: Não tem teste ? Já nasceu legado
Page 17: Não tem teste ? Já nasceu legado
Page 18: Não tem teste ? Já nasceu legado
Page 19: Não tem teste ? Já nasceu legado
Page 20: Não tem teste ? Já nasceu legado
Page 21: Não tem teste ? Já nasceu legado
Page 22: Não tem teste ? Já nasceu legado
Page 23: Não tem teste ? Já nasceu legado
Page 24: Não tem teste ? Já nasceu legado
Page 25: Não tem teste ? Já nasceu legado
Page 26: Não tem teste ? Já nasceu legado

–Agile Manifesto

“Continuous attention to technical excellence and good design enhances agility.”

Page 27: Não tem teste ? Já nasceu legado

Coisa de dev?

Page 28: Não tem teste ? Já nasceu legado

NÃO!

Page 29: Não tem teste ? Já nasceu legado

“Pair Testing"

Page 30: Não tem teste ? Já nasceu legado

–Agile Manifesto

“The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.”

Page 31: Não tem teste ? Já nasceu legado

public static int calculaSoma(int a, int b) { return 0; } !public static void main(String args[]) { System.out.println(“A soma deve ser 4. E foi: “ + calculaSoma(2,2); }

Page 32: Não tem teste ? Já nasceu legado

Testes Automatizados

·Qualquer teste que rode sem intervenção humana(ou com pouca) ·Porque? Velocidade(mesmo nos de aceitação)! ·Teste de regressão! ·Feedback rápido e contínuo(Karma, Infinitest…!) ·Não garante qualidade de código! ·Não garante “Clean Code” ·Integração Contínua e Entrega Contínua

Page 33: Não tem teste ? Já nasceu legado

“Padrão" de Testes

Page 34: Não tem teste ? Já nasceu legado

Teste Unitário

·eXtreme Programming! ·Teste a menor porção de código possível ·Deve ser simples e conciso = Isolado = Desacoplado ·Rápida execução ·Devem ser poucos por classe

Page 35: Não tem teste ? Já nasceu legado

!!

List(1, 2, 3, 4, 5) should contain oneOf (5, 7, 9) !!it("should pop values in last-in-first-out order") { val stack = new Stack[Int] stack.push(1) stack.push(2) assert(stack.pop() === 2) assert(stack.pop() === 1) }

Page 36: Não tem teste ? Já nasceu legado

Mocks

·Facilitar os testes ·Abstrair implementações complexas ·Mock !== Fake Object !== Stub ·Mock = Comportamento ·Legados!

Page 37: Não tem teste ? Já nasceu legado

@Mock private Gerenciador gerenciador; !@Test public void NaoDeveExcluirCasoExistamDocumentosVinculados() { when(gerenciador.documentosDo(“fulano”)).thenReturn("existeDocumento"); when(gerenciadorSaidas.buscarSaidas()).thenCallRealMethod(); !assertFalse(gerenciador.excluir("fulano")); }

Page 38: Não tem teste ? Já nasceu legado

Teste de Integração

lParafraseando Bruno Maomeh e Matheus Fechine: ·Se conversa com o DB, não é teste unitário ·Se comunica pela rede, não é teste unitário ·Se ele toca no sistema de arquivos, não é teste unitário ·Se ele não pode rodar junto de outro teste, não é teste unitário

·(Possível)Porta de entrada para testes em legados

Page 39: Não tem teste ? Já nasceu legado

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations= {"classpath:applicationContext-test.xml"}) @Transactional public class UsuarioServiceTest { ! @Autowired private UsuarioService usuarioService; ! @Test public void deveCarregarUsuarioJoao(){ Usuario usuario = usuarioService.carregaUm(usuarioJoao()); assertEquals(usuarioJoao(), usuario); }

Page 40: Não tem teste ? Já nasceu legado

Teste de Aceitação

·GUI testing ·Teste final de uma user story(ou similares) ·Lento, Custoso e Frágil ·Dev + Tester/Requisitos ·Caixa Preta

Page 41: Não tem teste ? Já nasceu legado

it('should add on service', function(){ element(by.model('service.identifier')).sendKeys('security'); element(by.model('service.function')).sendKeys('Security'); selectDropdownByNumber(element(by.id('serviceType')), 1); element(by.id('utilizationLevel')).sendKeys(protractor.Key.ENTER); element(by.id('btnAdd')).click(); services = element.all(by.repeater('row in renderedRows')); expect(services.count()).toEqual(QUANTITY_SERVICES + 1); });

Page 42: Não tem teste ? Já nasceu legado

TDD

·Testar !== TDD ·Baby Steps ·Rápido Feedback + Melhoria Contínua ·Design/Arquitetura de Código ·Regras de Negócio = “Pair Testing” === Compartilhamento de conhecimento

Page 43: Não tem teste ? Já nasceu legado

Fluxo TDD

Não escrevo código novo enquanto um teste não quebrar

Page 44: Não tem teste ? Já nasceu legado

BDD

·Similar ao TDD, mas numa linguagem mais próxima do negócio lVantagens do TDD + Traz o business mais perto do desenvolvedor ·Compartilhamento de Conhecimento ·É a “evolução do TDD”

Page 45: Não tem teste ? Já nasceu legado

!@Given("^Minha saudacao e \"([^\"]*)\"$") public void I_have_a_hello_app_with(String greeting) { hello = new Hello(greeting); } !@When("^Eu executo minha aplicacao$") public void I_ask_it_to_say_hi() { hi = hello.sayHi(); } !@Then("^Ela deveria responder com \"([^\"]*)\"$") public void it_should_answer_with(String expectedHi) { assertEquals(expectedHi, hi); }

Page 46: Não tem teste ? Já nasceu legado
Page 47: Não tem teste ? Já nasceu legado
Page 48: Não tem teste ? Já nasceu legado

ATDD

·Dev + QA/Tester/Requisitos/Business ·Especificações criadas durante a criação do backlog: Time + PO + Stakeholders(se necessário) ·Top-Down ou Bottom-Up? Não há consenso. ·Ponto de Vista do Usuário != Ponto de Vista do Código, logo TDD !== ATDD

Page 49: Não tem teste ? Já nasceu legado
Page 50: Não tem teste ? Já nasceu legado

Mais importante é… O que NÃO TESTAR!

Page 51: Não tem teste ? Já nasceu legado

–Refactoring: Improving the Design of Existing Code, 1999

“The key is to test the areas that you are most worried about going wrong. That way you get the most benefit for your testing effort. It is better to write and run incomplete tests than not to run complete tests”

Page 52: Não tem teste ? Já nasceu legado

–Agile Manifesto

“Simplicity--the art of maximizing the amount of work not done--is essential.”

Page 53: Não tem teste ? Já nasceu legado

“Novo” requisito =Novo Teste

= Refatoração

Page 54: Não tem teste ? Já nasceu legado

–Agile Manifesto

“Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.”

Page 55: Não tem teste ? Já nasceu legado

Por que nasceu legado?

·"Mais fácil re-escrever que refatorar" ·“Na minha máquina funciona!” ·“Funciona, só não sei porque…" ·Difícil de evoluir! Cadê a segurança? ·Nova feature === +10 Bugs(e que você só detecta em produção) ·Error prone!

Page 56: Não tem teste ? Já nasceu legado

Leituras Recomendadas

Page 57: Não tem teste ? Já nasceu legado

Livro de Cabeceira

Page 58: Não tem teste ? Já nasceu legado

Testes

Page 59: Não tem teste ? Já nasceu legado

Refactoring

Page 60: Não tem teste ? Já nasceu legado
Page 61: Não tem teste ? Já nasceu legado