Testes de Software em Ambientes Ágeis
“Facilitar a mudança é mais eficaz do que tentar evitá-la. Aprender a confiar na sua capacidade de responder a eventos imprevisíveis; é mais importante do que confiar na sua capacidade de planejar um desastre.”
— FOWLER; HIGHSMITH, Manifesto Ágil.
À medida que a complexidade do software continua aumentando e o tempo de comercialização encurtando, o teste de software se torna um negócio mais sério e objetivo. Nasce então a necessidade de agilizar os processos para que os testadores forneçam feedback de qualidade aos desenvolvedores instantaneamente, dentro do ciclo de desenvolvimento.
Um time ágil busca trabalhar com o objetivo de realizar um entregável com qualidade. O teste ágil tem a capacidade de reduzir os períodos de iterações e identificar os gaps com maior efetividade. Contudo, isso não faz do testador o responsável pela qualidade, o time é responsável pela qualidade desde a concepção!
A qualidade será fruto da capacidade de Auto-organização da equipe, que por sua vez, é uma grande arma a favor do trabalho conjunto, do desenvolvimento pessoal, da corresponsabilidade e principalmente do aumento da eficiência de todo o processo de produção. Competência, colaboração, motivação, confiança, respeito e continuidade; isso com certeza promove agilidade, valor e qualidade.
Agile Testing
Tendo como base o Manifesto Ágil, os valores e melhores maneiras de desenvolvimento de software são:
- Indivíduos e interações entre eles mais que processos e ferramentas;
- Software em funcionamento mais que documentação abrangente;
- Colaboração com o cliente mais que negociação de contratos;
- Resposta às mudanças mais que cumprimento de planos.
São aplicados ao Agile Testing os mesmos princípios usados para direcionar o desenvolvimento ágil, sendo assim, é necessário uma forte adaptação na rotina e dinâmica da equipe, em relação ao processo de desenvolvimento adotado, com o objetivo de propiciar um processo relativamente simples que possa ser executado com facilidade e agilidade, cobrindo o maior número de riscos, cumprindo o tempo estimado e entregando com nível de qualidade que atenda a expectativa do cliente.
Teste Ágil, Nove Princípios e Seis Práticas Concretas para Testes em Equipes Ágeis, por Elisabeth Hendrickson:
Resumidamente, os 9 Princípios são:
- O teste leva o projeto adiante;
- Os testes não podem ser vistos apenas como uma fase do projeto;
- Todos testam, não apenas o especialista em testes;
- Diminua o tempo dos feedbacks;
- Mantenha o código limpo, erros encontrados devem ser resolvidos ASAP;
- Testes descobrem requisitos não explicitados;
- Reduza a documentação;
- “Feito Pronto!”, não apenas Feito;
- Adote, sempre que possível, a técnica de Test Driven Development (TDD).
Quanto às 6 Práticas Concretas, são realmente boas práticas a serem adotadas:
- Testes Automatizados de Unidade e Integração;
- Desenvolvimento Orientado a Testes (TDD, Testes Unitários, especificamente);
- Testes Automatizados de Regressão no Nível do Sistema;
- Desenvolvimento Orientado a Testes de Aceitação (ATDD, discutir → destilar → desenvolver → demonstrar);
- Testes Exploratórios (baseado em histórias de usuário, se for o caso);
- Testes de versão COM código (repositório de controle de origem inclui código-fonte, testes de unidade e testes de sistema).
Vantagens dos Testes Ágeis
Qualidade
Aumenta a produtividade e melhora a qualidade do processo e dos entregáveis, isso leva também a um melhor atendimento ao cliente.
Flexibilidade
Abordagens flexíveis e adaptáveis a mudanças radicais. Nós absorvemos a qualidade em todas as áreas e envolvemos nossos especialistas com antecedência para garantir uma jornada tranquila.
Tempo
Leva menos tempo com planejamento, documentação e burocratização no gerenciamento de tarefas. Feedbacks são instantâneos e interações são dinâmicas, o que nos faz ganhar tempo.
Documentação leve
O primordial no método ágil é o funcionamento do software atendendo os requisitos, mais do que a documentação. Referente a participação do tester no desenvolvimento do software, a documentação deve ser mais objetiva o possível e que responda, com mensurações, as perguntas em relação ao projeto de software.
Ciclo de Vida do Teste Ágil
A projeção do processo de teste ágil inclui diversos fatores e etapas a serem seguidos, estes podem variar de acordo com a metodologia adotada e da estratégia aplicada.
Aqui estão alguns dos que fazem parte do ciclo de vida do teste ágil:
- Análise de requisitos e impacto;
- Definição de estratégia;
- Verificação e validação;
- Codificação;
- Feedback;
- Prontidão de liberação;
- Revisão de agilidade.
Em contraste ao método WaterFall, o Agile pode iniciar o projeto com integração entre negócios, desenvolvimento e teste. Não é sequencial, mas incremental e contínuo.
Devo ou não planejar?
O segredo do Planejamento Estratégico de processos ágeis é perceber que à medida que a percepção do projeto se aprimora, o planejamento consequentemente pode evoluir. Ao aplicar uma abordagem ágil para o seu projeto, você pode aumentar significativamente as chances de sucesso de atingir os objetivos e causar um impacto positivo muito além do que você imaginou.
Peace!
_______________________________________________________________
Contribuições:
Prof. Dr. Jorge Audy
Tiago Guimarães da Silva
Referências:
Elias Nogueira: Capítulo 7: Teste ágil, como implementar?
FOWLER, Martin; HIGHSMITH, Jim. The Agile Manifesto. SD Magazine. Agosto, 2001.
HENDRICKSON, Elisabeth. Agile QA/Testing. Quality Tree Software, Inc. Novembro, 2006.