Gestão de defeitos: Ferramentas Open Source e melhores práticas na gestão de defeitos

Neste artigo, você conhecerá os conceitos, atividades e terminologia de um processo de gestão de defeitos.

O principal objetivo do teste de software é medir o nível de qualidade de um sistema, seja a aplicação executável ou os artefatos utilizados na sua construção. A qualidade de um sistema pode ser medida, essencialmente, pelo número de falhas encontradas durante a execução dos testes.

Falha, nesse contexto, é a conseqüência de um erro, defeito ou engano. Ou seja, é o desvio entre o que foi solicitado pelo usuário por meio dos requisitos e o comportamento apresentado pela aplicação executável. Em virtude da complexidade e tamanho de um sistema ou para atender normas de qualidade ou processos de maturidade, se faz necessário utilizar um processo de gestão de defeitos integrado ao ciclo de vida de desenvolvimento e teste.

Neste contexto, entender as atividades de um processo de gestão de defeitos e escolher a ferramenta adequada para automatizar a gestão do ciclo de vida de um defeito são tarefas fundamentais, como veremos mais adiante.

Neste artigo, você conhecerá os conceitos, atividades e terminologia de um processo de gestão de defeitos. Também será apresentado um exemplo prático utilizando o Mantis, ferramenta Open Source para gestão de defeitos. E, por fim, serão apresentadas outras alternativas Open Source e comerciais caso o Mantis não atenda as suas necessidades.

Processo de Gestão de defeitos

Um processo de gestão de defeitos tem o objetivo de definir práticas para prevenir os defeitos e minimizar os riscos de um projeto. A utilização de uma ferramenta automatizada, além de oferecer uma base comum para a entrada de informações, também oferece um meio para fomentar a integração entre o time de desenvolvimento e o time de testes. Além disso, por meio dos relatórios de gestão e métricas geradas por essas ferramentas, os gestores do projeto poderão promover a melhoria contínua do processo estabelecido.

Genericamente, o termo Erro (Error) é utilizado para indicar uma diferença entre valor computado, observado ou medido em relação ao esperado. No entanto, o padrão IEEE 610.12-1990 (IEEE Standard Glossary of Software Engineering Terminology) distingue a terminologia da seguinte forma:

Neste artigo, o termo defeito será usado de forma genérica, podendo representar um erro, engano, defeito ou falha. Segundo o livro, “Base de Conhecimento do CSTE” do QAI, os elementos chave de um processo de gestão de defeitos são (Figura 1):

Figura 1. Elementos chave de um processo de gestão de defeitos

Ciclo de vida de um defeito

Como discutimos anteriormente, a qualidade de um sistema pode ser medida, essencialmente, pelo número de defeitos encontrados durante a execução dos testes.

Podemos afirmar que os defeitos são encontrados por meio da execução formal dos testes (testes estruturais ou funcionais), durante a utilização do sistema em produção ou, até mesmo, por acidente. A priori, podemos classificar os defeitos nas seguintes categorias:

Uma vez que o defeito for encontrado, seja por intenção ou por acidente, o próximo passo deverá ser o relato (ou reporte) desse defeito por meio de algum mecanismo estabelecido no processo de gestão de defeitos.

Este mecanismo poderá ser, desde uma simples planilha, até uma ferramenta automatizada. Por motivos óbvios, uma ferramenta automatizada e construída para esse propósito será, sem sombra de dúvida, muito mais eficiente do que uma simples planilha ou solução alternativa.

De qualquer forma, tão logo o defeito seja relatado, ele deverá ser submetido a um ciclo de vida pré-definido pelo processo de gestão de defeitos. Este ciclo de vida define os fluxos que o defeito deverá percorrer até o seu fechamento.

A Figura 2 descreve genericamente um ciclo de vida de um defeito aderente ao processo de gestão de defeitos apresentado anteriormente. Devemos lembrar que esse é um exemplo didático, existem fluxos alternativos e papéis que não estão presentes nesta figura.

Figura 2. Ciclo de vida de um defeito genérico

Recomendações para o relato de defeitos

Notamos que, muito embora o relato de um defeito seja um dos passos fundamentais do processo de gestão de defeitos, normalmente ele é relegado para segundo plano. A listagem abaixo apresenta as diretrizes que devem ser seguidas durante o relato de um defeito com base nas recomendações descritas no livro “Base de conhecimento em teste de software”:

Severidade X Prioridade

A classificação da severidade e prioridade dos defeitos é, de forma similar ao relato de defeitos, um ponto normalmente negligenciado e foco de interpretações incorretas. A classificação incorreta da severidade e da prioridade normalmente contribui para a ineficiência da priorização e agendamento da correção dos defeitos. O efeito colateral direto desse problema é a má utilização dos recursos em função do enfoque na correção de defeitos menos prioritários.

A grosso modo, podemos afirmar que a severidade de um defeito define o impacto do defeito no funcionamento da aplicação. Por outro lado, a prioridade indica a ordem de correção do defeito (defeitos com alta prioridade são corrigidos imediatamente ou num curto prazo de tempo). De modo geral, defeitos com alta severidade são classificados com alta prioridade. No entanto, podem existir diversas situações onde não podemos aplicar essa regra. Por exemplo, a corrupção dos dados de uma aplicação no Windows 3.11 é um defeito com alta severidade mas, no entanto, deve ter baixa prioridade em virtude de que 99,9% dos usuários da aplicação utilizam versões mais atuais do Windows. A justificativa para esse critério é: Por que priorizar a correção de um defeito que vai beneficiar apenas 0,01% dos usuários?

Para evitar a subjetividade da classificação, sugere-se que os critérios para cada nível de prioridade e severidade sejam definidos na documentação do processo de gestão de defeitos. Para fins didáticos e de entendimento, serão apresentados na Tabela 1 e Tabela 2 exemplos de critérios para classificar a severidade e a prioridade dos defeitos respectivamente.

Severidade Descrição
Alta Bloqueia completamente a utilização de uma funcionalidade básica ou da aplicação inteira
Média Bloqueia a utilização de uma funcionalidade. Mas, no entanto, a funcionalidade pode ser usada por meio da utilização de um contorno (workaround) conhecido
Baixa Problemas cosméticos e solicitações de melhorias
Tabela 1. Classificação da prioridade
Prioridade Descrição
1 O defeito deve ser corrigido imediatamente (até um dia útil). A aplicação não pode ser liberada sem a correção deste defeito
2 É altamente desejável que o defeito seja corrigido tão logo seja possível (até cinco dias úteis). A aplicação não pode ser liberada sem a correção deste defeito
3 Defeito de baixa prioridade. A aplicação pode ser liberada com esse defeito
Tabela 2. Classificação da severidade

Mantis

O Mantis é uma ferramenta Open Source automatizada escrita em PHP cujo principal objetivo é dar suporte ao processo de gestão de defeitos. O Mantis controla o ciclo de vida de um defeito, desde o seu relato até o seu fechamento, por meio de fluxos (workflows) personalizáveis, como pode ser observado na Figura 3.

O endereço do site do Mantis está disponível na seção Links. Caso você tenha interesse de conhecê-lo com maior profundidade, os passos para a instalação são os seguintes:

  1. As pré-condições para a instalação são (PHP 4.0.6 ou superior, MySQL 3.23.2 ou superior, Apache ou IIS).
  2. Faça o download do Mantis no site disponível na seção Links.
  3. Descompacte o arquivo zip do Mantis na pasta www ou htdocs do servidor WEB (Apache ou IIS).
  4. Abra o seu navegador e acesse o seguinte endereço: (http://localhost/mantis_1.0.5/).
  5. Na janela Pre-Installation Check, preencha os campos username com o nome da conta de usuário para acesso ao banco de dados MySQL e o campo password com a senha.
  6. Deixe os valores default nos demais campos.
  7. Pressione o botão Install/Upgrade Database.
  8. Ao final do processo, abra o seu navegador e acesse o seguinte endereço: (http://localhost/mantis_1.0.5/login_page.php).
  9. Faça o primeiro login com o usuário padrão (administrator/root). Lembre-se de mudar a senha deste usuário.

O Mantis é instalado em inglês por padrão. Caso você prefira utilizar o Mantis com os textos traduzidos para a língua portuguesa, então siga os passos descritos abaixo:

  1. Faça o login normalmente com o seu usuário e senha.
  2. Clique no menu “My Account” e então selecione a opção “Preferences”.
  3. No campo Language selecione a opção "portuguese_brazil".
  4. Pressione o botão "Update Prefs".
Figura 3. Página inicial do Mantis

Entre as diversas funcionalidades oferecidas pelo Mantis, devemos destacar as seguintes:

A fim de dar ao leitor uma exposição sobre as principais funcionalidades do Mantis e como elas atendem os principais fluxos de um ciclo de vida de um defeito, vamos simular na prática o relato de um defeito e acompanhar todos os passos até o seu fechamento.

Tão logo um testador ou usuário encontre um defeito, seja por intenção ou por acidente, o próximo passo deverá ser o relato (ou reporte) desse defeito.

No nosso cenário, vamos relatar um defeito (problema no recurso de seleção de textos quando existe uma tabela no topo do documento) do OpenOffice Writer (processador de texto Open Source).

Para realizar tal tarefa, você deverá selecionar o menu “Relatar Caso” do Mantis. Uma vez que a janela de relato for exibida, você deverá informar o resumo do defeito, a descrição, os passos para reproduzir e assim por diante, como pode ser observado na Figura 4.

É importante lembrar que o correto preenchimento dos campos severidade (gravidade) e prioridade neste passo é de extrema importância para a priorização e agendamento da correção do defeito.

Figura 4. Relato de um defeito

Assim que o defeito for relatado, o analista de teste (ou líder de desenvolvimento) poderá filtrar os defeitos cadastrados recentemente para confirmar e reconhecer se o que foi relatado realmente é um defeito ao invés de um mal entendimento do comportamento esperado.

Se for confirmado que o relato não é um problema, ele é imediatamente fechado. Caso contrário, o analista de teste (ou líder de desenvolvimento) deverá confirmar se a severidade (gravidade) e prioridade foram classificadas corretamente e atribuir o defeito a um desenvolvedor, como pode ser visto na Figura 5.

Nesta altura, também poderão ser realizadas a projeção da complexidade e a estimativa do tempo necessário para finalizar a correção do defeito.

Figura 5. Reconhecimento, priorização e agendamento da correção de um defeito

O desenvolvedor, por sua vez, receberá um e-mail automaticamente conforme o fluxo (workflow) definido no Mantis, como pode ser observado no exemplo apresentado na Figura 6. De qualquer forma, o desenvolvedor poderá visualizar os defeitos atribuídos a ele diretamente no Mantis por meio da página “Minha Visão”. Nesta página (Figura 7), são apresentados e consolidados todos os defeitos, inclusive os defeitos associados ao usuário logado no Mantis.

Assim que o desenvolvedor receber o e-mail notificando que a correção do defeito foi programada e atribuída a ele, o próximo passo será a execução da correção propriamente dita.

Dessa forma, tão logo a correção seja finalizada, o desenvolvedor deverá reportar a correção do defeito por meio do Mantis. Para tal tarefa, o desenvolvedor deverá mudar a resolução do defeito para “Corrigido” e descrever quais foram as modificações necessárias para corrigir o defeito no campo “Anotação”, como pode ser visto na Figura 8.

Figura 6. E-mail enviado pelo Mantis ao desenvolvedor
Figura 7. Consolidação dos defeitos associados ao usuário logado
Figura 8. Reporte da correção de um defeito

Por fim, assim que for reportada a correção do defeito, o testador deverá executar o re-teste. Durante o re-teste, o testador poderá identificar que o defeito não foi corrigido corretamente ou foi parcialmente corrigido. Neste caso, o defeito deverá ser reaberto e o ciclo de vida do defeito é reiniciado.

Por outro lado, o defeito deverá ser fechado caso ele tenha sido corrigido corretamente. Para realizar tal tarefa, o testador deverá mudar o status do defeito para “Fechado” e descrever algum comentário sobre o fechamento no campo “Anotação”, como pode ser visto na Figura 9. Dessa forma, chegamos ao final da simulação de um ciclo de vida de um defeito e a apresentação das principais funcionalidades do Mantis.

Figura 9. Fechamento de um defeito

Métricas e relatórios de gestão

A norma IEEE Std 829-1998 (IEEE Standard for Software Test Documentation) define a documentação e relatórios necessários para a execução de um projeto de teste de software. Dentre os relatórios sugeridos, existe um relatório chamado “Relatório de Incidente de Teste”. Este relatório registra e consolida as ocorrências que precisam de algum tipo de investigação. Ele é normalmente utilizado para registrar os defeitos encontrados durante a execução dos testes.

Ferramentas automatizadas de gestão de defeitos, tais como o Mantis, geram diversos relatórios e gráficos com métricas que poderão fornecer dados para alimentar o Relatório de Incidente de Teste.

O Mantis, além de oferecer um relatório com o resumo consolidado de todos os defeitos relatados (Figura 10), também permite a visualização de gráficos com as principais métricas utilizadas na gestão de defeitos (Figura 11). Na listagem a seguir, são apresentadas diversas sugestões de indicadores e métricas de um processo de gestão de defeitos eficaz, afinal, você não pode gerenciar o que você não pode medir:

Figura 10. Resumo consolidado de todos os defeitos relatados
Figura 11. Principais métricas utilizadas na gestão de defeitos

Conclusão

Neste artigo foram apresentados os conceitos e melhores práticas na gestão de defeitos. O objetivo principal do artigo era destacar a importância da gestão de defeitos como um processo de apoio ao desenvolvimento e teste de software. Para facilitar o entendimento do leitor, foram demonstrados na prática os conceitos discutidos por meio da utilização do Mantis (ferramenta Open Source para gestão de defeitos).

Se o leitor quiser se aprofundar no assunto, são apresentadas na Tabela 3 algumas das principais ferramentas comerciais e Open Source para a gestão de defeitos. Não foram esgotadas todas as opções disponíveis, mas já é um bom ponto de partida para auxiliar o leitor a encontrar a solução ideal para a sua necessidade.

Tabela 3. Ferramentas de gestão de defeitos alternativas

Artigos relacionados