Aprenda a aumentar a qualidade do seu Software

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.

Pirâmide de teste indicando que quanto mais no topo da pirâmide estiver o teste, maior será seu custo e tempo de desenvolvimento, e quanto mais a baixo da pirâmide menor será seu tempo e custo de desenvolvimento
Referência da imagem: https://www.pngwing.com/pt/free-png-hnijr

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.

Não foi fornecido texto alternativo para esta imagem
Referência da imagem: https://twitter.com/engsoftmoderna/status/1337710084697296896

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.

Não foi fornecido texto alternativo para esta imagem
Referência da imagem: https://blog.adaptworks.com.br/2013/11/introducao-do-quadrante-de-teste-agil/

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.

Não foi fornecido texto alternativo para esta imagem
Referência da imagem: https://medium.com/@nmuniz/pirâmide-de-testes-328ca50f31cd

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.

Não foi fornecido texto alternativo para esta imagem
Referência da imagem: da autora

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.

Gostou do conteúdo? Não deixe de compartilhar!

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *