No último dia 21/11/17, nós abrimos as inscrições para a Especialização em Testes Ágeis. Este curso tem como foco desenvolver habilidades de colaboração e trabalho em equipe, como também aprender sobre técnicas, ferramentas e práticas que habilitam os times, no contexto de desenvolvimento ágil, a entregar produtos de qualidade e com valor agregado.
Neste post, vamos detalhar a fundamentação teórica e práticas usadas no dia-a-dia por times ágeis que utilizamos como base para estruturar este curso e suas disciplinas. Vale conferir! ? ✅ ?
A base do desenvolvimento ágil de software
Em 2001, quando importantes autores como Kent Beck, Jeff Sutherland e Martin Fowler escreveram e assinaram o Manifesto para Desenvolvimento Ágil de Software e seus princípios, eles procuravam por novas formas de desenvolver software. Além disso, também buscaram nestas formas o foco em valorizar o trabalho realizado pelas pessoas, como aumentar e melhorar a colaboração com o cliente, além de entregar software com qualidade e valor agregado.
Mike Cohn, em um de seus livros e em outras colaborações, afirma que para times de desenvolvimento ágil conseguirem adotar na prática esses valores e princípios é necessário que os produtos sejam desenvolvidos com base numa cultura de qualidade. Para conquistar esse nível de adoção, as equipes ágeis devem:
- Promover grande colaboração dos membros dos times
- Utilizar técnicas e processos de testes, com grande ênfase em automação de testes
- Trabalhar em iterações curtas, realizando entregas contínuas e recebendo feedback rápido
- Avaliar continuamente como melhorar os processos, práticas e comportamentos, com o objetivo de se tornar mais eficaz
The whole team approach
Como isso, é importante destacar que deve haver a colaboração entre os membros das equipes, que são fortemente multidicilcipares, formada por desenvolvedores, testadores, analistas de negócio e designers, por exemplo. Em cada uma das atividades executadas e artefatos gerados por estes profissionais é possível identificar formas para avaliar a qualidade.
Por exemplo, desenvolvedores ao codificar funcionalidades podem testá-las, implementando testes unitários e de integração. Os testadores podem automatizar testes de sistemas ou executar manualmente testes exploratórios. Designers podem testar com os usuários as experiências criadas aindas ainda em nível de protótipos. Tudo isso pode ser adicionada à estratégia de testes que ajudará o time a obter feedback rápido sobre a qualidade dos produtos, com mais segurança que estão entregando um software funcionando e com valor agregado. Podemos ainda adicionar à estratégia, práticas de DevOps.
Quadrantes do Teste Ágil
Há uma diversidade de níveis e tipos de testes que oferecem suporte e apoio ao time. Há também outras estratégias e abordagens que ajudam a criticar o produto ou focar em informações sobre o negócio. Tudo isso é listado como parte dos Quadrantes de Testes ágeis proposto por Brian Marick e consolidado por Lisa Crispim e Janet Gregory.
Cada uma das técnicas ou abordagens podem ser colocadas na prática de forma manual, utilizando ferramentas de apoio ou criando testes automáticos. Além de validações de requisitos funcionais, os quadrantes de testes também destacam a necessidade de atentar para requisitos não-funcionais como Performance, Segurança e Usabilidade.
Manifesto do Teste Ágil
Outra referência muito importante é o Manifesto de Testes Ágeis, criado por Samantha Laing e Karen Greaves. Nele, elas resumem o mindset que as pessoas de um time ágil devem ter quando pensarem em testes.