Todas as abordagens de testes dentro do ágil

11,255 views

Published on

Palestra apresentada dia 10/11/2012 no Rio Agile Talks (@rioagile) mostrando a importância do Agile Testing e das visões que mudam sobre modelos, como o quadrande de Brian Merick que pode ser mudado/atualizado pelo novo uadrante proposto por Elisabeth Hendrickson, mas onde uma coida não muda: a pirâmide de automação de teste

Published in: News & Politics
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
11,255
On SlideShare
0
From Embeds
0
Number of Embeds
7,730
Actions
Shares
0
Downloads
141
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Todas as abordagens de testes dentro do ágil

  1. 1. Todas as abordagens de testedentro do ágil! @eliasnogueira
  2. 2. Elias Nogueira Tester, professor http://about.me/eliasnogueira @eliasnogueira TDC - The Developers Conference TestDay Jenkins User Conference – São Paulo
  3. 3. Nós fizemos o deploy em produção esta manhã!
  4. 4. Os testes irão levar 4 dias para executarem... Em 4 dias eu retorno com o resultado!
  5. 5. Agile Testing
  6. 6. Agile Testing Agile Testing é uma prática de Teste de Software que segue os princípios do desenvolvimento ágil
  7. 7. Agile Testing Feedback contínuo Entrega de valor ao cliente Comunicação face-to-face Coragem Simplicidade Resposta a mudanças Auto-organização Foco em pessoas
  8. 8. Como a maioria dos “Agile Testers” são hoje!
  9. 9. Testadores hoje Não sabem o que é Ágil Não sabem programar O desenvolvedor é seu maior inimigo Programador frustrado ou querendo ser BA Não querem “passar trabalho”
  10. 10. Separação clara dos papéis Desenvolvedores ágeis são “test infected” Agile Testers e Desenvolvedores colaboram Agile Testers colaboram com o usuário TODO O TIME é responsável por teste! Todos devem entender do negócio AUTOMATIZAM!!!
  11. 11. http://www.shino.de/2012/07/30/the-testing-quadrants-we-got-it-wrong/
  12. 12. Pirâmide de Automação de Teste
  13. 13. Inicio da entrada da qualidade no produtoTem um suporte de refatoraçãoÉ a base de uma suíte de automaçãoTODO O TIME é responsável por teste!Todos devem entender do negócio
  14. 14. Build Tools • Judson/JenkinsUnit Test Tools • xUnit • Mocking
  15. 15. Testar os serviços da aplicação sem UIPreenche o gap entre Unit x UIDescrita de uma forma clara para o clienteTanto tester quanto dev podem criarPodemos referencia-lo como “integração” • API Test • Integration Test • Component Test
  16. 16. BDD Tools • Cucumber • Jbehave • SpecFlowUnit Test Tools • xUnitFixture Tools • Fitnesse
  17. 17. Teste da UI / E2EFocar em smoke testsMais caro e mais frágilDesenvolvido no final do ‘done; de testeUsualmente fácil para testadores ágeis
  18. 18. ATDD Tools • Selenium • Robot Framework
  19. 19. TDD – Test Driven Development
  20. 20. TDD – Test Driven Development Pequeno mal entendido Sou pago pra desenvolver, não testar “Done” é quando eu dou checkin Todos conhecem o código O projeto é curto Não há cliente
  21. 21. BDD – Behavior Driven Development BDD pode ser visto como uma técnica de desenvolvimento ágil que encoraja colaboração entre os desenvolvedores, analistas, QA e o pessoal não técnico (stackeholders) para o sucesso de um projeto Éder Ignatowicz (@ederig)
  22. 22. BDD – Behavior Driven Development BDD pode ser visto como uma técnica de desenvolvimento ágil que encoraja colaboração entre os desenvolvedores, analistas, QA e o pessoal não técnico (stackeholders) para o sucesso de um projeto
  23. 23. BDD – Behavior Driven Development O suficiente é o suficiente Entregar valor para os stackholders Tudo é comportamento
  24. 24. BDD – Behavior Driven Development User Story Feature: <description of the feature> As a <user/actor> I want <goal to be achieved> so that <the reason you want to achieve the goal> Funcionalidade: <descrição da funcionalidade> Como um <usuário/ator> Eu quero <meta a ser alcançada> De modo que <a razão para alcançar a meta>
  25. 25. BDD – Behavior Driven Development Acceptance Criteria Scenario: <description of the test> Given <a known state> When <an event occurs> Then <then this should happen> Cenário: <descrição do teste> Dado <um estado conhecido> Quando <um determinado evento ocorre> Então <isso deve ocorrer>
  26. 26. BDD – Behavior Driven Development Funcionalidade: Leitor de tipos de Triângulo Para conhecer o tipo de um triângulo Como um aluno da matemática Eu quero informar os tamanhos do lado de um triângulo e saber qual seu tipo NARRATIVA Um triângulo com todos os lados iguais é chamado Equilátero Um triângulo com dois lados iguais é chamado Isósceles Um triângulo com todos os lados diferentes é chamado Escaleno FORA DE ESCOPO - Validar triângulos inválidos - Exibir o triangulo graficamente - Validação de entrada de dados do usuáriohttp://www.bugbang.com.br/entendendo-bdd-com-cucumber-parte-i/
  27. 27. BDD – Behavior Driven Development Cenário: Consultando um triangulo Escaleno Dado que eu estou na página de consulta de triângulos Quando quando eu informo os lados do triangulo | lado1 | lado 2 | lado 3 | | 3 | 4 | 5 | Então o sistema informa que o triangulo é “Escaleno”
  28. 28. ATDD – Acceptance Test Drive Development ATDD é uma prática onde todo o time, colaborativamente, discute critérios de aceitação através de exemplos antes de começar o desenvolvimento. Também garante que todos tenham a mesma definição do done.
  29. 29. ATDD – Acceptance Test Drive Development
  30. 30. ATDD – Acceptance Test Drive Development Exemplo Os usuários agora precisam utilizar senhas seguras (string de, no mínimo, 6 caracteres com pelo menos uma letra, um número e um símbolo)
  31. 31. ATDD – Acceptance Test Drive DevelopmentDiscutir o requisitoDurante uma reunião de planejamento O que acontece se o usuário inserir uma senha não segura? E se o usuário colocar um espaço? Como fica as contas já existentes?
  32. 32. ATDD – Acceptance Test Drive DevelopmentDestilar em um formato amigávelPensando em um formato para ferramenta Teste: Validar senhas válidas e inválidas Ação Argumento O teste deve ser válido p@ssw0rd O teste deve ser válido @@@000dd O teste deve ser válido p@ss w0rd O teste deve ser inválido password O teste deve ser inválido p@ss3 O teste deve ser inválido passw0rd O teste deve ser inválido @@@000
  33. 33. ATDD – Acceptance Test Drive DevelopmentDesenvolver o códigoImplementação em qualquer formato public class ValidateLoginPage { WebDriver driver; public String loginValidation(String username, String password) { driver.findElement(By.id(“user”)).sendKeys(username); driver.findElement(By.id(“passwd”).sendKeys(password); driver.findElement(By.id(“submit”).click(); String result = driver.findElement(By.cssSelector(“result”)).getText() } }
  34. 34. ATDD – Acceptance Test Drive DevelopmentDesenvolver o códigoImplementação em qualquer formato public class TestLogin { WebDriver driver = new FirefoxDriver(); @Test (dataProvider = ”data") public String testAllScenarios (String username, String password, String result) { ValidateLoginPage testLogin = new ValidationLoginPage(driver); String result = testLogin.loginValidation(username, password); Assert.assertEquals(expected, result); } @DataProvider(name = ”data”) public Object[][] createData() { Object[][] obj ={{”fred","p@ssw0rd",”Valid Password"}, {{”jack","passw0rd",”Invalid Password!”} }
  35. 35. ATDD – Acceptance Test Drive DevelopmentDemostrar o testeExecução do teste em ambiente controlado
  36. 36. Mas cadê o topo da pirâmide?
  37. 37. Testes ExploratóriosSimultâneamente ....... aprender sobre o software... desenvolver mais testes... executar testesUsando o feedback do último teste paraexecutar o próximo!
  38. 38. Todos os testes unitários Essa user story dePassaram com sucesso! segurança passou nos meusA build está OK! teste de aceitação! Alguém já se deu conta que o usuário pode colocar ele mesmo como administrador?
  39. 39. SBT - Session Based TestingCharter Explorar áreas/features [com recursos, condições , restrições] para descobrir informação Explorar o site em diversos browsers e configurações para descobrir riscos relacionados a configurações não suportadas
  40. 40. SBT - Session Based TestingCharter Descrição e objetivo Tempo Área de Concentração Setup Observações Bugs

×