O Scrum é um framework ágil de desenvolvimento de produtos baseado no conceito interativo e incremental, que entrega funcionalidades que agregam valor aos negócios em ciclos pequenos de duas a quatro semanas (sprints). Conceitualmente um time de Scrum é composto por 03 papéis: Product Owner, Scrum Master e Developers, cujo os mesmo devem ser multifuncionais e serem totalmente auto-organizados. De ante mão gostaria de frisar que Scrum não é uma metodologia, a diferença é que um framework é um construto fundamental de conceitos, valores e práticas, ou seja orientações e não regras. Uma analogia seria uma bússola e um GPS, onde a bússola lhe orienta ir para um sentido e o GPS lhe “obriga” um caminho em detalhes. Dessa forma, sem perder os 03 pilares do Scrum (inspeção, adaptação e transparência), podemos ajustar os detalhes a nossa realidade. O Scrum Guide diz isso, muitos não se atentam, principalmente se não existe uma boa bagagem em desenvolvimento de software.
Não devemos ignorar a equipe de garantia de qualidade, por mais que o time deve possuir conhecimentos diversos para realizar um objetivo. Equipe de QA deve ir além de escrever casos de teste e relatar defeitos de software, até porque teste deve iniciar na fase de desenvolvimento. Diferentemente de uma metodologia waterfall, em que há forte dependência entre as atividades, o Scrum considera que as atividades de desenvolvimento devem ser realizadas conforme a demanda com paralelismo. Essa quebra de paradigma levanta uma questão comum, “Como engajar os analistas de testes durante um sprint, uma vez que nada ainda foi construído?”. Nesse artigo quero compartilhar minha visão referente ao assunto, baseado na experiência, opinião da colega Priyanka, analista de qualidade e livros de referência no assunto.
Muito além de elaborar casos de teste
Em projetos waterfall o QA é envolvido apenas no fim do projeto, quando toda a codificação foi finalizada. Nesses projetos, geralmente o documento de requisitos e o código produzido são entregues ao QA, o qual é esperado que escreva e execute os casos de teste que verificarão e atestarão requisitos documentados. Em um time de Scrum, os analistas de QA participam de cerimônias e cumprem uma série de responsabilidades em conjunto com outros membros do time. São envolvidos desde o primeiro instante de um projeto e trabalham junto aos desenvolvedores e analistas de negócio. No Scrum, o QA não é um time à parte, que apenas testa a aplicação sendo construída. Ao contrário, é um time multifuncional em que os desenvolvedores, analistas de negócio e analistas de QA trabalham todos juntos. Além de montar os casos de teste, os analistas de QA também podem ajudar o Product Owner (PO) a escrever os casos de teste de aceite. Os analistas de QA também podem ajudar a manter o time sempre progredindo e engajado. Por fim, os QAs também podem interagir com o PO e analistas fazendo questionamentos e criticando as premissas do projeto, para ajudar na elicitação dos requisitos de negócio.
Participação na estimativa das estórias
Normalmente, os analistas de QA são bons em criar cenários de caso de teste baseado nos requisitos do usuário. Além disso, são excelentes em identificar e documentar cenários de caso de teste negativos e complexos. Na verdade, são geralmente melhores nesta última atividade que os desenvolvedores, que tendem a enfatizar mais o “caminho feliz” da história do usuário. Incluir os testadores durante o planejamento de entregas e iterações, no momento em que as histórias de usuário estão sendo estimadas, pode ajudar o time a pensar além do caminho feliz. Isso ajuda a elaboração de uma estimativa mais real, uma vez que ambos os caminhos feliz e infeliz são considerados.
Ajudar a manter visíveis o objetivo e as metas
Uma vez que a equipe evolui o trabalho por meio de atividades de teste e estabilização, os analistas de QA devem tomar para si a responsabilidade de planejar, organizar e envolver o time inteiro nos testes, além de manter todos motivados da mesma forma que o Scrum Master o faz. Considerando que poucos desenvolvedores apreciam fazer testes, os QAs, juntamente com o Scrum Master, devem fazer com que o objetivo e as metas de testes estejam visíveis a todos, além de de ajudar a manter a equipe motivada. Algumas vezes, essa postura facilita a criatividade quando os cenários de teste exigem ajuda dos desenvolvedores ou de outros membros do time.
Ser parceiro dos clientes e desenvolvedores
Uma das principais responsabilidades do QA é registrar o resultado dos testes e dar ciência deles ao Product Owner. Os QAs trabalham juntamente com o Product Owner para ajudá-los a desenvolver critérios de aceite detalhados para as estórias. Baseados no conhecimento aprendido pelo time a cada sprint, os QAs conseguem também ajudar o Product Owner a modificar ou melhorar as estórias de usuários já existentes, com o objetivo de tornar os requisitos mais próximos da realidade. Quanto maior o entrosamento, maior será a a compreensão dos requisitos, o aumento da clareza resultante desse trabalho em conjunto reduzirá as questões e dúvidas que os desenvolvedores frequentemente encontram durante a fase de codificação. E produzirá maior eficiência e economia de tempo, tanto para os desenvolvedores como para os testadores. Essa integração torna a equipe mais equilibrada e ajuda a dividir com todos a responsabilidade de concluir o trabalho, além de ajudar a obter a velocidade necessária para retornar os testes o quanto antes melhorando a qualidade do produto.
Fornecer feedback rápido
O ciclo desenvolvimento-testes-correções que as equipes waterfall repetem acabam resultando em muito trabalho adicional acarretando em desperdício de tempo. No Scrum esse ciclo é muito mais simples, uma vez que os QAs e os desenvolvedores trabalham juntos durante todo o processo. Os desenvolvedores podem sempre consultar os QAs a respeito do critério de aceite ou do comportamento esperado de alguma funcionalidade, a partir da perspectiva do usuário. Isso acontece enquanto estão desenvolvendo, o que resulta em redução dos ciclos de testes e ajustes do produto. Estudos do Standish Group indica que problemas encontrados mais cedos tornam o projeto 70% mais barato e com certeza maior satisfação do cliente.
Automatizar testes de regressão
Automação é o melhor amigo do analista de testes, pois possibilita maior capacidade de repetição, consistência e melhor cobertura dos testes de cada funcionalidade do software. De certa forma, isso é verdadeiro em um projeto Scrum com ciclos de sprint, pois o QA geralmente tem pouco tempo para testar a aplicação. Durante cada sprint, o QA deve desempenhar os testes completos dos novos recursos sendo incluídos, assim como deve desempenhar testes de regressão completos para todas as funcionalidades já implementadas. Testes automatizados retornam rapidamente resultados, quando os times implementam o processo de Integração Contínua. Sempre que é necessário construir uma nova versão do produto, os testes automatizados podem ser executados, retornando os resultados imediatamente, tanto para indicar se os novos recursos estão funcionando corretamente, como para dizer se houve problemas em recursos que estavam funcionando em versões anteriores.
Participar na preparação para lançamentos e demonstrações ao final de cada sprint, a equipe deve realizar uma reunião de revisão (Sprint Review), em que as estórias finalizadas durante o sprint devem ser apresentadas ao Product Owner e às demais partes interessadas. Essa reunião fornece uma dose saudável de prestação de contas ao time. E serve de motivação a todos para que seja finalizado o máximo possível de histórias do usuário. Os desenvolvedores devem se ocupar com o desenvolvimento das estórias que lhes foram designadas e com a correção dos defeitos. Enquanto isso, o QA deve escrever os casos de testes, esclarecer as dúvidas dos Product Owners e automatizar os testes das histórias de sprint anteriores.
Em ciclos pequenos de sprint significa que os desenvolvedores têm pouco tempo para explorar completamente as funcionalidades por si próprios. Como resultado, os desenvolvedores frequentemente consultam o QA para entender melhor as estórias do usuário, uma vez que ele detém o conhecimento completo das funcionalidades e conhece todos os requisitos e critérios de aceite. Por fim, pode ser uma boa prática o QA realizar a demonstração do produto na reunião de Sprint Review e expor perguntas vindas do negócio.
Reforçar a definição de pronto
Ter uma clara definição do “Pronto” é muito importante para o time de Scrum. Uma definição de pronto é uma lista de critérios de finalização definidos pelo time, ou seja, tudo que deve estar finalizado para considerar que a estória foi concluída. Essa lista geralmente inclui itens como escrever o código, realizar testes funcionais e de regressão, e obter a aprovação do Product Owner. Um exemplo bem simples de definição de pronto poderia conter:
1. Código finalizado;
2. Testes unitários concluídos;
3. Testes funcionais e de interface de usuário finalizados;
4. Aprovação do Product Owner.
Um time de Scrum eficiente irá sempre revisar a definição do pronto antes de iniciar nova estória, para ter certeza que todos tenham o conhecimento do que deve ser feito. Como não existe um líder de testes, ou mesmo uma equipe específica para testes no Scrum, construir um plano de testes ou seguir estratégias de testes específicas em um time de Scrum pode ser um problema. Segundo a filosofia do Scrum, deve ser preparada somente a documentação suficiente para apoiar as necessidades imediatas da equipe. Assim, o QA irá preparar apenas a documentação de alto nível suficiente para as estratégias de testes e para os planos de orientação da equipe. Por não existir líderes de QA no Scrum, é comum que o analista de QA decida as estratégias de teste.
Convergência das funções de QA e analista de negócio
Nos times de Scrum é comum ver as responsabilidades do QA e daqueles que fazem a análise de negócio começarem a convergir. O analista de negócio é comumente responsável por criar e manter o sprint e os backlogs do produto, analisar as estórias segundo a perspectiva do negócio, e definir a prioridade das solicitações do Product Owner nos backlogs. O QA, por sua vez, fica responsável por definir e refinar os critérios de aceite para cada história de usuário, por testar as funcionalidades finalizadas em cada sprint a partir da perspectiva do usuário, e por se certificar que todas as funcionalidades já existentes não deixaram de funcionar. Dessa forma, o QA e o analista de negócio compartilham várias responsabilidades, habilidades desejadas e objetivos gerais. Considerando que tanto testadores como analistas acabam definindo os requisitos, analisando as estórias, definindo e clarificando os critérios de aceite, construindo os casos de teste de aceite, e trabalhando próximo aos clientes, pode-se notar claramente que as duas funções estão convergindo.
Conclusões
Enquanto os QAs escrevem testes e relatam defeitos de software, também assumem diversas outras funções e responsabilidades na equipe. São uma parte importante do time e estão envolvidos diretamente no projeto desde o primeiro instante. QA pode assumir várias funções e responsabilidades, tais como analista de QA e representante do Product Owner. Também ajudar desenvolvedores a escrever casos de testes unitários, atuando como a consciência de qualidade da equipe, e mantendo o registro dos problemas e defeitos de software.