todas as abordagens de testes dentro do ágil

48
Todas as abordagens de teste dentro do ágil! @eliasnogueira

Upload: elias-nogueira

Post on 28-May-2015

8.959 views

Category:

News & Politics


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Todas as abordagens de testes dentro do ágil

Todas as abordagens de teste dentro do ágil!

@eliasnogueira

Page 2: Todas as abordagens de testes dentro do ágil

Elias NogueiraTester, professor

http://about.me/eliasnogueira@eliasnogueira

TDC - The Developers ConferenceTestDayJenkins User Conference – São Paulo

Page 3: Todas as abordagens de testes dentro do ágil

Nós fizemos o deploy em produção esta manhã!

Page 4: Todas as abordagens de testes dentro do ágil

Os testes irão levar 4 dias para executarem...Em 4 dias eu retorno com o resultado!

Page 5: Todas as abordagens de testes dentro do ágil

Agile Testing

Page 6: Todas as abordagens de testes dentro do ágil

Agile Testing

Agile Testing é uma prática de Teste de Software que segue os princípios do desenvolvimento ágil

Page 7: Todas as abordagens de testes dentro do ágil

Agile Testing

Feedback contínuoEntrega de valor ao cliente

Comunicação face-to-face

Coragem

Simplicidade

Resposta a mudançasAuto-organização

Foco em pessoas

Page 8: Todas as abordagens de testes dentro do ágil
Page 9: Todas as abordagens de testes dentro do ágil

Como a maioria dos “Agile Testers” são hoje!

Page 10: Todas as abordagens de testes dentro do ágil

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”

Testadores hoje

Page 11: Todas as abordagens de testes dentro do ágil
Page 12: Todas as abordagens de testes dentro do ágil
Page 13: Todas as abordagens de testes dentro do ágil

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

Separação clara dos papéis

AUTOMATIZAM!!!

Page 14: Todas as abordagens de testes dentro do ágil
Page 15: Todas as abordagens de testes dentro do ágil

http://www.shino.de/2012/07/30/the-testing-quadrants-we-got-it-wrong/

Page 16: Todas as abordagens de testes dentro do ágil
Page 17: Todas as abordagens de testes dentro do ágil

Pirâmide de Automação de Teste

Page 18: Todas as abordagens de testes dentro do ágil

Inicio da entrada da qualidade no produto

Tem um suporte de refatoração

É a base de uma suíte de automação

TODO O TIME é responsável por teste!

Todos devem entender do negócio

Page 19: Todas as abordagens de testes dentro do ágil

Build Tools• Judson/Jenkins

Unit Test Tools• xUnit• Mocking

Page 20: Todas as abordagens de testes dentro do ágil

Testar os serviços da aplicação sem UI

Preenche o gap entre Unit x UI

Descrita de uma forma clara para o cliente

Tanto tester quanto dev podem criar

Podemos referencia-lo como “integração”• API Test• Integration Test• Component Test

Page 21: Todas as abordagens de testes dentro do ágil

BDD Tools• Cucumber• Jbehave• SpecFlow

Unit Test Tools• xUnit

Fixture Tools• Fitnesse

Page 22: Todas as abordagens de testes dentro do ágil

Teste da UI / E2E

Focar em smoke tests

Mais caro e mais frágil

Desenvolvido no final do ‘done; de teste

Usualmente fácil para testadores ágeis

Page 23: Todas as abordagens de testes dentro do ágil

ATDD Tools• Selenium• Robot Framework

Page 24: Todas as abordagens de testes dentro do ágil
Page 25: Todas as abordagens de testes dentro do ágil

TDD – Test Driven Development

Page 26: Todas as abordagens de testes dentro do ágil

Sou pago pra desenvolver, não testar

“Done” é quando eu dou checkin

Todos conhecem o código

O projeto é curto

Não há cliente

TDD – Test Driven DevelopmentPequeno mal entendido

Page 27: Todas as abordagens de testes dentro do ágil

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)

Page 28: Todas as abordagens de testes dentro do ágil

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

Page 29: Todas as abordagens de testes dentro do ágil

O suficiente é o suficiente

Entregar valor para os stackholders

Tudo é comportamento

BDD – Behavior Driven Development

Page 30: Todas as abordagens de testes dentro do ágil

BDD – Behavior Driven Development

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>

User Story

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>

Page 31: Todas as abordagens de testes dentro do ágil

BDD – Behavior Driven Development

Scenario: <description of the test>Given <a known state>When <an event occurs>Then <then this should happen>

Acceptance Criteria

Cenário: <descrição do teste>Dado <um estado conhecido>Quando <um determinado evento ocorre>Então <isso deve ocorrer>

Page 32: Todas as abordagens de testes dentro do ágil

BDD – Behavior Driven DevelopmentFuncionalidade: Leitor de tipos de Triângulo

Para conhecer o tipo de um triânguloComo um aluno da matemáticaEu 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áteroUm triângulo com dois lados iguais é chamado IsóscelesUm 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ário

http://www.bugbang.com.br/entendendo-bdd-com-cucumber-parte-i/

Page 33: Todas as abordagens de testes dentro do ágil

BDD – Behavior Driven Development

Cenário: Consultando um triangulo Escaleno

Dado que eu estou na página de consulta de triângulosQuando quando eu informo os lados do triangulo

| lado1 | lado 2 | lado 3 |

| 3 | 4 |5 |

Então o sistema informa que o triangulo é “Escaleno”

Page 34: Todas as abordagens de testes dentro do ágil

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.

ATDD – Acceptance Test Drive Development

Page 35: Todas as abordagens de testes dentro do ágil

ATDD – Acceptance Test Drive Development

Page 36: Todas as abordagens de testes dentro do ágil

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)

Exemplo

ATDD – Acceptance Test Drive Development

Page 37: Todas as abordagens de testes dentro do ágil

ATDD – Acceptance Test Drive Development

Durante 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?

Discutir o requisito

Page 38: Todas as abordagens de testes dentro do ágil

ATDD – Acceptance Test Drive Development

Pensando em um formato para ferramenta

Destilar em um formato amigável

Ação ArgumentoO 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

Teste: Validar senhas válidas e inválidas

Page 39: Todas as abordagens de testes dentro do ágil

ATDD – Acceptance Test Drive Development

Implementação em qualquer formato

Desenvolver o código

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()

}}

Page 40: Todas as abordagens de testes dentro do ágil

ATDD – Acceptance Test Drive Development

Implementação em qualquer formato

Desenvolver o código

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!”}}

}

Page 41: Todas as abordagens de testes dentro do ágil

ATDD – Acceptance Test Drive Development

Execução do teste em ambiente controlado

Demostrar o teste

Page 42: Todas as abordagens de testes dentro do ágil

Mas cadê o topo da

pirâmide?

Page 43: Todas as abordagens de testes dentro do ágil
Page 44: Todas as abordagens de testes dentro do ágil

Testes Exploratórios

Simultâneamente ....... aprender sobre o software... desenvolver mais testes... executar testes

Usando o feedback do último teste para executar o próximo!

Page 45: Todas as abordagens de testes dentro do ágil

Todos os testes unitáriosPassaram com sucesso!A build está OK!

Essa user story de segurança passou nos

meus teste de aceitação!

Alguém já se deu conta que o usuário pode

colocar ele mesmo como administrador?

Page 46: Todas as abordagens de testes dentro do ágil

SBT - Session Based Testing Charter

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

Page 47: Todas as abordagens de testes dentro do ágil

SBT - Session Based Testing Charter

Descrição e objetivoTempoÁrea de ConcentraçãoSetupObservaçõesBugs

Page 48: Todas as abordagens de testes dentro do ágil