Agile testing - o que é e qual o papel do QA num time ágil?
Você possivelmente já deve ter ouvido falar em Waterfall e desenvolvimento ágil no seu ambiente de trabalho. Mas o que realmente isso significa? Para entendermos o contexto e nos aprofundarmos um pouco mais nos testes, precisamos conhecer um pouco dos dois, pois a diferença da aplicação de testes se fundamenta principalmente na abordagem dos times. Vamos lá?
O modelo Waterfall ou modelo cascata é tradicionalmente usado, e dentro dele os projetos são construídos em etapas.Nesse formato, existe apenas um caminho a ser seguido e a finalização do projeto nem sempre resulta em clientes satisfeitos. Em relação aos testes, o primeiro passo é construir o projeto e apenas depois revisar para encontrar possíveis bugs e problemas. Depois da revisão, o produto volta para a etapa de desenvolvimento para realizar os fixes. Os requisitos definidos inicialmente são contemplados, mas o feedback do cliente tende a demorar..
Então, o que fazer se o produto não estiver alinhado com as expectativas do usuário final ou os ganhos do cliente simplesmente não existirem por conta de um bug que só foi identificado após a finalização das etapas?
Imaginem então o time de Quality Assurance nesse contexto. Quando um produto chega ao cliente ou entra em produção, o esperado é que seja consumido em escala. É comum pensar que os testes farão mais sentido quando o produto estiver finalizado, mas você já se perguntou se esse procedimento, realizado apenas no final, garante a qualidade necessária para o projeto?
Podemos resumir o questionamento com a pergunta: nesse formato, é mais fácil um tester Quality Assurance encontrar um bug ou 50/100 pessoas encontrarem vários bugs durante o consumo do produto final?
No cenário onde diversas pessoas encontram bugs ao mesmo tempo, a figura da Quality Assurance se torna uma espécie de Contenção de Danos, pois o estresse de todos seria maior e a probabilidade do produto perder valor e gerar clientes insatisfeitos é gigantesca.
Nesse sentido, diferente do modelo cascata, o modelo ágil acompanha as necessidades contemporâneas do projeto. Ele compreende a velocidade de mudança (um produto pode não ter o mesmo valor em 6 meses ou um ano, por exemplo) e a importância de conseguirmos um retorno do cliente mais rapidamente, pois assim é possível alinhar e compreender suas expectativas ou prioridades.
No método ágil, o time de Quality Assurance é essencial nos ciclos do projeto, e sua expertise contribui diretamente para que a mentalidade do testar ágil seja, de fato, incorporada por toda a equipe de entrega. Afinal, de acordo com esse modelo, faz muito mais sentido realizar testes que acompanham o processo, do que testar tudo na etapa final, já próximo da entrega do produto.
O que é QA?
Vimos, até agora, o papel da QA contextualizado em um cenário prático. Mas para compreender sua importância, é fundamental ter em mente o que significa QA. O termo em inglês “Quality Assurance”, que em português pode ser traduzido como “Garantia de Qualidade”, é um processo ou conjunto de atividades que visam garantir que um produto ou serviço atenda aos padrões de qualidade estabelecidos.
No contexto de desenvolvimento de software, QA refere-se a práticas e técnicas usadas para monitorar e melhorar a qualidade de um software durante seu ciclo de vida, desde o planejamento até o lançamento e manutenção. Isso inclui testes de software, revisões de código, automação de testes, análise de requisitos e outras atividades que visam identificar e corrigir problemas antes que o software seja entregue aos usuários finais.
Além do desenvolvimento de software, o conceito de QA também pode ser aplicado a outros campos e setores, como manufatura, produção de produtos físicos, prestação de serviços, entre outros, nos quais o objetivo é assegurar que o produto ou serviço final atenda aos padrões de qualidade estabelecidos e às expectativas dos clientes.
O que faz um QA?
Um setor de QA desempenha um papel importante em garantir a qualidade de produtos, serviços ou processos em uma organização. É importante que ele conte com pelo menos uma pessoa profissional especialista na área, também conhecida como QA tester. Suas responsabilidades variam dependendo do setor de atuação, mas geralmente envolvem as seguintes atividades:
Definição de Padrões e Diretrizes: o setor de QA estabelece padrões, diretrizes e melhores práticas para garantir que os produtos ou serviços atendam aos requisitos de qualidade estabelecidos. Isso pode incluir a definição de critérios de aceitação, procedimentos de teste e diretrizes de desenvolvimento.
Planejamento de Testes: ele é responsável pelo planejamento e execução de testes, que envolvem: a criação de estratégias, definição de casos de teste, seleção de ferramentas de automação e a execução de testes manuais e automatizados.
Testes e Validação: realização de testes rigorosos para identificar defeitos, erros ou problemas em produtos, ou serviços. Isso inclui testes funcionais para verificar se o produto atende aos requisitos especificados, testes de desempenho para avaliar o desempenho sob condições de carga e stress, testes de segurança para identificar vulnerabilidades e testes de usabilidade para verificar a experiência do usuário.
Revisões e Auditorias: realização de revisões de código, análises de documentos e auditorias de processos para identificar áreas de melhoria e garantir a conformidade com os padrões estabelecidos.
Feedback e Melhoria Contínua: o setor de QA fornece feedback ao time de desenvolvimento, equipe de projeto e gerência sobre as questões de qualidade identificadas. Com base nesse feedback, as melhorias são implementadas ao longo do ciclo de desenvolvimento para aprimorar a qualidade do produto ou serviço.
Documentação: manutenção de documentação detalhada sobre os processos de QA, casos de teste, resultados de testes e outras informações relevantes para garantir a rastreabilidade e a transparência.
Automação de Testes: desenvolvimento e implementação de scripts de automação de testes para agilizar o processo de testes, melhorar a cobertura de testes e garantir a consistência dos resultados.
Colaboração Interdepartamental: trabalho em conjunto com outras equipes, como desenvolvimento, design e gerenciamento de projetos, para garantir que a qualidade seja uma preocupação em todas as fases do desenvolvimento.
Resolução de Problemas: identificação e resolução de problemas que afetam a qualidade, trabalhando em estreita colaboração com outras equipes para corrigir defeitos e implementar melhorias.
Treinamento e Educação: fornecimento de treinamento e orientação aos membros da equipe sobre práticas de QA e dos processos de teste de qualidade.
Tudo é qualidade
Fonte: Agile Testing Condensed - Brazilian Portuguese Edition - Janet Gregory, Lisa Crispin - 2020
Como vimos, o fluxo no método de desenvolvimento ágil é bem diferente do modelo tradicional e os testes também precisam fazer sentido nessa nova realidade. Para se chegar nestes preceitos, os idealizadores organizaram um manifesto, que é:
Manifesto do Teste
- Testar continuamente mais que testar no final;
- Prevenir defeitos mais que encontrar defeitos;
- Entender o teste mais que verificar a funcionalidade;
- Construir o melhor sistema mais que quebrar o sistema;
- Time responsável pela qualidade mais que responsabilidade do testador.
Uma definição bastante objetiva sobre o testar ágil está descrita no livro “Agile Testing Condensed”, publicado em 2020, no qual as autoras Gregory e Crispin descrevem como:
Práticas de teste colaborativas que ocorrem continuamente, desde o início até a entrega e além, apoiando a entrega frequente de valor para nossos clientes. As atividades de teste se concentram na construção de qualidade no produto, usando ciclos de feedbacks rápidos para validar nosso entendimento. As práticas fortalecem e apoiam a ideia de responsabilidade de todo o time pela qualidade. (p.6)
O manifesto de teste, criado por Karen Greaves e Samantha Laing e a definição de Gregory & Crispin, são convergentes com os preceitos de cooperação. Agilidade tem o foco na melhora contínua, o teste também tem em sua essência entregar o melhor produto (o “zero defeitos”). Com isso, é possível afirmar que o Agile Testing é apenas um testador que executa os testes para uma funcionalidade específica? Ou então como em um jogo de caça e caçador, onde o testador entrará em um embate com o time de dev na busca pelo bug?
É claro que não! Essa prática é totalmente contraproducente e gera muito mais custos para clientes e equipe.
É preciso assimilar que o teste ágil demanda o envolvimento de toda a equipe. O fluxo de trabalho consiste em entregas pequenas e incrementais, ou seja, vão somando-se até construir o corpo do produto final. Além disso, durante ciclos mais curtos de desenvolvimento, elemento característico da implementação do ágil, a entrega é realizada em pequenos blocos que contemplam o produto final e o feedback é mais rápido, o que facilita a eficiência em cada sprint.
Nesse sentido, os times não ficam dependentes da figura do testador como um executor isolado, que corre atrás dos bugs na aplicação antes da entrega final, e sim, a incorporação de uma mentalidade do agile testing. Essa integração se apresenta quando a expertise de Q.A está no cotidiano do time ágil.
Fonte: Crispin e Gregory, 2009. Traduzida por Cole, 2015
Já parou para pensar no papel de testes em um time ágil?
A partir da diferenciação entre o modelo tradicional e a busca pela incorporação do desenvolvimento ágil no fluxo de trabalho, a figura do testador toma outra forma, pois o trabalho do Q.A é imprescindível para um time ágil. Dessa forma, a prática de Bult-In Quality compreende a ideia de que a busca pela qualidade não advém em eventos de testes subsequentes após finalizada uma etapa, mas são realizados de forma concomitante e incremental ao processo de concepção e desenvolvimento. Dessa forma, a qualidade é o foco e não a velocidade de entrega.
Gerenciamento das atividades
No primeiro momento, o gerenciamento das atividades deve englobar o aprendizado de técnicas, como: testes exploratórios e identificação das funcionalidades com maior valor de negócio. Com essa premissa em mente, o tempo para os testes já são estabelecidos desde o início e podem atuar em conjunto aos testes de aceitação ou correção do código.
Mapeamento dos cenários
A equipe também precisa construir a sua Definição de pronto (DoD - Definition of Done) para lidar e prevenir os possíveis problemas. Para mapear os cenários de testes as perguntas são fundamentais, por exemplo: “Qual o tipo de teste?” ou “Qual o pior cenário que pode acontecer na sua plataforma?” pode poupar tempo e direcionar para a solução, postura desejada do Q.A.
Processo contínuo de melhoria
Além da quebra de silos, entender a importância da melhoria como um processo contínuo e iterativo é a base do desenvolvimento ágil. As pessoas responsáveis pela construção, desenvolvimento e entrega do produto trabalham em conjunto para garantir a qualidade em todos os processos.
Portanto, incorporar a priorização da agilidade: é entender que não serão necessários testes manuais em todos os ciclos de sprint e avaliar o que será automatizado, a aplicação exata do Behavior Driven Development (BDD) e Test Driven Development (TDD), práticas que caminham de mãos dadas com a cultura DevOps à inclusão das operações de entrega.
Feedback rápido
O feedback rápido é essencial para uma melhoria contínua para adequar os tipos de testes, assim como o convite para profissionais de outras áreas contribuírem com perspectivas diversas. Para alinhar as múltiplas visões, o modelo de quadrantes se transforma então em uma forma de comunicação entre os times. Entenda melhor no tópico seguinte como ele funciona.
Fonte: Agile Testing Condensed - Brazilian Portuguese Edition - Janet Gregory, Lisa Crispin - 2020
O modelo dos quadrantes é usado de diferentes maneiras pelos times e com as variações que atendem às suas necessidades. Pode ser desde um quadro branco com as divisões, até uma tela em plataformas online.
O importante é buscar definir o “Pronto” para o seu time, uma tarefa difícil, mas não impossível, tendo em mente que a escolha dos testes não precisa seguir um fluxo linear. No entanto, é importante construir a História para a implementação de uma funcionalidade, por exemplo, e adicionar todos os testes necessários.
Os quadrantes procuram organizar os testes da seguinte maneira:
- Testes voltados para a tecnologia, que orientam o desenvolvimento (TDD muito comum);
- Testes voltados para negócios, que orientam o desenvolvimento (BDD, ATDD, ou SBE );
- Testes voltados para negócios, que criticam o produto;
- Testes voltados para a tecnologia, que criticam o produto.
Os testes auxiliam a guiar o desenvolvimento, a escolha do modelo cabe ao contexto do time e como se adequa ao produto. Roberto Sabino, em seu fantástico curso da Alura sobre gestão ágil, afirma que o ser Ágil é “Entregar valor mais rapidamente. Isso é ser ágil. Eu olho para um problema e abordo esse problema da forma que dá retorno o mais rápido possível”.
Por conseguinte, Lisa e Janet condensam os 10 princípios dos testes ágeis em:
- Fornecer feedback contínuo;
- Entregar valor ao cliente;
- Habilitar a comunicação face a face;
- Ter coragem;
- Manter a simplicidade;
- Praticar a melhoria contínua;
- Responder à mudança;
- Auto-organizar;
- Concentrar-se nas pessoas;
- Aproveitar.
Os princípios de agilidade no contexto dos testes, reforçam essa mudança de perfil profissional, que agora precisa de muito mais do que apenas hard skills. Atualmente, a profissão também demanda habilidades de colaboração, que garantam que as pessoas colaboradoras atuem como facilitadoras e mentoras. Além disso, a comunicação precisa ser eficiente para o sucesso do time, e esse sucesso se baseia na entrega de valor para o cliente.
O que são Continuous Testing (ou Testes Contínuos)? | #AluraMais — YouTube
Conclusão
Uma aplicação, um software ou um site começam sempre com uma ideia...
Todavia, uma ideia sozinha não concretiza coisa alguma. Por isso, é importante o envolvimento de todo o time, a mudança de cultura, de pensamento dentro da equipe ou empresa e a implementação de diferentes setores que atuem de forma colaborativa - com o foco no melhor produto para o cliente. Nesse contexto, os testes também fazem parte da concepção e do desenvolvimento. Ou seja, desde o início já se pensa em como gerar valor e garantir a qualidade do produto.
Afinal, um Q.A fortalecido não é aquele que encontra vários bugs ou é capaz de quebrar uma aplicação. Mas sim quem garante a qualidade e previne que esses problemas ocorram, trabalhando na busca contínua,por meio de uma abordagem que construa uma cadeia colaborativa.
O Agile testing em um primeiro momento, parece ser a solução dos problemas para sua empresa ou equipe. No entanto, não é uma tarefa simples de se executar, pois é preciso que haja uma mudança de pensamento e incorporação dos preceitos de colaboração, feedback e melhora contínua.
É imprescindível que você procure conhecimento sobre DevOps, o básico de teste, automação de testes, ATDD, BDD e/ou Specification by Example, para compreender ou aplicar o Agile Testing com sua equipe. A partir disso, é importante compreender o Q.A como um colaborador para a entrega de valor do seu time.
Para conhecer mais, veja:
- Agile Testing Condensed - Brazilian Portuguese Edition - Janet Gregory, Lisa Crispin
- Alura + O que é Crowdtesting?
- Curso de Fundamentos de Agilidade: seus primeiros passos para a transformação ágil
- Gerente Ágil - Metodologia Agile
- Manifesto para Desenvolvimento Ágil de Software
- Built-In Quality Sacled Agile Framework
- Avaliação de aderência de práticas do Agile Testing em times que utilizam Scrum, Monografia de Aniela Cole