quarta-feira, 5 de janeiro de 2011

Como priorizar falhas / defeitos?

A Matriz GUT (Gravidade, Urgência e Tendência) é uma ferramenta utilizada na priorização das estratégias, tomadas de decisão e solução de problemas de organizações/projetos.
Gravidade: impacto do problema sobre coisas, pessoas, resultados, processos ou organizações e efeitos que surgirão, caso o problema não seja resolvido.
Urgência: relação com o tempo disponível ou necessário para resolver o problema.
Tendência: potencial de crescimento do problema, avaliação da tendência de crescimento, redução ou desaparecimento do problema.
A pontuação de 1 a 5, para cada dimensão da matriz, permite classificar em ordem decrescente de pontos os problemas a serem atacados na melhoria do processo.
Após atribuída a pontuação, deve ser multiplicado GxUxT e achar o resultado, priorizando em ordem decrescente, de acordo com os pontos obtidos.
Critérios GUT
Pontos
Gravidade
Urgência
Tendência
5
Prejuízo / Dificuldade é extremamente grave
Necessária ação imediata
Se nada for feito, agravamento será imediato
4
Muito grave
Com alguma urgência
Vai piorar em curto prazo
3
Grave
O mais cedo possível
Vai piorar em médio prazo
2
Pouco Grave
Pode esperar um pouco
Vai piorar em longo prazo
1
Sem Gravidade
Não tem pressa
Não vai piorar ou até pode melhorar

Matriz:
Organização'
Processo:
Problemas
G
U
T
Total
Priorização
1


2






3






4






5






6






7








A partir da matriz GUT pode ser desenvolvida uma nova matriz que contemple as necessidades de cada organização. Abaixo estarei mostrando outro exemplo na qual acredito que atenderá a boa parte dos casos:
Detectabilidade
Opções
Critérios de definição
1-Alta
Alto grau de certeza de que o erro será detectado pelo usuário durante a operação normal do sistema em suas funcionalidades mais elementares / usuais.
2-Moderada
O erro é percebido apenas em situações específicas ou funcionalidades não essenciais do produto.
3-Baixa
Erro detectado em situações extremamente específicas e que necessitam de uma rara combinação de fatores para que ocorra. O erro raramente será percebido pelo usuário.

Severidade
Opções
Critérios para Definição
Exemplos
1-Crítico
- Falha geral da aplicação.
- Perda de dados.
- Instabilidade da aplicação ou de seus serviços.
- Impede a continuidade dos testes ou do uso da aplicação como um todo.
- Build da aplicação corrompido.
- Funcionalidades principais da aplicação seriamente comprometidas.
- O erro não permite a continuidade dos testes ou compromete severamente o resultado dos mesmos.
- Erros de Java, PHP, SQL, etc.
- “Fatal error”.
- Funcionalidade desenvolvida em desacordo com os requisitos especificados (desvio significativo).
- Problemas graves de desempenho.
- Incompatibilidade com o browser ou outros itens de ambiente.
- Links quebrados.
- Loops infinitos.
- Produtos cartesianos em consultas/relatórios.
2-Grave
- Sério comprometimento de funcionalidade (funcionalidade impossível de ser utilizado, sistema travando ou se comportando de maneira não prevista).
- Bug em funcionalidade essencial do produto com workaround complexo.
- Comprometimento moderado da continuidade dos testes.
- Funcionalidade desenvolvida em desacordo com os requisitos especificados (desvio moderado).
- Problemas perceptíveis de desempenho com razoável impacto no uso normal da aplicação.
- Regras de validação de campos não aplicadas corretamente (data inválida, valor fora da faixa, etc.).

3-Moderado
- Problemas moderados em funcionalidades do produto.
- Existe um workaround simples.
- Baixo impacto nos testes.
- Ergonomia razoavelmente comprometida e com viabilidade de melhoria.
- Layout de tela/relatório fora dos padrões.
- Layout de tela/relatório ergonomicamente inadequado.
- Falta de valores padrões para campos quando aplicável.
- Navegação fora de ordem entre os componentes da tela.
- Teclas de atalho padrão não desenvolvidas corretamente.
- Foco setado incorretamente.
- Imagens não carregadas.
- Erros de ordenação/quebra em consultas e relatórios.
- Termos inadequados/fora do contexto.
4-Cosmético
- Não chegam a comprometer o objetivo final da funcionalidade.
- Afetam a aparência na forma de erro, não de melhoria.
- Layout de tela/relatório esteticamente inadequado.
- Erros de documentação.
- Erros de ortografia/digitação.
- Alinhamento de campos.
- Falta de clareza em mensagens para o usuário.
5-Melhoria
- Não são erros, mas oportunidades de melhoria identificadas no uso do sistema durante a fase de inspeção.
- Existe grande probabilidade de o cliente sugerir a mesma melhoria no futuro.
- Ação pró-ativa.
- Telas/relatórios com layout adequado, mas com oportunidade de melhoria.
- Sugestão de termos.
- Cores.



Prioridade


MATRIZ DE PRIORIZAÇÃO PARA CORREÇÃO
Detectabilidade

Alta
Média
Baixa

Severidade

Crítico
P1
P1
P1


Grave
P1
P1
P2


Moderado
P2
P2
P3


Cosmético
P3
P3
P4


Melhoria
P4
P4
P4


Prioridade
Prazo Correção
Definição
P1
x Dias úteis
(de acordo com seu SLA)
Resolver imediatamente
Desenvolvimento posterior e/ou teste não pode ocorrer até que o defeito tenha sido reparado.
O sistema não pode ser usado até que o reparo tenha sido efetuado.
P2
x Dias úteis (de acordo com seu SLA)
Dar alta prioridade
O defeito deve ser resolvido o mais rápido possível porque está prejudicando as atividades de teste e/ou desenvolvimento.
O sistema vai ser severamente afetado até que o defeito seja reparado.
P3
x Dias úteis (de acordo com seu SLA)
Fila normal
O defeito deveria ser resolvido no curso normal das atividades de desenvolvimento.
Ele pode esperar até que uma nova edição ou versão seja criada.
P4
x Dias úteis (de acordo com seu SLA)
O defeito pode ser postergado indefinidamente.
Pode ser resolvido em uma revisão maior do sistema no futuro ou nem resolvida.

terça-feira, 16 de novembro de 2010

Tipos de testes - Quando utilizar cada um?

Para quem se interessa em teste de software ai esta informações importantíssimas para modelagem do processo de desenvolvimento/ teste de software. Vale apenas ressaltar que cada organização deve adequar seus processos conforme sua estrutura e em conjunto com o PDCA.
Caracterís ticas
Tipos de testes
Teste unitário
Teste de Integração
Teste de Sistema
Teste de Aceitação
Alfa Teste
Beta Teste
Descrição
Teste em que se testam as menores unidades de software desenvolvidas( pequenas partes ou unidades do sistema). Os alvos desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de código.
O objetivo é encontrar falhas provenientes da integração interna das unidades de um sistema.
Sistema já completamente integrado é verificado quanto a seus requisitos num ambiente de produção (caixa-preta).
 Teste de caixa-preta é realizado num sistema antes de sua disponibilização. Verifica o sistema em relação aos seus requisitos originais, e às necessidades atuais do usuário.
Produto ainda em fase de construção e testes. Usuários (selecionados) poderão testar o sistema em um ambiente controlado.
Produto em fase de testes. Usuários (selecionados) poderão testar o sistema em um ambiente de homologação.
Escopo
Unidade
Requisito
Todo Sistema
Conforme processo do cliente
Conforme processo do cliente
Conforme processo do cliente
Equipe
Desenvolvedores
Analista
Teste
Teste  e Usuários Chaves
Teste e Usuários Chaves
Clientes
Origem dos dados
Criação manual Passagem de parâmetro/insert no SGDB
Automática (via sistema)
Automática (via sistema)
Automática (via sistema)
Dados Reais(cópia base de produção)
Dados Reais(cópia base de produção)
Volume dos dados
Pequeno
Pequeno
Grande
Grande
Grande
-
Ambiente
Desenvolvimento
Desenvolvimento/Teste
Teste
Teste (similar ao de produção cliente X)
Teste (interno)
Homologação em cliente

sexta-feira, 12 de novembro de 2010

Processo de Testes de Software - Concepção



O Processo de Testes de Software busca estruturar etapas, atividades, artefatos, papéis e responsabilidades padronizando tarefas e controlando projetos de testes.

Assim como qualquer outro processo, o processo de teste de software deve ter como base o ciclo PDCA, de forma a ampliar sua institucionalização e possibilitar aos profissionais uma maior visibilidade e organização das suas tarefas, resultando em maior agilidade e gerenciamento dos projetos de testes.






Planejamento dos Testes


É a elaboração da proposta de testes baseada em prazos, custos e qualidade esperada, avaliando recursos necessários e estabelecendo estimativas conforme necessidade do cliente.





O planejamento dos testes é dividido por 2 papeis no processo de teste de software:







Visão geral:







Detalhando as Macro-Atividades




Esta lista representa o conjunto de atividades que deverão ser executadas para que cada macro-atividade seja considerada finalizada, funcionando como um "check-list" de execução da etapa de "Planejamento dos Testes".


Estudo do Projeto:


· Analisar as solicitações do Cliente;


· Avaliar necessidade de alteração na arquitetura dos aplicativos;


· Estudar as lições aprendidas (projetos já finalizados);


· Avaliar custos, prazos e qualidade exigidos pelo Cliente;


· Avaliar os riscos e impactos do projeto no processo de teste;


Avaliação de Impacto:


· Avaliar necessidade da criação de casos de testes;


· Avaliar necessidade de atualização de casos de testes;


· Avaliar necessidade de adequação na automação dos testes;


· Avaliar necessidade de adequação nas atuais ferramentas utilizadas;


· Avaliar necessidade de aquisição/construção de novas ferramentas;


· Avaliar necessidade de alteração na estruturação do ambiente;


Análise Interna de Esforço


· Buscar métricas históricas para auxiliar na elaboração das estimativas de recursos;


· Estimar recurso interno para absorção dos impactos da arquitetura dos testes;


· Demonstrar recurso externo para absorção dos impactos da arquitetura dos testes;


Análise Externa de Esforço:


· Avaliar disponibilidade de infra-estrutura para os terceiros;


· Especificar adequações necessárias a serem repassadas a terceiros;


· Definir métricas de qualidade e produtividades esperadas;


· Elaborar SLA's de serviço e multas contratuais;


· Receber proposta de trabalho (cronograma, prazos e custos);


Definição de Cenários Possíveis (Duração, Esforço, Custo e Qualidade):


· Avaliar lista de projetos a iniciar/em andamento;


· Avaliar a disponibilidade de recursos internos para alocação no projeto;


· Identificar cenários (terceirização, redução de escopo, priorização de projetos);


· Elaborar cronograma para os cenários identificados;


· Definir riscos e planos de ação esperados para os cenários identificados;


· Elaborar propostas e enviar para aprovação da diretoria;


Aprovação do Planejamento:


· Obter a aprovação da proposta da diretoria;


· Obter a aprovação da proposta do cliente;


· Divulgar o cenário aprovado aos colaboradores e terceiros;


· Obter a assinatura do contrato e elaborar a documentação de repasse aos terceirizados;


· Disponibilizar infra-estrutura necessária aos terceirizados;


· Comunicar a finalização da etapa de planejamento dos testes ao cliente;


Definição das Responsabilidades

O diagrama abaixo mostra os papéis e responsabilidades para cada macro-atividade envolvida na etapa de "Planejamento dos Testes".


Artefatos do processo

Abaixo estão listados as macro-atividades e suas entradas e saídas:

Análise do projeto:

Entradas: Visão do projeto

Saídas: -


Avaliação de impacto:


Entradas: Arquitetura de teste


Saídas: Analise de impacto da arquitetura


Estimar esforço interno

Entradas: Histórico processo de teste, Estimativa de teste

Saídas: Analise de impacto da arquitetura

Estimar esforço externo

Entradas: Solicitação de proposta executar de teste, Solicitação de proposta inovar arquitetura

Saídas: Proposta executar de teste, proposta inovar arquitetura

Definir cenário

Entradas: Analise impacto arquitetura

Saídas: Propostas projeto teste

Aprovar planejamento

Entradas: Propostas projeto teste

Saídas: Projeto teste de software



Representação gráfica:




No próximo post estarei comentando sobre a fase de elaboração. Aguardem!

sexta-feira, 15 de outubro de 2010

Qualidade, Processos e Teste de Software:

Neste espaço estarei abordando assuntos referentes a Qualidade, Processos e Teste de Software baseados em lições aprendidas, sempre buscando passar o conhecimento sobre os temas abordados de forma clara e objetiva.