Unidade 8 / 11

Análise de cobertura de teste e testes baseados em risco: visando certo com IA

Ganhos:

  • Capacidade de ler métricas como cobertura de linha, ramal e condição como um mapa, não como confiança, e entender que alta cobertura pode gerar pseudoconfiança
  • Capacidade de colocar o escopo do requisito próximo ao escopo do código e tornar visíveis as lacunas de rastreabilidade com inteligência artificial
  • Capacidade de pontuar recursos com a fórmula risco = probabilidade × impacto, direcionar esforço de teste limitado para o risco mais alto e documentar fora do escopo deliberado

Você não pode testar todos os softwares para sempre; O tempo e os recursos são limitados. Portanto, a verdadeira questão é: onde colocar o esforço limitado de testes? Dois conceitos respondem a esta pergunta. A cobertura do teste – uma métrica que mede quanto do código ou dos requisitos é afetado pelos testes – representa o que está sendo testado. Testes baseados em risco – a abordagem de determinar a prioridade do teste de acordo com a probabilidade de deterioração de uma área e os danos que causará quando se deteriorar – direcionam o esforço para o maior risco. A inteligência artificial (IA) é um parceiro de análise poderoso em ambos: torna visíveis as lacunas de cobertura, sugere áreas de risco. Mas a advertência central permanece: o número de escopos que a IA vê pode ser enganoso; Até mesmo 100% de cobertura de linhas pode ser alcançada com testes que não verificam nada. Seu trabalho é ler o escopo como um mapa, não como um trust.

Lendo as métricas de cobertura corretamente

Existem vários tipos de escopo e nem todos são igualmente significativos:

  • Cobertura de linha: quantas linhas de código foram executadas pelo menos uma vez. O critério mais comum, mas mais fraco; Só porque uma linha funciona não é prova de que ela se comporta corretamente.
  • Cobertura de ramificação: se cada ramificação if (verdadeira e falsa) foi testada. Mais significativo do que uma linha.
  • Cobertura de condição: Testar cada subcondição em condições complexas separadamente.
  • Cobertura de caminho: Combinações de caminhos lógicos dentro do código. É o mais abrangente, mas difícil de alcançar plenamente na prática.
Cuidado: A porcentagem de cobertura não é um “índice de qualidade”. 100% de cobertura de linha informa que as linhas estão funcionando; não que produza o resultado correto (a pseudo-passagem na unidade 1). Use o osciloscópio como uma resposta à pergunta “para onde nunca olhei”, não como uma garantia de que “tudo foi testado”.

Pontos cegos do escopo

As métricas de cobertura medem apenas quanto do código foi executado; não consigo ver: (1) requisitos não testados (o código existe, mas a regra de negócios está errada), (2) código ausente (sem escopo para um controle que nunca foi escrito), (3) combinações de dados/estado, (4) usabilidade, desempenho, segurança. Portanto, a cobertura de requisitos (cada critério de aceitação deve ser atendido por pelo menos um teste) deve ser colocada ao lado da cobertura de código. A IA é muito útil na produção do mapeamento de testes de requisitos (matriz de rastreabilidade).

Testes baseados em riscos: onde colocamos os esforços?

Risco = probabilidade (chance de quebra) × impacto (dano em caso de quebra). Com IA, você pode pontuar uma lista de recursos nesses dois eixos e criar um mapa de calor. Alta probabilidade × domínios altos (pagamento, autenticação, integridade de dados) merecem os testes mais intensos; áreas baixas x baixas (uma tela de preferência raramente usada) o teste de luz é suficiente.

área

probabilidade

Impacto

Risco

Densidade de teste

Fluxo de pagamento

médio

muito alto

alto

Profundo + automação

autenticação

médio

muito alto

alto

Profundo + segurança

Pesquisa de produto

alto

médio

Médio-alto

Automação + descoberta

Foto do perfil

baixo

baixo

baixo

controle de luz

Página de ajuda

baixo

muito baixo

muito baixo

revisão

A armadilha de perseguir o escopo

Tornar a porcentagem de cobertura uma meta (por exemplo, a regra “a equipe deve passar de 90% de cobertura”) tem um efeito colateral perigoso: os desenvolvedores e testadores se concentram em aumentar a porcentagem em vez de abordar o risco real. O resultado geralmente é um escopo inchado, sem declarações ou testes triviais — o número parece bom, mas não há proteção. É o fenômeno da corrupção do critério quando ele próprio se torna meta: “quando uma medida se torna meta, deixa de ser uma boa medida”. Use o osciloscópio como uma ferramenta de diagnóstico e não como um boletim de desempenho.

Uma abordagem mais saudável é ler o escopo direcionalmente: “Por que a cobertura das agências está estagnada em 40% no módulo de pagamento crítico?” A questão é "a cobertura geral é de 90%?" É muito mais valioso do que a pergunta. Faça com que a IA divida o relatório de escopo por módulo e nível de risco; Destaque áreas de alto risco com baixa cobertura. Assim, o escopo se torna uma bússola que direciona o trabalho, em vez de uma porcentagem cega.

Cuidado: O slogan “100% de cobertura” é uma armadilha. Testar algum código (acessadores simples, partes geradas automaticamente) tem baixo valor; o esforço gasto ali é roubado de regras de negócios de alto risco. O objetivo é testar todos os comportamentos e riscos importantes, não todas as linhas.

Alerta fraco / Alerta forte

Fraco: “Aumentar minha cobertura de testes”.
Forte: "Dada esta lista de critérios de aceitação e esses casos de teste existentes. (1) Tabular quais critérios de aceitação não foram atendidos por nenhum teste (lacuna de cobertura de requisitos). (2) Pontuar cada recurso de 1 a 5 nos eixos de probabilidade e impacto; classificação por risco = probabilidade × impacto. (3) Para meu tempo limitado, sugira quais 5 lacunas devo fechar primeiro, começando com o risco mais alto. Não tome a cobertura da linha de código como único critério; priorize o risco de negócios. Critérios: [...] Testes: [...]"

Alerta poderoso; combina escopo com risco de negócios e prioriza mão de obra limitada.

Quatro modelos copiáveis

1) Lacuna no escopo dos requisitos:

Dados os seguintes critérios de aceitação e estes casos de teste. Produza uma tabela de rastreabilidade: cada critério -> teste(s) que o atendem. Os critérios que não possuem nenhum teste são chamados de “GAP DE COBERTURA” e os testes que não se conectam a nenhum critério são chamados de “NECESSÁRIO?” Nota: Critérios: [...] / Testes: [...]

2) Pontuação de risco:

Pontue esta lista de recursos/módulos de 1 a 5 nos eixos de probabilidade (probabilidade de quebra) e impacto (dano em caso de quebra). Risco = probabilidade × impacto. Classifique em uma tabela e especifique o tipo de teste recomendado (unidade/API/UI/reconhecimento/segurança) para cada área de alto risco. Lista: [...]

3) Interpretação do escopo:

Foi fornecido o seguinte relatório de cobertura (linha%, filial%). Diga-me o seguinte: - O que esses números NÃO provam? - Quais são as áreas que podem estar em risco apesar da alta cobertura de linhas? - Que testes adicionais você recomendaria para lacunas que a cobertura não vê (requisitos, combinação de dados, segurança)?Relatório: [colar]

4) Plano por tempo limitado:

Faltam [X horas] para a transmissão. A seguinte classificação de risco e lacunas de cobertura são fornecidas. Durante este período, é elaborado por ordem de prioridade o plano de testes que reduzirá o risco máximo. Indique claramente o que NÃO testar conscientemente e o risco aceito de fazê-lo. Dados: [...]

três mini cases

Caso 1 — cobertura 100%, confiança zero. Uma equipe ostentava 94% de cobertura de linha. A análise de “interpretação do escopo” mostrou que a maioria dos testes não continha afirmações, o que significa que eles executaram linhas, mas não verificaram nada. A cobertura protetora real era muito menor. A equipe não se concentrou em números, mas em testes de mutação (unidade 10); a taxa real de detecção de erros dobrou.

Caso 2 — Prioridade corrigida do mapa de risco. Uma equipe estava gastando 40% de seu esforço de teste em uma tela de relatórios raramente usada, ignorando o fluxo de pagamento porque “simplesmente funciona”. A pontuação de risco da IA ​​mostrou esse desequilíbrio. O trabalho foi redistribuído; Duas semanas depois, um bug de alto impacto foi encontrado no fluxo de pagamento e foi fechado antes da transmissão.

Caso 3 — Consciente fora do escopo. Após 4 horas de lançamento, a equipe decidiu o que testar e o que ignorar conscientemente com o modelo de “cronograma limitado”. Dois fluxos de alto risco foram testados em profundidade; uma tela de preferência de baixo risco foi documentada como “risco aceito” e ignorada. A decisão foi transparente e fundamentada; A versão saiu com segurança.

Erros comuns

  • Confundir porcentagem de cobertura com qualidade. Lendo a cobertura de linhas altas como garantia "testada".
  • Apenas olhando para a cobertura do código. Ignorando a cobertura dos requisitos (teste de cada critério de aceitação).
  • Testando igualmente sem levar em conta o risco. Alocar mão-de-obra em áreas de baixo risco e negligenciar fluxos críticos.
  • Escondendo-se fora do escopo. Não documentar o que não foi testado quando não houve tempo suficiente; Surpresas pós-lançamento.
  • Aceitar a pontuação de risco da IA ​​sem questionar. A IA não conhece totalmente o contexto do produto; Ajuste as pontuações com um olhar experiente.

Resumindo

A cobertura de testes e os testes baseados em riscos são duas ferramentas para direcionar esforços limitados para o lugar certo. As métricas de cobertura (linha, ramo, condição, caminho) mostram o que foi tocado, mas não provam que se comportou corretamente; O escopo é um mapa, a confiança não. Coloque a cobertura de requisitos próxima à cobertura de código. Pontue os recursos com a fórmula risco = probabilidade × impacto e esforço direto para o maior risco. A IA torna as lacunas visíveis, avalia os riscos, planeja o tempo limitado; mas a prioridade final e a decisão de “opt-out consciente” cabem ao especialista que conhece o contexto do negócio.

Tarefa de aplicativo

Escolha um módulo do seu próprio projeto. Execute o modelo “lacuna de escopo de requisitos” com IA e descubra quais critérios de aceitação não são testados. Em seguida, classifique as subcaracterísticas do módulo nos eixos de probabilidade × impacto com “pontuação de risco”. Distribua as (hipotéticas) 3 horas de tempo de teste que você tem com o “horário limitado”; Anote o que você não testará conscientemente e o risco aceito. Adicione um teste concreto que irá preencher a lacuna de cobertura de maior risco que você encontrar.

lista de verificação

  • [] Eu li a porcentagem de cobertura como mapa, não como qualidade.
  • [] Além da cobertura do código, também removi a cobertura dos requisitos.
  • [] Pontuei os recursos por probabilidade × impacto e classifiquei-os por risco.
  • [] Redirecionei o esforço de teste para o risco mais alto.
  • [] Documentei áreas que não foram testadas conscientemente e reconheci riscos.
  • [] Analisei as pontuações de risco da IA ​​com base no contexto do meu produto.