todas as abordagens de testes dentro do ágil

Post on 28-May-2015

8.959 Views

Category:

News & Politics

2 Downloads

Preview:

Click to see full reader

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

Todas as abordagens de teste dentro do ágil!

@eliasnogueira

Elias NogueiraTester, professor

http://about.me/eliasnogueira@eliasnogueira

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

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

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

Agile Testing

Agile Testing

Agile Testing é uma prática de Teste de Software que segue os princípios do desenvolvimento á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

Como a maioria dos “Agile Testers” são 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”

Testadores hoje

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

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

Pirâmide de Automação de Teste

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

Build Tools• Judson/Jenkins

Unit Test Tools• xUnit• Mocking

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

BDD Tools• Cucumber• Jbehave• SpecFlow

Unit Test Tools• xUnit

Fixture Tools• Fitnesse

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

ATDD Tools• Selenium• Robot Framework

TDD – Test Driven Development

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

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)

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

O suficiente é o suficiente

Entregar valor para os stackholders

Tudo é comportamento

BDD – Behavior Driven Development

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>

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>

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/

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”

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

ATDD – Acceptance Test Drive Development

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

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

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

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

}}

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

}

ATDD – Acceptance Test Drive Development

Execução do teste em ambiente controlado

Demostrar o teste

Mas cadê o topo da

pirâmide?

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!

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?

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

SBT - Session Based Testing Charter

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

top related