Palestra realizada na Semana Acadêmica do Instituto de Informática da UFRGS. Conteúdo baseado nos conceitos e técnicas propostos no livro Agile Testing de Lisa Crispin e Janet Gregory.
2. Diraci Junior Trindade da Silva
Líder Técnico
Fábrica de Testes
• Ciência da Computação
• 10 anos experiência em TI
• MBA em Gestão da Qualidade
• Foco em Qualidade de Software e processos de testes
• Grupo RBS / Colombo / Cnova / Terra / Abril / Odebrecht / Fleury / Tramontina / …
• Trabalho voluntário no GUTS-RS
5. Métodos Ágeis
1. Indivíduos e interação entre eles mais que processos e ferramentas
2. Software em funcionamento mais que documentação abrangente
3. Colaboração com o cliente mais que negociação de contratos
4. Responder a mudanças mais que seguir um plano
Valores
6. O que é
Conceito que segue os valores e princípios do
Manifesto Ágil, agrupa técnicas e práticas de
testes utilizadas na avaliação de qualidade do
código e produto desenvolvido.
Visa garantir que as necessidades do
cliente estão sendo atendidas e gerando valor
ao negócio.
Teste Ágil
7. Testes Ágeis
Fornecer Feedback Contínuo
Entregar Valor ao Cliente
Comunicação Face-to-face
Tenha Coragem
Simplicidade
Praticar Melhoria Contínua
Responder à Mudança
Auto Organização
Foco nas Pessoas
Satisfação
Os 10 princípios
8. Testes Ágeis
Colaborar com:
• Desenvolvimento
• Com usuários
Fomenta a responsabilidade da qualidade
Todo o time é responsável
Conhecedor do negócio
Automatizar o máximo possível dos testes
O Perfil
9. O Manifesto
dos Testes Ágeis
1. Executar testes em todas as etapas ao invés de apenas no final
2. Prevenir bugs ao invés de encontrar bugs
3. Testar o entendimento ao invés de checar a funcionalidade
4. Construir o melhor sistema ao invés de quebrar o sistema
5. Time responsável pela qualidade ao invés da responsabilidade ser
apenas do testador
10.
11. Elaborado por Mike Cohn, 2009 - Pag 332 -
Desenvolvimento de Software com Scrum
Pirâmide da
Automação
12. dos testes ágeis1° Quadrante
Suporte ao Time - Apoio Desenvolvimento
Técnica principal: TDD
Automatizado
geralmente executados com Integração Contínua
Testes de Unidade
menor porção da aplicação
Testes de Componentes
um grupo de classes, uma parte
Não visível ao cliente
Qualidade do código
13. Controle de Versão - Ferramentas
dos testes ágeis1° Quadrante
Hospedagem Remota
14. TDD - Test-Drive Development
dos testes ágeis1° Quadrante
Desenvolvimento com foco em testes
Testes são escritos antes do código
Melhorar design do código
Desenvolvidos para testar unidade de código
Rodam periodicamente com integração contínua
Facilita a Regressão
Refactoring - minimiza riscos
15. dos testes ágeis1° Quadrante
Cobertura e Qualidade de Código - Ferramentas
16. dos testes ágeis2° Quadrante
Suporte ao Time - Apoio
Desenvolvimento
Técnica principal: BDD
Validações de Telas
Layout / Padrões
Testes Funcionais
Está voltada a aplicação em um formato que o cliente já entende
Qualidade externa da aplicação
17. User Stories
Descrição curta e simples de um requisito
Perspectiva da pessoa que deseja a funcionalidade
Pode ser descrito em:
Um cartão;
Ferramenta de gestão de requisitos.
dos testes ágeis2° Quadrante
18. User Stories
Seis atributos de uma boa história
Independent
Negotiable
Valuable
Estimatable
Small
Testable
dos testes ágeis2° Quadrante
19. User Stories - Modelos
Como <tipo de usuário>, desejo <algum objetivo> para que <alguma razão>.
Para <benefício a ser obtido>, como <tipo de usuário>, desejo <algum objetivo>.
Exemplo:
Como usuário registrado, desejo realizar login com meu nome de usuário e senha
para que eu possa confiar no sistema.
dos testes ágeis2° Quadrante
20. User Stories - Critérios de Aceitação
Teste de aceitação em alto nível;
Será verdadeiro quando user story for finalizada.
Exemplo:
Senha não pode conter sequencia crescente com mais de 3 números.
Senha deve conter uma letra maiúscula.
dos testes ágeis2° Quadrante
21. User Stories - Especificação por exemplos
Comunicar comportamento desejado para diversas situações;
Tabelas de decisão e equivalência;
Entendimento mais fácil.
Senha Confirmação Alterado? Mensagem
1234user 1234user Não Senha não pode conter sequencia com mais de três números
User12new User12new Sim Senha alterada com sucesso!
user12 user12 Não Senha deve conter uma letra maiúscula!
USER123 USER123 Sim Senha alterada com sucesso!
dos testes ágeis2° Quadrante
22. BDD - Behavior-Driven Development
Criado por Dan North
Derivação do TDD
Responder alguns questionamentos sobre TDD:
Onde iniciar?
O que testar e o que não testar?
Quanto testar a cada etapa?
Como devemos chamar os testes?
Como entender porque um teste falha?
dos testes ágeis2° Quadrante
23. BDD - Behavior-Driven Development
Linguagem ubíqua
Entendimento dos requisitos
Fonte da verdade
Documentação viva
dos testes ágeis2° Quadrante
24. BDD - Gherkin - Idiomas
Funcionalidade: Servir café
O café não deve ser servido até que seja pago
O café não deve ser servido até que o botão seja pressionado
Se não tiver mais café o dinheiro deve ser devolvido
Cenário: Comprar último café
Dado que existe "1" "café" na máquina
E Eu depositei "1$"
Quando Eu pressiono o botão do “café"
Então Eu devo receber "café"
dos testes ágeis2° Quadrante
25. BDD - Features Files and Steps Definition
dos testes ágeis2° Quadrante
29. Crítica ao produto
Voltado para a técnica de validações de
usuário
Testes manuais
Uso da aplicação como usuário final
Aplicação de testes exploratórios
Cliente também é envolvido na execução
Assegurar que necessidades do cliente foram atendidas
dos testes ágeis3° Quadrante
30. Personas
Descreve perfil de usuário fictício do produto
Principais tarefas realizadas
Comportamento
Expectativas com o produto
dos testes ágeis3° Quadrante
31. Testes Exploratórios
Sem grande dependência dos requisitos
Sem planejamento muito detalhado
Baseados na experiência do testador
Conhecimento sobre as plataformas suportadas
Comparativo com versões anteriores
Testes baseados em Sessões
dos testes ágeis3° Quadrante
34. dos testes ágeis4° Quadrante
Crítica ao produto
Avaliação técnica - performance, carga e segurança
Podem ser incluídos na Integração
Contínua
Gerados a partir de necessidades do cliente - User Story
Utilização de ferramentas específicas e
codificação
36. dos testes ágeis4° Quadrante
Performance - Organização
• Entender as necessidades do projeto e contexto;
• Identificar cenários que agregam valor a avaliação de performance;
• Mapear os requisitos de ambiente.
37. dos testes ágeis4° Quadrante
Performance - Organização
• Avaliar desempenho de front-end;
38. dos testes ágeis4° Quadrante
Performance - Organização
Como gestor de produto e-commerce
Preciso ter informações sobre como meu site se comporta com um
número alto de acessos de usuários
Para que eu me sinta mais seguro quanto a sua disponibilidade em
eventos como BlackFriday
39. dos testes ágeis4° Quadrante
Performance - Ferramentas Execução
• Desenvolver scripts automatizados;
• Executar os testes;
41. Segurança - Top 10 Vulnerabilidades - OWASP 2013
dos testes ágeis4° Quadrante
A1 – Injeção
A2 – Quebra de Autenticação e Gerenciamento de Sessão
A3 – Cross-Site Scripting (XSS)
A4 – Referência Insegura e Direta a Objetos
A5 – Configuração Incorreta de Segurança
A6 – Exposição de Dados Sensíveis
A7 – Falta de Função para Controle do Nível de Acesso
A8 – Cross-Site Request Forgery (CSRF)
A9 – Utilização de Componentes Vulneráveis Conhecidos
A10 – Redirecionamentos e Encaminhamentos Inválidos
42. Segurança - Top 10 Vulnerabilidades - OWASP 2013
dos testes ágeis4° Quadrante
43. Segurança - Top 10 Vulnerabilidades - OWASP 2013
dos testes ágeis4° Quadrante
44. Segurança - Top 10 Vulnerabilidades - OWASP 2013
dos testes ágeis4° Quadrante
47. Testes Ágeis
#ficaDica
Automatize
Comece pelo simples e que lhe agregue valor
Tenha preocupação com aquilo que irá entregar
Obtenha o entendimento da necessidade do cliente
As funcionalidades e prioridades irão mudar, esteja preparado
Identifique quem possa lhe ajudar
Sinta orgulho de assinar seu código, e seu teste
49. Testes ÁgeisReferências
• Agile Testing - A Pratical Guide for Testers and Agile Teams. Lisa Crispin and
Janet Gregory
• User Stories Applied - For Agile Software Development. Mike Cohn
• Entrega Contínua - Como Entregar Software de Forma Rápida e Confiável. Jez
Humble - David Farley
• Clean Code - A Handbook of Agile Software Craftsmanship. Robert C. Martin
• http://janetgregory.blogspot.com.br/2010/08/atdd-vs-bdd-vs-specification-by-
example.html
• http://www.manifestoagil.com.br
• http://pt.slideshare.net/nashjain/agile-testing-392928
• http://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants/
• http://www.infoq.com/br/articles/atdd-passo-a-passo
• http://testobsessed.com/wp-content/uploads/2011/04/atddexample.pdf
• http://www.exampler.com/old-blog/2003/08/22/#agile-testing-project-2
• http://www.owasp.org