A Pirâmide de teste é um modelo empírico de como deve ser a estrutura de testes aplicadas dentro de um produto e em conjuntura com seus indicativos de custo e velocidade, é possível dimensionar o quanto cada categoria de teste irá custar em relação à velocidade de desenvolvimento e o custo atrelado a ele.
Existe enumeras pirâmides de testes ao realizar uma pesquisa simples, e também é possível verificar até algumas varianças dela como a pirâmide invertida, sorvete ou até mesmo o cupcake de teste.
Estas variações da pirâmide teste, são conhecidas como anti pattern (anti padrão), e por mais que seja reconhecido como não performático e ineficiente é utilizado em grande escala por muitas empresas, isso acontece devido à imaturidade ou até mesmo acreditar que o famoso E2E irá salvar o produto e dar satisfação ao cliente.
Outra forma de analisar a estrutura dos testes em desenvolvimento de software voltada para times ágeis é o Quadrante de Teste Ágil, onde através da divisão em quatro quadrantes e com base em seus quatro pilares, sendo eles,Foco em negócio,Critica o produto,Suporte ao time e Foco em Tecnologia, é possível dividir os testes conforme a meta de qualidade desejada.
Olhando para estes dois modelos é possível criar uma união deles e trabalhar de forma mais assertiva os testes do seu produto, e mostrar para o seu time os seguintes pontos de melhoria que o projeto ganharia:
- Priorização e Escolha dos testes: Iniciar com testes que levam menos tempo e custo para seu desenvolvimento e evoluir de forma gradual.
- Assertividade: Ser mais assertivo em qual categoria de teste utilizar na etapa atual do desenvolvimento do software.
- Automação: Saber o que automatizar.
- Qualidade: aumento da qualidade dos testes em todas as etapas do desenvolvimento.
Mas como unir os dois modelos?
Bom a pirâmide de teste abaixo encontra-se divida em seus três pilares Unit, Service (Integração e Componente) e UI (Interface do Usuário com a usabilidade, acessibilidade e Testes Funcionais e Exploratórios), esta imagem mostra de forma mais clara o que contém em cada divisão e através disso vamos conectar com as fases do Quadrante ágil.
Fase 1: Foco em Tecnologia e Suporte ao Time — Parte 1
Objetivo: Na etapa de Unidade, será validado de forma unitária se a função está realizando o proposto para ela. O tempo de execução destes testes é baixo facilitando assim a sua execução a cada nova implementação ou refatoração, desta forma ao final da codificação você verifica se o seu desenvolvimento afetou alguma outra parte do sistema.
Quadrante: Q1
Faixa da Pirâmide: Unidade ****
Custo: Baixo
Tempo de Codificação: Baixo
Responsável: Normalmente os responsáveis por esta parte são os próprios devs, porém nada impede de QA ou qualquer outro membro do time que se sinta confortável execute a função.
Categoria de Teste: Automatizado
Fase 1: Foco em Tecnologia e Suporte ao Time — Parte 2
Objetivo: Na etapa de Serviço, será validado os componentes desenvolvidos e sua resposta ao integrar com outros serviços, nesta etapa pode ser pegos problemas relacionados a integrações entre serviços, por exemplo, um produto é cadastrado, porém, não se encontra na base, este tipo é muito comum de ser encontrado em qualquer categoria de sistema.
Quadrante: Q1
Faixa da Pirâmide: Serviço
Custo: Médio
Tempo de Codificação: Médio
Responsável: QAs e Devs.
Categoria de Teste: Automatizado
Fase 2: Suporte ao time e Foco em Negócio
Objetivo: Na Etapa dos Testes Funcionais, são validados se os critérios de aceite estabelecidos pelo POs estão coerentes com o desenvolvido, protótipo são validados, documentações são criadas e qualquer outro processo que ajude o time e vise a melhoria do negócio deve ser adicionado nesta fase.
Quadrante: Q2
Faixa da Pirâmide: UI
Custo: alto
Tempo de Codificação: alto
Responsável: QAs e POs.
Categoria de Teste: Automatizado e Manual
Fase 3: Foco em Negócio e Critica o Produto
Objetivo: Nesta etapa, começamos a criticar o produto, validar se ele esta de acordo com normas e padrões desejados. Testes de acessibilidade, usabilidade, testes alfa e beta com clientes também são realizados nesta etapa.
Quadrante: Q3
Faixa da Pirâmide: UI
Custo: alto
Tempo de Codificação: –
Responsável: QAs e POs juntos são responsáveis por testar acessibilidade da aplicação, realizar testes com o cliente e colher opiniões sobre as funcionalidades.
Categoria de Teste: Manual
Fase 4: Critica ao Produto e Foco em Tecnologia
Objetivo: Esta etapa de teste, é testado a performance e segurança do sistema, ela não é citada na piramide de teste, porém poderia ser incluída no topo depois ou dividindo espaço com os testes exploratórios.
Quadrante: Q4
Faixa da Pirâmide: –
Custo: alto
Tempo de Codificação: –
Responsável: QAs e Devs são imprescindível nesta etapa, pois o trabalho é conjunto para análise de arquitetura, memória, entre outros tópicos para ser possível criar um teste preciso na funcionalidade necessária.
Categoria de Teste: Ferramentas
Quando dividimos as categorias de teste pelos quadrantes de teste ágil entendemos a sua importância em cada fase do desenvolvimento, e quando olhamos para a pirâmide vemos a relação custo/tempo gasto de desenvolvimento/execução dos testes, além de verificar a quantidade de teste que deve ter em cada uma das faixas da pirâmide.
Mas agora você deve estar se questionando, mas Priscila, então eu não devo mais focar meus testes em E2E? A minha resposta é Sim e Não, e vou explicar o meu ponto de vista para você.
Quando iniciamos os testes na base, fase 1 (testes unitários), garantindo que toda a função, método, componente, funcionalidade (isolada) e integração está funcionando de forma correta. Então se o time possui no mínimo 85% de cobertura nestes testes, conseguimos garantir que as novas implementações, correções, bugfix, etc., não afetaram as funcionalidades já existentes.
Quando avançamos para Fase 2, verificamos se o fluxo está corrente, ou seja, pegamos os requisitos do PO e analisamos se os critérios de aceite estão sendo cumpridos, analisamos protótipos e também documentamos o que é necessário para agregar valor ao time e ao negócio, e aqui nesta fase é implementado os testes E2E, mais sempre lembrando que deve ser automatizado o que agrega valor ao cliente e não tudo que foi implementado, por este motivo que esta no topo da pirâmide (quanto mais no topo, menor são as implementações). No time em que atuo costumo levantar os seguintes pontos para validar a viabilidade de desenvolvimento:
- O tempo de desenvolvimento/manutenção é superior a 7h = não deve ser automatizado, a não ser é claro que gere um valor agregado muito alto ao cliente, e seu teste manual demore mais que o tempo de desenvolvimento.
- Os dados serão chumbados? Se a resposta for sim, então não deve ser implementado, se o teste não consegue simular o usuário, ele perde o sentido.
Conclusões:
O Quadrante de teste ágil, irá fazer você entender a importância de cada teste em um determinado momento do desenvolvimento do seu software, você pode entender o que precisa ser implementado e o que vai ser implementado no futuro, em conjuntura com a Pirâmide de Teste é possível alinhar o tempo e o custo de desenvolvimento, além de entender o volume de testes coerente em um processo de desenvolvimento de um novo produto ou sua sustentação.
Deixe um comentário