# Priorização de Testes

  • A priorização é uma das formais mais eficientes para produzir produtos de alta qualidade de acordo com os padrões do mercado e de consumo.

  • É uma forma de priorizar e tabelar os casos do mais importante ao menos importante.

  • Minimiza custos, esforço e tempo durante a fase de testes.

  • É importante conhecer bem os benefícios, desafios e tecnicas de priorização dos casos para colher os melhores benefícios

Priorizar testes é ordenar os casos de testes a serem eventualmente conduzidos.

Priorizar os testes ajuda a satisfazar as limitações de tempo e orçamento na testagem para melhorar a taxa de detecção de falhas o mais rápido quanto o possível

# Categorias de Prioridade

  • Prioridade 1:

    Casos de teste que precisam ser executados, ou as consequências podem ser piores após o lançamento do produto. Estes são casos de teste críticos, onde as chances de uma funcionalidade ser quebrada por uma funcionalidade nova são mais prováveis.

  • Prioridade 2:

    Casos que podem ser executados se houver tempo. Estes não são tão críticos, mas podem ser executados como uma medida de boas-práticas para dar um double check antes do lançamento.

  • Prioridade 3:

    Casos de teste que não são importantes o suficiente para serem testados antes do lançamento atual. Estes podem ser testados depois, logo após o lançamento da versão atual do software, novamente, como uma medida de boas práticas. Entretanto, não há dependência direta para com eles.

  • Prioridade 4:

    Casos que nunca são importantes, já que seu impacto é irrisório.

No esquema de priorização, a diretriz principal a ser seguida é garantir que os casos de baixa prioridade não devem causar impactos severos no software. Esta priorização deve possuir diversos objetivos, assim como:

  • Baseada na funcionalidade que já foi comunicada aos usuários e é crucial do ponto de vista do business.

  • Avaliar a probabilidade de falhas ao checar a taxa de detecção de falhas de uma categoria de testes. Isto ajuda a entender se esta categoria é crítica ou não.

  • Aumentar a cobertura de código do sistema sob testes com maior velocidade utilizando os critérios de cobertura usados anteriormente.

  • Aumentar a taxa de detcção de falhas críticas em uma categoria de teste ao localizar falhas similares que ocorreram mais cedo no processo de testes.

  • Aumentar a probabilidade de falhas serem reveladas devido a mudanças específicas no código anteriormente no processo de Teste de Regressão.

# - Tipos de Priorização de Casos de Teste

  • Priorização Geral:

Aqui, os casos de teste são priorizados de acordo com o quão úteis eles serão para versions subsquentes do produto. Isto não requer qualquer conhecimento das versões modificadas, portanto, uma priorização geral pode ser aplicada logo após o lançamento de uma versão do programa fora do horário de pico. Devido a isso, o custo de aplicação desta categoria de priorização é amortizado durante lançamentos subsquentes.

  • Priorização de Casos de Teste Específica por Versão:

Nesta modalidade, priorizamos os casos de forma que eles serão úteis de acordo com cada versão do produto. Isto requer conhecimento de todas as mudanças que foram feitas no produto. É aplicado antes da testagem de regressão na versão modificada.

# Quais são as Diferentes Técnicas para Priorização?

Podemos priorizar os casos de teste de acordo com as seguintes técnicas:

# 1. Baseado em Cobertura

Foca na cobertura de código pelos testes de acordo com as seguintes técnicas:

  • Cobertura Total de Extratos:

    Aqui, o número total de extratos cobertos por um caso de testes é usado como fator para priorizar os testes. Por exemplo, um teste que cubra 5 extratos receberá prioridade sobre um que cubra somente 2
    
  • Cobertura de Extrato Adicional:

    Esta técnica envolve selecionar iterativamente um caso de testes com o máximo de cobertura, e, então, selecionar um caso que cubra o que o anterior deixou de cobrir. O processo é repetido até que tudo esteja coberto.

  • Cobertura de Branches Total:

    Aqui, branches se refere ao total de possibilidades de output em uma condição, e a maior cobertura destas é o fator determinante.

  • Cobertura de Branches Adicional:

    De forma semelhante a cobertura de extratos adicional, aqui a técnica pega o teste com a maior cobertura de branches, e vai iterativamente selecionando os próximo de acordo com aqueles que o anterior não cobre.

# 2. Baseada em Risco

Aqui utiliza-se análise de risco para identifiar possíveis áreas-problema que, em caso de falha, podem levar a graves consequências.

# 3. Baseada nas Regras de Negócio

Nesta técnica a priorização é feita com base em diversos fatores que determinam as regras de negócio. Estes fatores são documentados nas condições de aceite. Casos de teste são pensados considerando a prioridade assinalada pelo cliente para uma regra, sua complexidade e volatilidade.

Os fatores usados são:

  • Prioridade Indicada pelo Cliente: é a medida da importante de regras de negócio para um cliente sob o ponto de vista do business.
  • Volatividade da Regra de Negócio: indica quantas vezes a regra de negócios mudou.
  • Complexidade de Implementação: indica o esforço ou tempo necesário para implementar uma regra de negócio.
  • Tendência a erro: indica o quão passível de erro uma regra de negócio foi em versões anteriores do software.

# 4. Baseada em Histórico

Nesta técnica, a priorização é feita no histórico dos casos de teste, ou seja, os resultados das execuções anteriores são verificadas.

É usado para determinar as possíveis chances de falha nos testes e aqueles em que o erro é mais provável recebem prioridade. A verificação de histórico é utilizada para selecionais quais casos de testes poderiam ser considerados para retestagem no ciclo atual.

# 5. Baseado na Noção de Custo

Aqui, o fator custo entra em voga, testes que custem menos serão priorizados sobre testes com maior custo, isto inclui:

  • Custo do processo de teste de regressão.
  • Custo da juntada das regras de negócio.
  • Custo para analisar se deve selecionar um caso de teste.
  • Custo de priorização dos casos de teste.
  • Custo da execução completa do teste.