Bugs funcionais estão relacionados à funcionalidade de uma parte de software. Exemplos: Um botão não envia o formulário, a pesquisa não reage à entrada do usuário, o aplicativo trava. Toda vez que você realiza uma ação e o site/aplicativo não responde como você esperava, pode ser um problema funcional. Nossa informação limitada sobre os produtos de nossos clientes e a falta de conhecimento sobre suas implementações tornam difícil determinar se um comportamento observado é intencional ou realmente um bug. Fazersuposições bem fundamentadas com base na experiência e analisar o comportamento do produto testando diferentes cenários pode ajudá-lo a encontrar uma resposta.
Como determinar se o comportamento encontrado é um bug funcional:
Tente descobrir se uma funcionalidade foi projetada de uma forma específica ou se está realmente quebrada. Teste-a sozinha e em combinação com outras funcionalidades para identificar diferenças potenciais.
Pense nas intenções do cliente e considere que o produto pode funcionar exatamente como foi implementado.
Encontre evidências de que algo não está funcionando como deveria. Apoie sua alegação.
Exemplo: Uma funcionalidade de loja online funciona de maneira diferente do que em outras lojas online que você conhece. Isso não significa que a funcionalidade está quebrada. O cliente pode implementar seu produto da maneira que quiser.
Exemplo: Você afirma que um campo de formulário não é validado e é um bug. Há alguma indicação de que eles pretendiam que o campo fosse validado? Forneça evidências mostrando que o campo é validado em alguns casos, mas não em outros. Se você não fornecer evidências, é uma alegação não fundamentada.
Um problema visual ou de conteúdo se torna um erro funcional quando impede uma funcionalidade e, portanto, deve ser relatado como um bug funcional.
Uma funcionalidade funciona consistentemente da mesma maneira em diferentes cenários e sem problemas óbvios? Então, provavelmente é intencional (não é um bug) e você está apenas sugerindo uma melhora (sugestão de usabilidade).
Avaliação de Gravidade
Ao julgar o nível de gravidade funcional de um bug, vários fatores devem ser considerados: o impacto funcional do problema, a extensão do problema, se existem soluções alternativas ou se é um bloqueio, se há perdas potenciais notáveis de vendas e se você pode comparar esse bug com outros bugs da mesma gravidade.
Uma abordagem direta é observar o impacto funcional do bug. Pense em quão grave é que uma função não esteja disponível. A funcionalidade subordinada não bloqueará os usuários para alcançar seu objetivo, ao contrário da funcionalidade principal quebrada. Pergunte a si mesmo o quão relevante aquela parte da funcionalidade é no contexto do produto como um todo.
A questão de quantas pessoas, produtos ou itens são afetados por um problema funcional é um fator determinante para a extensão do problema. Por exemplo, o botão "Adicionar ao Carrinho" não reage em todas as páginas de detalhes do produto de uma loja online ou apenas em uma específica? Um pequeno grupo de usuários é afetado pelo problema ou todos?
Considere se você pode alcançar seu objetivo por meio de um caminho ou opção alternativa ou se uma parte da funcionalidade permanece indisponível. Quando você encontra intuitivamente uma maneira de contornar um bug, essa chamada solução alternativa permite que você ainda alcance seu objetivo. Um bug com uma solução alternativa recebe um nível de gravidade mais baixo do que um bug equivalente sem uma solução alternativa. Finalmente, quando não há solução alternativa para a funcionalidade principal quebrada, é um bloqueio.
Estimar uma possível perda de vendas é uma abordagem secundária, pois muitas vezes você só pode assumir como as pessoas podem reagir a um bug. No entanto, leve em consideração o quão alta é uma possível perda. Faz uma grande diferença se o preço de um produto difere por centavos ou centenas de dólares.
Depois de tudo, você também pode comparar seu bug com os que o mesmo líder de equipe (Team Leader) já aprovou neste teste para descobrir se o seu nível de gravidade é apropriado.
Temos três níveis de gravidade para bugs funcionais:
BAIXA:
Impacto mínimo no uso do produto.
O produto mostra um comportamento não intencional, mas o uso geral não é afetado.
Poucos usuários, produtos ou itens estão envolvidos.
Uma funcionalidade/parte da funcionalidade está quebrada ou indisponível, mas uma solução alternativa simples resolve o problema.
ALTA:
Impacto sério no uso do produto, mas a funcionalidade principal está intacta.
Um grande número de usuários, produtos ou itens está envolvido.
Funcionalidade não trivial está quebrada ou indisponível e nenhuma solução alternativa existe.
Funcionalidade importante está quebrada ou indisponível, mas uma solução alternativa existe (portanto, não é um bloqueio).
CRÍTICA:
O bug impede a funcionalidade central do aplicativo ou site.
Um impedimento impede o usuário de prosseguir com um processo principal, por exemplo, o processo de checkout.
O bug causa uma perda potencial e notável de vendas para a empresa que opera o aplicativo ou site.
Avaliações Comuns
Temos uma lista de casos que têm níveis de gravidade fixos. O esquema de avaliação acima não se aplica a casos nessa lista. Como a lista será atualizada ao longo do tempo, verifique-a regularmente.
Bugs de Caso Extremo
Bugs de caso extremo ocorrem quando uma parte da funcionalidade é usada de maneira inadequada. A funcionalidade não está quebrada quando usada com dados e ações de usuário típicos. Aqui estão alguns exemplos:
Ações instantâneas, como minimizar um aplicativo após clicar em um botão
Fazer a mesma coisa repetidamente, por exemplo, abrir e fechar listas
Qualquer bug que só ocorre após um conjunto inadequado de ações
Cada caso deve ser avaliado separadamente. Bugs de caso extremo relevantes para nossos clientes são encaminhados como bugs de Baixa gravidade. Casos irrelevantes, que representam a maioria dos bugs de caso extremo, são rejeitados.
Bugs Forçados
Forçar um bug por meio de comportamento não típico ou condições especiais geralmente está fora do escopo, pois tais bugs não são relevantes para nossos clientes. Comportamento não típico não reflete o comportamento normal dos usuários. Exemplos de comportamento não típico ou condições especiais incluem:
Toque em vários elementos ao mesmo tempo
Pressionamento aleatório de botões
Clique rápido em um botão várias vezes
Reduzir o tamanho da janela para tamanhos não típicos
Memória RAM ou interna cheia levando a um comportamento inesperado
Usar versões não oficiais, beta ou modificadas do sistema operacional