- O documento discute como os testes de software irão se adaptar às metodologias ágeis, com foco em estratégias como testes baseados em riscos, automação de testes de regressão, e equipes multifuncionais.
Como os testes irão se modificar com o advento das metodologias ágeis
1. Como os testes irão se
modificar com o advento
das metodologias ágeis
Eduardo Habib Bechelane Maia
habib@dcc.ufmg.br
2. Testes ágeis
Sumário
– Introdução
– Testes em metodologias ágeis
• Estratégias de teste
• Aumento dos períodos de estresse
• Equipe de testes
• Comunicação
• Iterações curtas
• Automação
• Perfil dos testadores
• Volume de mudanças
• Testabilidade
– Conclusão
2
3. Introdução
"Manifesto Para o Desenvolvimento Ágil de Software“
– reunião entre 17 gurus da comunidade de
desenvolvimento em 2001
– Estação de esqui nas montanhas de
Utah, Estados Unidos.
• Alternativas para melhorar produtividade de
desenvolvimento de software
• Conjunto de princípios comuns em projetos de
sucesso.
3
4. Introdução
Princípios básicos valorizados nas metodologias ágeis:
– Indivíduos e interações entre eles, ao invés
de processos e ferramentas
– Software funcionando ao invés de
documentação compreensiva e detalhada.
– Colaboração com os clientes ao invés de
negociação de contratos.
– Adaptação às mudanças ao invés de seguir
um plano inicial.
4
5. Introdução
Cada vez mais empresas declaram que utilizam
Processos ágeis:
– Existem poucas empresas que utilizam
processos realmente ágeis.
– Termo tem sido utilizado para qualquer
projeto com iterações curtas.
Empresas têm sido pressionadas para produzir melhor e
mais rápido
– Processos ágeis
– Bons relatos sobre processos ágeis
• Poucos relatos de como deve ser reorganizada a
equipe de testes.
5
6. Estratégias de testes em processos ágeis
Definição de algumas estratégias
Novos desafios: O processo tradicional não funciona.
– Desafios possuem duas origens:
• Interpretações das pessoas.
• Das próprias metodologias ágeis;
Rex Black recomenda as estratégias:
– Testes baseados em riscos.
– Testes de regressão automatizados
– Testes reativos (dinâmicos)
6
7. Equipes multifuncionais
Membros da equipe idealmente devem estar aptos a
realizar todas as tarefas.
– Acaba havendo algum grau de especialização.
– Maioria das equipes ágeis não consegue ser
totalmente multifuncional.
Separação entre testes e desenvolvimento?
– Equilíbrio entre equipe independente e
integrada.
• Requisito deve ser preferencialmente testado na
mesma iteração.
– Separar completamente não faz sentido.
• Sprint para testes e desenvolvimento.
7
8. Equipes multifuncionais
Separação entre testes e desenvolvimento?
– Vantagens e desvantagens da atuação
dentro da Sprint:
• Vantagens:
– Foco nas tarefas relacionadas ao Sprint;
– Tempo utilizado com foco nos objetivos da Sprint.
• Desvantagens:
– Perda de liberdade;
– Visão reduzida do sistema.
8
9. Aumento dos períodos de estresse
Aumento de pressão excessivo pode causar perda de
produtividade e maior rotatividade.
Períodos estressantes de teste normalmente são
próximos às entregas.
– Mais entregas, maior estresse.
– Testes baseados em riscos
– Algumas metodologias ágeis sugerem
claramente evitar-se horas extras.
9
10. Relacionamento entre membros da equipe
Bom relacionamento é essencial.
Compartilhar planejamento e tomada de decisões
– Comprometimento com as metas
Pessoas trabalhando mais próximas
– Diminuição do número de defeitos reportados
• Diminuição de conflitos.
10
11. Relacionamento entre membros da equipe
Pessoas trabalhando mais próximas
– Testadores conversam sobre testes de unidade
– Testes realizados pelos testadores tendem a não se
sobrepor
Função principal do testador:
– Feedback rápido.
• É mais importante a execução dos testes do que a
sua modelagem.
11
12. Realização de todos os testes em iterações curtas
Desenvolvimento ágil:
– Minimiza riscos desenvolvendo em iterações
curtas
• Desenvolvimento incremental
– E os testes que demoram muito tempo?
• Segurança? Desempenho? Confiabilidade?
• Fases de testes que começam em uma iteração e
terminam em outra.
12
13. Automação dos testes em processos ágeis
É ainda mais necessário.
Nem tudo deve ser automatizado.
– Aplicação correta.
• Retorno excepcional.
Por que muitos projetos de automação falharam?
– Ferramentas de testes não eram maduras.
– Automação irracional.
– Testes puramente gravados não funcionaram.
– Desconhecimento dos problemas.
– Despreparo da equipe.
13
14. Perfil dos testadores
Ao adotar processo ágil deve-se possuir política clara em
relação à equipe
– Experiência e estabilidade da equipe
– Evitar participação em múltiplos projetos
Analistas de teste têm papel diferenciado
– Maior interação com o cliente e desenvolvedor
– Maior participação de revisões
• Inserção de informações necessárias aos testes.
• Aperfeiçoamento dos requisitos.
– Envolvimento em fases iniciais
14
15. Lidando com o volume das mudanças
Processos ágeis encorajam mudanças e incentivam
comunicação face a face.
– É inevitável que algumas mudanças não
sejam documentadas.
Desafios reais para a equipe e manutenção de
documentos como as especificação de testes.
– Testes baseados em riscos.
– Testes automatizados.
Aumento do número de erros inválidos.
– Monitoramento pelo gerente
• Melhoria da comunicação (aprox. 5% de defeitos
inválidos é normal).
15
16. Testes de unidade
Crescimento da importância em processos ágeis.
– Capacidade de detecção de defeitos é
limitada
• 25% dos defeitos (Caper Jones)
• Equipe de testes independente chega a encontrar
85% dos defeitos
Pressão por entregas
– Testes de unidade precários
• Testes baseados em riscos.
16
17. Documentação em processos ágeis
Documentação ruim:
– Resposta natural: Testes exploratórios
• Entretanto, documentação ruim deveria ser rara.
– Um dos principais mal entendidos.
– Equilíbrio entre documentação e reuniões.
Fato: Documentação é menor.
– Participação efetiva do usuário.
Basear testes na documentação é praticamente
impossível.
17
18. Recrutamento de testadores
Boa comunicação:
– Assume maior importância
– É mais fácil suprir deficiências técnicas do
que ensinar um “nerd” a se comunicar.
Testadores interessados em desenvolver novas
habilidades.
18
19. Testabilidade
Testabilidade é a medida de do quão bem e eficiente
uma aplicação pode ser testada.
– Mais fácil de testar -> Mais testes no mesmo
tempo
– Áreas de maior risco costumam ser mais
difíceis de testar.
– Não é questão de escolha, é necessidade.
19
20. Localização da equipe
Idealmente:
– Membros da equipe devem sentar próximos
• Facilidade de comunicação.
Como tratar os casos em que equipes atuam
geograficamente separados?
– Skype
– MSN
– Videoconferência
20
21. Conclusão
Testes de software estão se alinhando mais às
necessidades dos negócios.
Testes por uma equipe independente são melhores para
encontrar defeitos.
Maior flexibilidade dos membros da equipe.
Habilidades necessárias aos testadores estão mudando.
É importante uma automação melhor e mais eficiente.
Expectativas muito altas para as metodologias ágeis
– Risco grande
– Benefícios a longo prazo.
21
22. Conclusão
Nem todo mundo precisa ser ágil.
É preciso tomar cuidado para não espremer os testes
Testes baseados em riscos.
Se as prédios e casas quebrassem tão freqüentemente,
não existiriam empresas de construção civil.
Testadores querem atingir o mesmo objetivo de toda
a equipe.
22
23. Referências
Testing Experience: The Magazine for Professional
Testers, Agile Testing, Setembro de 2009.
WATKINS, John. Agile Testing: How to Succeed in
an Extreme Testing Environment. Cambridge
university Press, 2009
CRISPIN, Lisa. Testing Extreme Programming.
Addison-Wesley. 2002
PERRY, E., William. Effective Methods for Software
Testing. Wiley Press, Inc.. New York 1995.
23
24. Referências
Farrell-Vinay, Peter, Manage Software Testing.
Auerbach Publications., 2008
COHN, Mike. Agile Estimating and Planning. Prentice
Hall. 2005
PRESSMAN, R. S., “Software Engineering: A
Practitioner’s Approach”, McGraw-Hill, 6th edição,
Nova York, NY, 2005.
GILB, Tom. Agile Specification Quality Control, em
Testing Experience Magazine. Março de 2009.
24