Cadastre-se Revistas DevMedia Cursos
 

Space de Cristiano Caetano
Busca Autor


Últimas 20 atualizações de Cristiano Caetano

Artigo - Conhecendo os testes exploratórios – Parte 3 - Revista Engenharia de Software Magazine 55

[links] Testes exploratórios – Parte 1
Testes exploratórios – Parte 2
[/links] [rotulo] Artigo do tipo Teórico
Recursos especiais neste artigo:
Conteúdo sobre Arquitetura e Desenvolvimento. [/rotulo] [lead]Conhecendo os testes exploratórios – Parte 3
Este artigo apresenta ao leitor os métodos comumente adotados pelos testadores para a geração de ideias e modelos mentais durante a execução de testes exploratórios. O uso destes métodos torna o teste exploratório uma disciplina mais formal que pode ser ensinada a outras pessoas e usada em larga escala.

Em que situação o tema é útil
Este artigo destina-se a diretores de tecnologia, desenvolvedores e profissionais da área de teste e qualidade de software interessados em formalizar a execução dos testes exploratórios com base nas melhores práticas do mercado. Além disso, a adoção de Heurísticas, Cenários e Excursões é uma forma de criar dentro da empresa um catálogo de ideias que pode ser usado e melhorado por todos os membros do time de testes.[/lead]

Teste exploratório é uma abordagem de testes que enfatiza as habilidades do testador em tomar decisões sobre o que será testado durante a execução do teste ao invés de seguir um roteiro previamente planejado. Teste exploratório é muitas vezes confundido ou usado como sinônimo de teste ad hoc (Teste realizado informalmente sem a preparação ou utilização de técnicas de projeto de teste reconhecidas, e sem definição prévia dos resultados esperados). No entanto, podemos afirmar que teste exploratório é um tipo de ad hoc, já que ambos são testes não sistemáticos que dependem da experiência e intuição do testador. No entanto, as semelhanças param por aqui, já que no teste exploratório temos uma estrutura mais sofisticada em comparação com o teste puramente ad hoc.

Para consolidar estas diferenças, o teste exploratório nos últimos anos tem sido alvo de muitas discussões, encontros, artigos e livros.O objetivo deste debate é enfatizar as características necessárias para a realização do teste exploratório a fim de torná-lo uma disciplina que possa ser formalmente descrita, ensinada a outras pessoas e usada em larga escala.

No artigo "Evolving Understanding About Exploratory Testing", temos os seguintes aspectos como sendo exclusivos de testes exploratórios:

  • O projeto, execução, interpretação e a ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
16/01/2013 00:00:00





Artigo - Conhecendo os testes exploratórios – Parte 2 - Revista Engenharia de Software Magazine 54

[links] Testes exploratórios – Parte 1
Testes exploratórios – Parte 3
[/links] [rotulo] Artigo do tipo Teórico
Recursos especiais neste artigo:
Conteúdo sobre planejamento. [/rotulo] [lead]

Gerenciamento de testes exploratórios
Depois de uma breve introdução, discutiremos uma abordagem baseada em sessões para gerenciamento deste tipo de teste. Neste contexto, serão apresentadas questões relacionadas à missão, sessão, testador, resultados e ferramentas de apoio utilizadas para apoiar a abordagem considerada.

Em que situação o tema útil
Este artigo destina-se aos desenvolvedores interessados em gerenciar o planejamento e a execução de testes exploratórios sem engessar o lado criativo e a liberdade da exploração.[/lead]

Teste exploratório é uma abordagem de testes ad hoc que enfatiza as habilidades do testador em tomar decisões sobre o que será testado durante a execução do teste ao invés de seguir um roteiro previamente planejado. As principais características dos testes exploratórios são:

· O projeto, execução, interpretação e aprendizado são realizados pela mesma pessoa;

· O projeto, execução, interpretação e aprendizado acontecem juntos, ao invés de serem executados em momentos diferentes no tempo;

· O testador faz as suas escolhas sobre o que será testado, quando testar e como testar, ao invés de seguir cegamente um roteiro;

· O testador enfoca em revelar novas informações sobre o produto, ao invés de confirmar coisas já conhecidas sobre o produto;

· Tudo o que o t

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
12/12/2012 17:18:00





Artigo - Conhecendo os testes exploratórios – Revista Engenharia de Software Magazine 53 - Parte 1

É da natureza dos testadores pensar em situações extremas, condições alternativas e caminhos incomuns. Mesmo que não faça parte de um plano formal ou de um roteiro pré-determinado de testes, todo testador profissional tem o hábito de improvisar testes complementares em diversas situações como:
• Após averiguar se um defeito foi corrigido, os testadores frequentemente improvisam testes informais para complementar as abordagens de testes tradicionais;
• Quando um defeito é detectado durante a execução de um teste tradicional, frequentemente o testador executará testes informais para analisar e isolar o defeito a fim de determinar os passos para reproduzi-lo;
• Para explorar as variações de um defeito com o objetivo de determinar se existe defeitos relacionados ou parecidos;
• Para conhecer o comportamento de um sistema ou funcionalidade quando não existem requisitos.

Estes testes complementares, independente dos testadores estarem conscientes do que estão fazendo, representam uma abordagem de teste que não obedece uma estrutura rígida e frequentemente é chamada testes ad hoc. De acordo com o SWEBOK - Software Engineering Body of Knowledge, o teste ad hoc é provavelmente a abordagem de testes mais usada na área de teste de software. No entanto, o SWEBOK não descreve o que é um teste ad hoc. Na literatura especializada em teste de software, não existe também um consenso entre os autores sobre testes ad hoc. No entanto, quando o termo teste ad hoc é mencionado, sempre é associado a ideia de testes informais, aleatórios, superficiais e desorganizados, ou seja, os testadores encontram defeitos acidentalmente, sem terem utilizado nenhuma metodologia, planejamento ou técnica de projeto de casos de testes. Além disso, frequentemente é desencorajado e rotulado como uma abordagem de testes ineficiente que agrega pouco valor.

Chris Agruss e Bob Johnson no seu artigo "Ad Hoc Software Testing: A perspective on exploration and improvisation" afirmam: "De maneira geral, os gerentes de desenvolvimento são céticos em relação a testes ad hoc. Para os gerentes, é inconcebível uma equipe de testadores habilidosos e caros consumirem os escassos recursos por meio da execução de testes de natureza subjetiva e que provavelmente nunca serão executados novamente”.

Dessa forma, precisamos primeiro estabelecer o significado de "ad hoc" para termos um melhor entendimento sobre o que é um "teste ad hoc". Ad hoc é uma expressão latina que significa "para esta finalidade" ou "com este objetivo". Em engenharia de software, a expressão ad hoc é utilizada para designar ciclos completos de construção de softwares que não foram devidamente projetados em razão da necessidade de atender a uma demanda específica do usuário,

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
07/11/2012 11:20:00





Artigo - Avaliação de usabilidade de software - Revista Engenharia de Software Magazine 50

Segundo a ISO/IEC 9126, “Usabilidade refere-se à capacidade de uma aplicação ser compreendida, aprendida, utilizada e atrativa para o usuário, em condições específicas de utilização.”. Usabilidade é um conceito que permite avaliar fatores que influem no uso do aplicativo, como:


• Facilidade de aprendizado: aprendo a usar o aplicativo rapidamente?
• Facilidade de uso: depois de aprendido, o aplicativo é fácil de ser utilizado?
• Facilidade de memorização: um usuário ocasional consegue se lembrar com facilidade dos comandos?
• Segurança de uso: o aplicativo previne os erros? E se houver erros, o aplicativo consegue dar um alerta adequado ao usuário?
• Satisfação do usuário: o aplicativo é agradável, bom de ser utilizado?

As interfaces com uma boa usabilidade fazem com que o usuário se torne mais produtivo, à medida em que ele não tem que interromper a todo o momento o seu trabalho para buscar orientação adicional. Essa orientação deve ser fornecida pela interface em si ou, em última instância, pelo sistema de ajuda do aplicativo. Porém, muitas vezes o usuário é obrigado a desviar-se das suas tarefas e buscar no ambiente externo a orientação necessária para a execução de suas tarefas. Isso se deve aos erros de usabilidade do aplicativo, que não é amigável e confunde o usuário.

Com base no que foi exposto, podemos afirmar que aplicativos com baixa usabilidade geram vários tipos de problemas para o usuário, tais como:
• Requerem treinamento excessivo;
• Desmotivam a exploração do aplicativo por parte do usuário;
• Confundem os usuários;
• Induzem os usuários ao erro;
• Geram insatisfação;
• Diminuem a produtiv

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
07/08/2012 18:19:00





Artigo - Testes ágeis - Revista Engenharia de Software Magazine 48

O desenvolvimento ágil é fruto da constatação feita, de forma independente, por diversos profissionais na área de engenharia de software de que, apesar de terem aprendido segundo a cartilha tradicional, só conseguiam minimizar os riscos associados ao desenvolvimento de software pensando e agindo de forma muito diferente do que tradicionalmente está nos livros. Estes profissionais, a maioria veteranos consultores para projetos de softwares, decidiram reunir-se no início de 2001 durante um workshop realizado em Snowbird, Utah, EUA.

Embora cada envolvido tivesse suas próprias práticas e teorias preferidas, todos concordavam que, em suas experiências prévias, os projetos de sucesso tinham em comum um pequeno conjunto de princípios. Com base nisso eles criaram o Manifesto para o Desenvolvimento Ágil de Software, freqüentemente chamado apenas de Manifesto Ágil. Os valores descritos no Manifesto Ágil priorizavam:
• Indivíduos e interação entre eles ao invés de processos e ferramentas;
• Software em funcionamento ao invés de documentação abrangente;
• Colaboração com o cliente ao invés de negociação de contratos;
• Responder a mudanças ao invés de seguir estritamente um plano.

Adicionalmente, o Manifesto ágil preconizava os seguintes princípios fundamentais:
• Nossa maior prioridade é satisfazer o cliente através da entrega contínua de software de valor;
• Aceitar mudanças de requisitos (processos ágeis se adéquam a mudanças, para que o cliente possa tirar vantagens competitivas);
• Entregar software funcionando com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos;
• Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto;
• Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho;
• O método mais eficiente e eficaz de transmitir informações para um time de desenvolvimento é através de uma conversa cara a cara;
• Software funcional é a medida primária de progresso;
• Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e clientes, devem ser capazes de manter indefinidamente, passos constantes;
• Contínua atenção à excelência técnica e bom design, aumenta a agilidade;
• Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito;
• As melhores arquiteturas, requisitos e designs emergem de times auto ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
04/05/2012 19:03:00





Artigo - Teste nas nuvens - Revista Engenharia de Software Magazine 46

O termo computação em nuvem (Cloud Computing) surgiu em 2006 em uma palestra de Eric Schmidt, da Google, sobre como sua empresa gerenciava seus data centers (local onde são concentrados os computadores e sistemas responsáveis pelo processamento de dados de uma empresa ou organização).

Fundamentada em conceitos já estabelecidos, como a virtualização e o modelo pay-per-use (modelo de pagamento baseado no uso, semelhante aos serviços de telefonia e energia elétrica), a computação em nuvem está se tornando um paradigma chave da indústria de Tecnologia da Informação. Na computação em nuvem, a localização de toda a infra-estrutura computacional é deslocada para a Internet. Dessa forma, os dados, o hardware e as aplicações são fornecidos na forma de serviços baseados na Internet, reduzindo drasticamente os custos para o usuário final que faz uso só do que precisa e quando precisa.

Um recente relatório da consultoria Gartner elenca os cinco atributos que definem o modelo de computação em nuvem. Os cinco atributos definidos para a computação em nuvem são:

·         Baseado em serviço: Na computação em nuvem os serviços podem ser considerados sob medida, uma vez que são designados para atender a necessidades específicas de um grupo de clientes. As tecnologias, por sua vez, são escolhidas para suprir a solução ou o serviço em vez do contrário – o serviço ser desenvolvido de acordo com a infraestrutura tecnológica disponível.

·         Escalável e elástico: O serviço deve ter a capacidade de aumentar ou reduzir os recursos de acordo com a demanda do cliente.

·         Compartilhado: A criação de grupos que compartilham serviços facilita a economia de escala. E os recursos de TI são usados com o máximo de eficiência. A infraestrutura, software ou plataformas passam a ser divididos entre vários usuários dos serviços. Isso permite fornecer um número infinito de recursos para atender as necessidades de múltiplos clientes, ao mesmo tempo.

·         Medido por uso: Esse modelo de serviços possibilita criar métricas que permitam diferentes modelos de pagamento. O provedor pode cobrar pelo uso, por número de usuários, criar planos limitados, entre outros. Mas, em todos os casos, o pagamento vai ser feito pelo uso do serviço e não de acordo com o custo do equipamento.

·         Baseado no uso da internet: Os serviços são oferecidos por meio de protocolos e formatos web (como URLs, http e IP).

 

A computação em nuvem distribui os recursos na forma de serviços. Com isso, podemos dividir a computação em nuvens em três modelos fundamentais:

·        

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
08/03/2012 17:58:00





E-Book/Apostila - Automação e Gerenciamento de Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas


Atenção: Esse e-book foi adquirido do site Linha de Código


Descrição: Com prefácio de Leonardo Molinari, a proposta deste livro (em formato e-book) é apresentar as ferramentas Open Source e gratuitas essenciais para a gestão e automação de testes de software. O livro (e-book) tem o propósito de apresentar um catálogo das melhores opções disponíveis atualmente e os seus principais recursos. Entre os assuntos abordados no livro, devemos destacar:

- Ferramentas Open Source e Gratuitas para Gestão e Automação de Testes;
- Ferramentas Comerciais Similares;
- Repositórios de Ferramentas Open Source;
- Ferramentas de Apoio;
- Referências sobre Teste de Software;
- Bibliografia Recomendada;

Palavras-Chave: Automação, Gerenciamento de Testes-->">
25/03/2011 06:05:00





Artigo - Artigo Clube Delphi 102 - TestComplete


Esse artigo faz parte da revista Clube Delphi Edição 102. Clique aqui para ler todos os artigos desta edição

Boas Práticas

Automação de testes

Automatize os testes de seus sistemas usando o software TestComplete

 

Neste artigo veremos

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
03/08/2009 20:48:00





Artigo - Artigo Engenharia de Software 5 - Melhores Práticas na Automação de Testes

Esse artigo faz parte da revista Engenharia de Software 5 edição especial. Clique aqui para ler todos os artigos desta edição

 

Verificação, Validação e Teste

Melhores Práticas na Automação de Testes

 

A automação de testes é uma área em franca expansão, no entanto, é uma área ainda muito imatura. Muitos dos sucessos nos projetos de automação de testes são decorrentes de processos empíricos de tentativa e erro.

Para piorar a situação, a automação de testes ainda é objeto de mitos que geram percepções errôneas sobre os seus reais benefícios e limitações. Freqüentemente, as ferramentas de automação de testes são supervalorizadas gerando falsas expectativas, a infra-estrutura requerida é subestimada, entre outros problemas comuns que serão apresentados ao longo deste artigo.

Nas seções a seguir serão apresentadas algumas boas práticas e conselhos reunidos pelo autor durante os últimos anos (à custa do aprendizado empírico em projetos de automação de testes).

A automação de testes não é um processo de testes

Muitas empresas fracassam na implantação da automação de testes em virtude da inversão de prioridades causada pela busca da qualidade a qualquer preço. Neste cenário, as empresas adquirem uma ferramenta de automação de testes prematuramente sem, ao menos, possuírem um grau mínimo de maturidade no processo de testes. O processo de testes é informal, as responsabilidades não são bem definidas e os profissionais não possuem o perfil adequado ou não são qualificados.

Segundo Watts S. Humphrey, criador do CMM (Capability Maturity Model), a qualidade do produto final é diretamente proporcional à qualidade do processo utilizado no seu ciclo de vida. A implantação da automação de testes depende de testes manuais maduros e consistentes. Os projetos de automação de testes bem sucedidos são aqueles que se baseiam em processos de testes formais e estruturados. Afinal, como é possível esperar alguma coisa de testes automatizados que são baseados em testes manuais errados, ambíguos ou inconsistentes. Não é possível automatizar o caos.

A rigor, o sucesso na implantação da automação de testes depende do entendimento de que a automação de testes ou uma ferramenta de automação, por si só, não vão melhorar ou organizar os testes existentes. É necessário antes, fazer a “faxina” e implantar um processo de testes formal. A necessidade de automatizar os testes virá naturalmente como resultado da evolução da maturidade do processo de testes.

Automatize os testes críticos primeiro

Nove em cada dez projetos de automação de testes cometem o erro de transformar todos os casos de testes manuais em scripts de testes automatizados. O leitor deve estar se perguntando: Mas este não seria o objetivo principal da automação de testes? – Sim e Não.

A automação de testes tem o objetivo de reduzir o envolvimento humano em atividades manuais repetitivas. Entretanto, isto não significa que a automação de testes deve se limitar apenas a fazer o trabalho repetitivo e chato. Os casos de testes manuais foram criados num contexto onde os testes seriam executados manualmente. É muito provável que estes casos de testes manuais não sejam muito eficientes em um contexto onde os testes serão executados automaticamente.

Freqüentemente, antes de iniciar a automação, os testes devem ser re-projetados a fim de aumentar a probabilidade de revelar um defeito que ainda não tenha sido encontrado. Afinal, o grande benefício da automação de testes não é a execução dos testes mais rápida e a qualquer hora do dia ou da noite, mas o aumento da amplitude e profundidade da cobertura dos testes.

Na prática, a automação de 100% dos testes manuais nem sempre é a melhor estratégia. A automação de testes é pouco eficaz quando os testes são complexos e exigem interações intersistemas ou validações subjetivas (estes tipos de testes devem permanecer manuais). Além disso, muitas vezes o custo e o tempo para automatizar os testes de um projeto são maiores que o custo e o tempo do próprio projeto de desenvolvimento (o que inviabilizaria a automação de 100% dos testes manuais).

A escolha dos testes automatizados candidatos, ou seja, os mais críticos, deve ser realizada com base no contexto do projeto de automação. No entanto, apesar de não existir uma categorização amplamente difundida, a experiência tem mostrado que os testes candidatos são normalmente agrupados em quatro áreas distintas:

·         Smoke Tests: Um conjunto mínimo de testes é selecionado com o objetivo de validar um Build ou liberação antes do início de um ciclo de testes;

·         Testes de Regressão: Os testes são selecionados com o objetivo de executar o re-teste de uma funcionalidade ou da aplicação inteira;

·         Funcionalidades Críticas: Os testes são selecionados com o objetivo de validar as funcionalidades críticas que podem trazer riscos ao negócio;

·         Tarefas Repetitivas: Os testes são selecionados com o objetivo de reduzir o envolvimento dos testadores em atividades manuais repetitivas e suscetíveis a erros, tais como cálculos matemáticos, simulações, processamentos, comparações de arquivos ou dados, etc.

Incorpore testabilidade ao aplicativo

Via de regra, os testes são automatizados utilizando a aplicação do jeito que ela é. Ou seja, os testes são criados sob o ponto de vista da interface gráfica e com o único objetivo de automatizar as ações dos usuários finais.

No entanto, testar por meio da interface gráfica nem sempre é a melhor opção para testes que exigem desempenho. Além disso, às vezes a interface gráfica não fornece evidências de que o teste foi realizado com sucesso, afinal, nem sempre a mensagem “Essa operação foi realizada com sucesso” significa que a operação foi realizada com sucesso de verdade.

A experiência tem mostrado que a incorporação de testabilidade na aplicação é um fator chave para o sucesso de um projeto de automação de testes. A testabilidade é um atributo que determina a capacidade de uma aplicação ser testada, ou seja, a facilidade de se testar uma aplicação está diretamente ligada ao nível de testabilidade incorporado nesta aplicação.

Normalmente é necessário realizar modificações na aplicação para torná-la mais fácil de testar. Essas modificações têm o objetivo de incorporar um conjunto de mecanismos que facilitam a observação e o controle do estado dos componentes internos da aplicação. Adicionalmente, estes mecanismos expõem ao mundo exterior as funcionalidades da aplicação por meio de APIs, Interfaces de Linha de Comando, Hooks, etc.

Isto torna, por sua vez, a aplicação muito mais fácil de se testar, sob o ponto de vista da automação de testes. O objetivo desses mecanismos (APIs, Interfaces de Linha de Comando, Hooks) é fornecer interfaces para o mundo exterior que não seja dependente da interface gráfica da aplicação. Dessa forma, é possível criar testes especializados para exercitar algumas funcionalidades da aplicação sem que seja necessário utilizar uma interface gráfica.

As ferramentas de automação de testes também têm defeitos

A automação de testes é, em última instância, a execução de um software para testar outros softwares. Dessa forma, podemos afirmar que as ferramentas de automação de testes sofrem dos mesmos tipos de problemas que as aplicações convencionais, ou seja: defeitos. É muito comum ocorrerem atrasos em projetos de automação em virtude de problemas causados pela ferramenta de automação de testes. Dentre os problemas mais comuns, devemos destacar:

·         Manuais incompletos e ambíguos;

·         Defeitos não reproduzíveis que ocorrem aleatoriamente;

·         Vazamento de memória quando a ferramenta é executada durante muitas horas;

·         Degradação do desempenho quando a ferramenta é executada durante muitas horas;

·         Travamentos durante a gravação ou execução dos testes;

·         Relato incorreto de testes executados com sucesso quando ocorrem problemas ou vice-versa;

·         Recursos que não funcionam como deveriam;

·         Reconhecimento incorreto dos componentes (botões, campos, menus, etc) da aplicação em teste;

·         Defeitos de regressão (funcionalidades que não funcionam mais corretamente após um upgrade da ferramenta);

·         Defeitos críticos que impedem a utilização das principais funcionalidades da ferramenta.

 

Com base no que foi exposto, a experiência tem mostrado que as seguintes ações devem ser tomadas antes da compra e durante a utilização de uma ferramenta de automação de testes:

·         Criar uma prova de conceito antes de comprar a ferramenta para certificar-se que ela não tenha defeitos críticos;

·         Utilizar sempre a versão mais atual da ferramenta;

·         Não utilizar a versão mais atual da ferramenta (upgrade) sem realizar um teste de regressão (para evitar que a correção de um problema crie problemas piores);

·         Se não houver solução para os problemas ou limitações da ferramenta, considere a criação de soluções alternativas (workarounds) utilizando a própria ferramenta.

Demo não é prova de conceito

As maravilhas oferecidas pelas ferramentas de testes automatizados normalmente são apresentadas por demonstrações (Demos). Normalmente, essas ferramentas são compradas com base na boa impressão causada durante essas apresentações.

Triste engano, infelizmente. As demonstrações normalmente apresentam cenários de utilização muito simples em um ambiente controlado. Às vezes aquela ferramenta perfeita apresentada na demonstração pode ser um completo desastre para testar a sua aplicação. Neste contexto, a melhor prática é demonstrar os benefícios, limitações e restrições da ferramenta por meio de uma prova de conceito.

Em resumo, você deve escolher os testes mais importantes e os mais complexos que serão automatizados no seu projeto de automação e criar todos os scripts utilizando uma versão demo ou trial da ferramenta de automação.

Conforme mencionado anteriormente, as demonstrações apresentam as principais funcionalidades da ferramenta de automação por meio de cenários e testes simples. Uma prova de conceito, por sua vez, tem o objetivo de provar se a ferramenta atenderá as reais necessidades do seu projeto de automação.

Dentre os aspectos que devem ser analisados numa prova de conceito, devemos destacar:

·         Avaliar se as funcionalidades da ferramenta de automação funcionam conforme apresentado na demonstração;

·         Avaliar se os manuais são adequados e informativos;

·         Avaliar se existem defeitos críticos que impedem a utilização das principais funcionalidades da ferramenta;

·         Avaliar se existe degradação do desempenho ou vazamento de memória quando a ferramenta é executada durante muitas horas;

·         Avaliar se a ferramenta reconhece os componentes e componentes personalizados (botões, campos, menus, etc) da aplicação que será testada;

·         Avaliar se a ferramenta e a linguagem de script oferecida é robusta o suficiente para lidar com testes complexos;

·         Avaliar se a ferramenta é realmente fácil de usar e se a ferramenta oferece recursos para a criação de bibliotecas de scripts a fim de facilitar a reutilização;

·         Avaliar se a ferramenta funciona adequadamente na infra-estrutura/ambiente existente e avaliar se será necessário algum investimento adicional para adequar a infra-estrutura/ambiente aos requerimentos mínimos exigidos pela ferramenta;

·         Identificar as limitações e restrições da ferramenta para evitar falsas expectativas.

Dimensione a infra-estrutura adequadamente

Muitos projetos de automação de testes fracassam em virtude do subdimensionamento da infra-estrutura. As ferramentas de testes automatizados exigem computadores de alto desempenho com processadores rápidos e grandes quantidades de memória. Além disso, estes computadores devem ser dedicados exclusivamente para a automação de testes (durante a execução dos testes o computador não pode ser utilizado para outro fim).

Os computadores onde os testes serão executados devem ser semelhantes ou com maior capacidade de processamento em relação aos computadores utilizados para criar os scripts de testes automatizados, caso contrário, ocorrerão problemas de baixa de performance.

A execução dos testes automatizados é muito sensível a influências externas. Devemos reforçar que diferenças sutis no ambiente (sistema operacional, rede, versões dos programas, dados, etc) podem prejudicar ou impedir a execução dos testes automatizados.

Planejar com detalhes a infra-estrutura necessária para criar e executar os testes automatizados é um fator chave para o sucesso de um projeto de automação de testes. Dentre os aspectos que devem ser considerados, devemos destacar:

·         Computadores de alto desempenho: Os computadores que serão usados para criar e executar os testes automatizados deve estar em conformidade com os requerimentos mínimos exigidos pela ferramenta de automação;

·         Computadores dedicados: Os computadores onde os testes automatizados serão executados devem ser dedicados para essa função, caso contrário os testes podem ser prejudicados e pode ocorrer degradação da performance;

·         Ambiente isolado: O ambiente deve ser restrito ao time de automação de testes para evitar a desestabilização da integridade do ambiente por meio de influências externas;

·         Ambiente controlado: Todos os detalhes do ambiente (sistema operacional, rede, versões dos programas, dados, etc) devem ser planejados e controlados, sob pena de prejudicar ou impedir a execução dos testes automatizados;

·         Ambiente similar ao de produção: O ambiente onde os testes serão executados deve ser igual ou similar ao ambiente de produção, sob pena de encontrar falsos positivos, ou seja, os testes são executados com sucesso no ambiente de testes, mas as funcionalidades apresentam defeitos em produção;

·         Massa de dados consistente: Os dados utilizados nos testes devem ser conhecidos e representativos, além disso, devem ser armazenados numa linha de base (baseline) a fim de permitir que sejam recuperados todas as vezes que os testes automatizados forem executados.

Encare a automação de testes como um projeto

A automação de testes é uma combinação entre teste e desenvolvimento de software, afinal, a atividade de criação de scripts de teste é uma atividade de programação pura. Dessa forma, podemos afirmar que a automação de testes deve ser encarada como um projeto com características próprias, ou seja, exige um planejamento detalhado, assim como, atividades de projeto, desenvolvimento e testes, tal qual o desenvolvimento de um software convencional.

Via de regra, a criação de testes automatizados é realizada por testadores especializados em desenvolvimento, também conhecidos como Testador-Desenvolvedor ou Automatizador. Este profissional deve ter o perfil de desenvolvedor e ser treinado adequadamente para utilizar a ferramenta de automação de testes.

Com base no que foi exposto, a experiência tem mostrado que os seguintes aspectos devem ser considerados em projetos de automação de testes:

·         O projeto de automação deve ser encarado como um projeto com características próprias, ou seja, exige um planejamento detalhado, assim como, atividades de projeto, desenvolvimento e testes;

·         Os scripts de testes podem ter defeitos, logo, recomenda-se a utilização de uma ferramenta de gestão de defeitos (bugtracker) para gerenciar estes defeitos;

·         Os scripts de testes devem ser submetidos a um processo de Gerência de Configuração de Software e controle de versões;

·         Durante o desenvolvimento dos scripts de testes, deve-se aplicar as melhores práticas utilizadas em projetos de desenvolvimento de software convencionais;

·         O Testador-Desenvolvedor deve ter o perfil e interesse em trabalhar com automação de testes, nem sempre um bom testador ou analista de testes se tornará um bom Testador-Desenvolvedor;

·         Os recursos humanos que atuarão no projeto de automação de testes devem ser treinados adequadamente. Quanto mais capacitados, maior será a probabilidade de sucesso do projeto.

Alinhe as expectativas e garanta a colaboração de todos os envolvidos

Os projetos de automação de testes costumam fracassar porque as pessoas envolvidas têm percepções diferentes sobre os benefícios e as limitações de um projeto de tal natureza.

Normalmente a alta gerência acredita que a automação de testes é a solução de todos os problemas. Os arquitetos e desenvolvedores desconhecem a necessidade da criação de mecanismos para aumentar a testabilidade durante o projeto e desenvolvimento da aplicação.

O time de testes, por sua vez, costuma acreditar que a automação dos testes é uma tarefa simples que não exige capacitação e é resumida apenas pela transformação dos testes manuais em scripts de testes automatizados por meio dos recursos de gravação (recording) oferecidos pelas ferramentas de automação de testes.

Essas suposições errôneas são o resultado da falta de conhecimento dos benefícios e limitações de um projeto de automação de testes. As campanhas publicitárias das ferramentas de automação, por sua vez, pioram esse cenário em virtude de que vendem uma imagem de que a automação de testes é a solução de todos os problemas de qualidade. Dentre as artimanhas de marketing mais comuns usadas pelas empresas fabricantes das ferramentas de automação, devemos destacar:

·         Desenvolva software de qualidade e aumente a receita e a lucratividade da sua empresa por meio da ferramenta de testes automatizados XYZ;

·         Crie testes sofisticados com treinamento mínimo;

·         Utilize o recurso XYZ para gravar os scripts e elimine o tempo de codificação dos scripts;

·         Aumente a produtividade e diminua o tempo gasto em manutenção por meio do compartilhamento de scripts e bibliotecas;

·         Identifique os problemas facilmente por meio do recurso XYZ utilizado nos nossos relatórios;

·         Utilize o recurso XYZ de reconhecimento automático de objetos e garanta a execução dos testes mesmo quando a interface gráfica tenha mudado.

 

Em projetos de automação de testes, é necessário o alinhamento das expectativas e a colaboração entre a alta gerência, desenvolvedores, arquitetos e testadores. É de suma importância explicar com detalhes os objetivos e o escopo de um projeto de automação de testes e, acima de tudo, garantir que as expectativas de todas as partes interessadas sejam realistas. Dessa forma, conseguimos eliminar o folclore e os mitos criados pelas estratégias de marketing usadas pelas empresas fabricantes das ferramentas de automação.

A estratégia recomendada para garantir o alinhamento das expectativas com relação aos benefícios e limitações de um de projeto de automação de testes deve considerar as seguintes atividades:

·         Demonstrar os benefícios, limitações e restrições da ferramenta por meio de uma prova de conceito;

·         Planejar com detalhes a infra-estrutura necessária para criar e executar os testes automatizados para evitar problemas de subdimensionamento;

·         Envolver desenvolvedores e arquitetos no projeto de automação de testes com o intuito de incorporar mecanismos para aumentar a testabilidade da aplicação;

·         Envolver os testadores para alinhar as expectativas em relação aos objetivos e estratégia da automação de testes, assim como, fomentar o treinamento e a capacitação;

·         Envolver a alta gerência para alinhar as expectativas em relação ao retorno de investimento, benefícios, limitações e restrições de um projeto de automação de testes.

A automação de testes é um investimento de longo prazo

A automação de testes, sem dúvida, é uma boa prática em um processo de teste de software. No entanto, a automação de testes não é uma prática que se adota do dia para a noite. Conforme mencionamos anteriormente, a necessidade de automatizar os testes virá naturalmente como resultado da evolução da maturidade do processo de testes.

Apesar de todos os benefícios advindos da automação de testes, os investimentos são altos. Rex Black, guru na área de testes de software, no seu famoso artigo chamado “Successful Investing in Software Testing” apresenta um cenário hipotético com os custos requeridos para realizar testes informais, manuais e automatizados e o retorno de investimento (ROI) obtido em cada uma dessas abordagens.

Neste artigo, Rex Black, parte da premissa de que o custo para corrigir um defeito encontrado na fase de desenvolvimento custa cerca de $10, na fase de teste custa $100 e em produção custa $1.000, como pode ser visto na Tabela 1.

 

 

 

Teste Informal

Teste Manual

Teste Automatizado

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
13/09/2008 09:57:00





Artigo - Artigo Engenharia de Software 4 - Verificação, Validação e Testes

Esse artigo faz parte da revista Engenharia de Software 4 edição especial. Clique aqui para ler todos os artigos desta edição

Verificação, Validação e Testes

Introdução à Automação de Testes

 

Segundo Cem Kaner, autor do livro "Lessons Learned in Software Testing", o propósito da automação de testes pode ser resumidamente descrito como a aplicação de estratégias e ferramentas tendo em vista a redução do envolvimento humano em atividades manuais repetitivas.

A automação possibilita a execução de testes regressivos com maior amplitude e profundidade. Teste regressivo ou teste de regressão é o termo utilizado para o ciclo de re-teste de uma ou mais funcionalidades, a fim de identificar defeitos introduzidos por novas funcionalidades ou correção de defeitos.

A cada novo ciclo de teste, o time de testes normalmente executa os testes das novas funcionalidades e os testes regressivos das demais funcionalidades. Dessa forma, é possível encontrar algum efeito colateral ou instabilidade introduzida pela nova funcionalidade. O grande problema ocorre quando em um estágio avançado do desenvolvimento, gasta-se mais tempo executando testes regressivos do que testando as novas funcionalidades.

Uma abordagem de testes baseada puramente em testes manuais, normalmente não consegue acompanhar as demandas e o volume de testes ao longo do ciclo de vida de desenvolvimento de software. Freqüentemente o produto é liberado sem que tenha sido completamente testado em virtude de restrições de tempo.

A automação de testes quando utilizada corretamente permite a execução ininterrupta de testes regressivos a qualquer hora do dia ou da noite. A execução de testes automatizados é sempre mais rápida do que os testes manuais e menos suscetível a erros.

A decisão de usar uma abordagem de testes baseada em testes automatizados está em franca expansão na atualidade. Uma pesquisa realizada em 2006 pelo Forrester Research Inc, revela que 9% das empresas entrevistadas (empresas do Estados Unidos e Europa) utilizam testes automatizados em todos os esforços de testes e 39% das empresas responderam que utilizam testes automatizados em alguns esforços de testes (Figura 1).

 

Figura 1. Avaliando Soluções de Testes Funcionais - The Forrester Wave™ Q2 2006.

 

Nas seções a seguir serão apresentados os principais paradigmas e tipos de testes automatizados, assim como, a comparação das vantagens e desvantagens de cada um deles.

Paradigmas de automação de testes

Existem várias abordagens para a automação de testes. No entanto, neste artigo serão apresentados apenas os paradigmas mais importantes da atualidade. Além disso, o foco deste artigo é automação de testes funcionais, dessa forma, não serão apresentados ou discutidos os testes unitários (Unit Tests) e automação de testes de desempenho (Performance Testing).

Os tipos de automação são normalmente agrupados de acordo com a forma como os testes automatizados interagem com a aplicação. Em geral, os tipos de automação são agrupados em dois paradigmas (mas não são limitados a esses):

 

Baseados na Interface Gráfica

Nesta abordagem os testes automatizados interagem diretamente com a interface gráfica da aplicação simulando um usuário. Normalmente as ações dos usuários são gravadas (Capture) por meio da ferramenta de testes automatizados. A ferramenta transforma as ações dos usuários em um script que pode ser reproduzido (Playback) posteriormente.

Vantagens: Não requer modificações na aplicação para criar os testes automatizados. Também não é necessário tornar a aplicação mais fácil de testar (testabilidade) porque os testes se baseiam na mesma interface utilizada pelos usuários.

Desvantagens: Existe uma forte dependência da estabilidade da interface gráfica. Se a interface gráfica mudar, os testes falham. Baixo desempenho para testes automatizados que exigem centenas de milhares de repetições, testes de funcionalidades que realizam cálculos complexos, integração entre sistemas diferentes e assim por diante.

 

Baseados na Lógica de Negócio

Nesta abordagem os testes automatizados exercitam as funcionalidades da aplicação sem interagir com a interface gráfica. Normalmente é necessário realizar modificações na aplicação para torná-la mais fácil de testar (testabilidade). Essas modificações resultam em mecanismos para expor ao mundo exterior as funcionalidades da aplicação (APIs, Interfaces de Linha de Comando, Hooks, etc), como veremos mais adiante.

A interface gráfica é apenas uma casca (camada) que tem o objetivo de fornecer um meio para a entrada dos dados e apresentação dos resultados. A camada que abriga a funcionalidade e o comportamento da aplicação é a camada de lógica de negócio. Esta abordagem de testes é baseada no entendimento que 80% das falhas estão associados a erros na lógica de negócio (Figura 2).

 

 

Figura 2. Distribuição das falhas agrupadas por camadas.

 

Vantagens: Foco na camada onde existe maior probabilidade de existir erros. Independência das mudanças da interface gráfica. Alto desempenho para testes automatizados que exigem centenas de milhares de repetições, testes de funcionalidades que realizam cálculos complexos, integração entre sistemas diferentes e assim por diante.

Desvantagens: Requer grandes modificações na aplicação para expor as funcionalidades ao mundo exterior. Exige profissionais especializados em programação para criar os testes automatizados. Existem poucas ferramentas/frameworks que suportam essa abordagem (normalmente é necessário criar soluções caseiras).

Tipos de automação de testes

Conforme mencionado anteriormente, os tipos de automação são normalmente agrupados de acordo com a forma como os testes automatizados interagem com a aplicação. A Tabela 1 apresenta o sumário dos tipos de testes automatizados que serão apresentados neste artigo.

 

Paradigma

Tipo de Teste Automatizado

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
08/08/2008 16:52:00





Artigo - Artigo Engenharia de Software 3 - Gestão de Testes

Esse artigo faz parte da revista Engenharia de Software 3 edição especial. Clique aqui para ler todos os artigos desta edição

Verificação, Validação e Teste

Gestão de Testes

Ferramentas Open Source e melhores práticas na gestão de testes

 

Estima-se que o custo decorrente da correção de um bug cresce bastante à medida que ele é descoberto em fases mais avançadas no processo de desenvolvimento de software. No entanto, ainda existe uma forte tendência nas empresas em negligenciar essa realidade e não dedicar o tempo mínimo necessário para a realização das atividades de teste de software.

As atividades de teste são muitas vezes realizadas de maneira pouco estruturada ao final do projeto, quando não existe mais solução para os problemas. Segundo Pressman, a atividade de teste seria um dos elementos críticos da garantia da qualidade de software e pode assumir até 40% do esforço gasto em seu desenvolvimento.

A qualidade é um atributo do software que deve ser introduzida ao longo do processo de desenvolvimento do software, haja vista que ela não pode ser imposta depois que o produto tenha sido finalizado.

Glenford Myers, no seu livro "The Art of Software Testing", destaca que teste de software é o processo de executar um sistema com o objetivo de revelar falhas. No entanto, as atividades de teste de software não se resumem apenas a isso. Teste de software é uma atividade estruturada e sistemática baseada em técnicas, ferramentas e processos formais, como veremos ao longo deste artigo.

Validação e Verificação

A validação e verificação são atividades de apoio de um processo de garantia de qualidade de software. A motivação principal dessas atividades é prevenir e detectar os defeitos e minimizar os riscos do projeto.

Os defeitos podem ser introduzidos ao longo do processo de desenvolvimento do software. É necessário que eles sejam identificados o quanto antes dentro do processo de desenvolvimento, de preferência na própria fase onde foram inseridos, mas nem sempre isso acontece.

As atividades de validação e verificação são baseadas em técnicas de análise estática ou dinâmica dos artefatos (documentos, código fonte, código executável, etc) com o intuito de detectar os defeitos ou revelar falhas na própria fase onde eles foram inseridos ou em fases posteriores.

A verificação tem o objetivo de avaliar se o software está sendo desenvolvido conforme os padrões e metodologia estabelecidos no projeto. A verificação normalmente é realizada por meio da análise estática (revisões, inspeções, etc) dos artefatos (documentos, código fonte, etc) produzidos ao longo do processo de desenvolvimento do software.

A validação, por outro lado, tem o objetivo de avaliar a aderência, ou conformidade, do software implementado em relação ao comportamento descrito nos requisitos A validação normalmente é realizada por meio da análise dinâmica (execução de testes contra o código executável).

Níveis de teste

As atividades de testes são normalmente divididas em níveis. O nível de teste define, de certa forma, a fase do processo de desenvolvimento do software na qual os testes serão realizados. Existem quatro níveis de testes, como pode ser observado na Tabela 1.

 

Nível de Teste

Descrição

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
03/07/2008 05:57:00





Artigo - Artigo Engenharia de Software - Gestão de defeitos

Esse artigo faz parte da revista Engenharia de Software edição especial. Clique aqui para ler todos os artigos desta edição

Verificação, Validação e Teste

Gestão de defeitos

Ferramentas Open Source e melhores práticas na 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:

l        Defeito (Fault): Passo, processo ou definição de dados incorretos. Por exemplo, uma instrução incorreta no código ou uma falta num artefato estático;

l        Engano (Mistake): Ação humana que produz um resultado incorreto, como por exemplo, uma ação incorreta tomada pelo desenvolvedor ou analista;

l        Falha (Failure): Desvio entre o resultado/comportamento apresentado pela aplicação em relação aos requisitos. A falha ocorre em conseqüência de um erro, defeito ou engano gerando um comportamento incorreto da aplicação.

 

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):

l        Prevenção de defeitos: Com base nos levantamento dos riscos críticos do projeto, devem ser promovidas ações de prevenção e planejamento de contingências para minimizar o impacto caso os riscos tornem-se problemas;

l        Linha base entregável: Estabelecimento formal de linhas base (baselines) por meio da Gerência de Configuração de Software. Cada linha base deve determinar quais requisitos/artefatos serão liberados e submetidos ao teste;

l        Identificação do defeito: Definição das técnicas necessárias para encontrar, reportar e classificar os defeitos, assim como, os critérios para reconhecê-los;

l        Solução do defeito: Definição das atividades para a correção e posterior notificação da resolução do defeito. Muitas destas atividades são definidas pela Gerência de Configuração de Software para garantir o histórico e rastreamento das modificações por meio do controle de versões;

l        Melhoria do processo: Análise das métricas e relatórios de gestão para entender a causa raiz dos problemas e promover a melhoria contínua do processo;

l        Relatório de gestão: Geração de relatórios com dados relevantes para acompanhar o progresso dos testes e a qualidade do sistema, assim como, a geração de métricas para alimentar a atividade de melhoria do processo.

 

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:

·         Faltante (Missing): O defeito ocorre em virtude da falta parcial ou total de um requisito;

·         Errado (Wrong): O defeito ocorre porque o requisito foi implementado incorretamente;

·         Acréscimo (Extra): O defeito ocorre em virtude de um comportamento ou elemento que foi implementado, mas foi não especificado no requisito.

 

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”:

l        Resumir: Descreva claramente o defeito, mas de forma resumida;

l        Precisão: Certifique-se que o defeito identificado realmente é um desvio do comportamento esperado e não uma falha de entendimento;

l        Neutralizar: Relate apenas os fatos, evitando manifestações de humor, emoção, etc;

l        Generalizar: Procure entender o problema de forma genérica, em virtude de que este problema também pode acontecer em outras situações ou funcionalidades.

l        Reproduzir: Garanta que o defeito seja reproduzível e descreva os passos necessários para a sua reprodução;

l        Evidenciar: Evidencie a existência do defeito encontrado por meio de arquivos de saída, printscreens das telas, etc;

l        Revisar: Revise a descrição e os passos para reproduzir o defeito. Lembre-se que o relato do defeito é um documento do projeto, assim como um caso de uso, um plano de testes, etc. Trate-o como tal;

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

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
03/03/2008 16:17:00





 

Consultor sênior de teste de software, com 15 anos de experiência na área de tecnologia da informação. Sócio fundador da Qualister (www.qualister.com.br), atua na empresa como Diretor Técnico, além de atender clientes em consultoria de processos de teste de software, automação de testes funcionais e de performance. É certificado CBTS pela ALATS e é autor dos livros CVS: Controle de Versões e Desenvolvimento Colaborativo de Software e Automação e Gerenciamento de Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas.
Arquivo de atualizações
 2013
 2012
 2011
 2009
 2008

Estatísticas do Autor:
Número de posts: 20
Características dos posts deste autor:
Conteúdo:
Utilidade:
44 34
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group