Indivíduos e iterações
sobre processo e
ferramentas
Software funcionando
sobre documentação
abrangente
Colaboração com cliente sobre negociação de
contratos
Resposta a mudanças sobre
segmento de um plano
Princípios
(12)
Abordagem
Equipe
Inteira
Poder dos Três: envolve a todos com o conhecimento e as habilidades necessárias para garantir o sucesso do projeto.
Equipe de 3 â 9
pessoas
Representantes do Negócio
determinam as características do produto
Desevncolvedores
Colaboram com testadores para chegar a acordos sobre a estratégia de teste
Testadores
vão trabalhar em estreita colaboração com os desenvolvedores e representantes das empresas para
garantir que os níveis de qualidade desejados sejam alcançados
O ideal é que toda a equipe compartilhe o mesmo
espaço de trabalho
é suportada através de
reuniões diárias
é um dos principais benefícios do
desenvolvimento ágil
promove uma dinâmica de equipe
mais eficaz e eficiente.
Benefícios
Melhorar a comunicação e
colaboração dentro da equipe.
Ativar os vários conjuntos de habilidades dentro
da equipe para serem aproveitados em benefício
do projeto.
Promover qualidade na responsabilidade de cada elemento.
A equipe inteira é
responsável pela
qualidade
Feedback
Inicial e
Frequente
O feedback avançado e frequente ajuda no foco da equipe quanto às
funcionalidades com o valor comercial mais elevado ou risco
associado, e esses são desenvolvidos primeiramente para o cliente
ajuda a gerenciar melhor a equipe, pois a
capacidade de todos é transparente
Benefícios
Evitar mal-entendidos nos requisitos
o produto reflete melhor o que o cliente quer
Descobrir (via integração contínua), isolar e resolver os problemas de
qualidade mais cedo.
Providenciar informações para a equipe ágil quanto à sua produtividade e capacidade de
desenvolvimento.
Promover fluxo de projeto consistente.
Abordagens
Ágeis
XP (Extreme
Programming)
Valores: comunicação,
simplicidade, feedback,
coragem e respeito.
É uma abordagem ágil para desenvolvimento de
software descrito por certos valores, princípios e
práticas de desenvolvimento
Scrum
É uma estrutura de gestão ágil. Não dita
técnicas de desenvolvimento ou orientação
sobre como realizar os testes.
Instrumentos: Sprint, Incremento, Backlog do
produto, Backlog do Sprint, Definição de Pronto,
TimeBoxing e Transparência.
Funções: Scrum Master; Proprietário do Produto e Equipe de Desenvolvimento.
Kanban
É uma abordagem de gestão
que tem por objetivo
objetivo geral é visualizar e
otimizar o fluxo de trabalho
em uma cadeia de valor
agregado
Instrumentos: Quadro
Kanban, Limite de Trabalho
em Andamento, Tempo de
Espera
Permite liberar seu item de
entregas por item, e não
como parte de uma
liberação
Criação colaborativa de estórias de usuários
estórias de usuários são escritas para capturar os requisitos a
partir da perspectiva de desenvolvedores, testadores e
representantes de negócio
Estória de usuário
concisa
Suficiente
Necessária
Conceito 3C
Cartão
Conversacional
Confirmação
devem abordar características
funcionais e não-funcionais, além
de critérios de aceite
INVEST
independente
Negociável
Valoroso
Estimável
Small
(pequena)
Testável
Testador
Contribui
identificando detalhes ausentes ou requisitos não-funcionais
formulando perguntas abertas aos representantes de
negócio sobre a estória do usuário
Propor formas de testar as estórias, e confirmar os critérios de
aceite
Retrospectivas
Reunião realizada no final de cada iteação
Temas
Processos
Processos
Organizações
Pessoas
Ferramentas
Objetivo: auto-organização e melhoria contínua
Planejamentos
Lançamento
Liberação de um
produto
Define e redefine Backlog
do produto
Pode ser alterado a
medida que o projeto
avança
Funções do Testador
Definir estórias de usuários testáveis, incluindo
critérios de aceite
Participação no projeto e análise do risco da
qualidade
estimativa de esforço de
teste associado às estórias
do usuários
Definir os níveis de testes
necessários
Planejar o teste para o
lançamento
da Interação
foca o final de uma única
iteração.
Define o Backlog da
iteração
Funções do Testador
Participação na análise de riscos detalhada
de estórias de usuários
Determinar a testa umidade das
estórias de usuários
Criar testes de aceite de usuários
Dividir estórias de usuários em
tarefas
Estimativa de esforço de teste
para todas as tarefas de teste
identificar os aspectos
funcionais e não funcionais do
sistema
Apoiar e participar na
automação de testes nos vários
níveis de testes
Aborda o Plano de testes
e plano de
desenvolvimento
Integração
Contínua
Atividades
Análise
estática do
código
Compilação
Teste da
Unidade
implantar
teste de
integração
Relatório
(dashboard)
Benefícios
Permite a detecção mais precoce e análise mais fácil da causa raiz de problemas de integração e mudanças
conflitantes
Dá o feedback regular à equipe de desenvolvimento se o código estiver funcionando.
Mantém a versão do software que está sendo testada dentro de um dia da versão que está sendo desenvolvida
Reduz o risco de regressão associado com a reconstrução do código do desenvolvedor devido ao rápido reteste
da base de código após cada pequeno conjunto de alterações.
Promove confiança de que o trabalho de desenvolvimento de cada dia é fundamentado em uma base sólida.
Realiza progresso em direção a conclusão do incremento do produto visível, encorajando desenvolvedores e
testadores.
Elimina os riscos de programação associada à integração do big-bang.
Fornece disponibilidade constante de software executável em todo o sprint para fins de teste, demonstração
ou de treinamento
Reduz as atividades de teste manuais repetitivas.
Fornece feedback rápido sobre as decisões tomadas para melhorar a qualidade e os testes.
Riscos e Desafios
Ferramentas de integração contínua devem ser introduzidas e mantidas.
O processo de integração contínua deve ser definido e estabelecido.
A automação de teste exige funcionalidades adicionais e pode ser complexa seu estabelecimento
A cobertura completa de teste é essencial para alcançar vantagens nos testes automatizados
As equipes, por vezes, confiam excessivamente nos testes de unidade e realizam muito
pouco do teste de sistema e de aceite
É a fusão de todas as alterações feitas no software e a
integração de todos os componentes alterados
regularmente, pelo menos uma vez por dia