Gerência - Qualidade e Testes

Entendendo o conceito por trás dos processos de Qualidade de Software

Veja neste artigo uma abordagem sobre como planejar e executar um processo de testes de software.

por Flávio Secchieri Mariotti



Veja neste artigo uma abordagem sobre como planejar e executar um processo de testes de software.

Introdução

Infelizmente, ainda é uma preocupação comum no dia a dia das equipes de implantação a publicação de novas realeses de software. Portanto, fica fácil identificar que ainda não estamos dando a real importância para os processos de qualidade de software.

As equipes de desenvolvimento estão enfrentando uma mudança significativa no modelo de desenvolvimento de software com a transição de modelos tradicionais como cascata, por exemplo, para métodos ágeis de desenvolvimento, como o SCRUM, XP, FDD, entre outros. Os métodos ágeis estão cada dia obtendo mais atenção e sendo mais e mais adotados como modelos de desenvolvimento nas organizações e fábricas de software. Com isso, podemos perceber que o mercado ainda se preocupa mais com a velocidade do que com a qualidade, mas será que esse realmente é o caminho? Pare um minuto do seu dia e se faça as seguintes perguntas:

  • A equipe realmente está sendo mais rápida?
  • Quanto tempo minha equipe está perdendo com manutenção e correção de bugs que não foram identificados antes da implantação?
  • Estou realmente entregando um produto de qualidade?
  • Meu cliente está feliz com o meu produto?

Na tentativa de auxiliar as equipes de desenvolvimento de software e principalmente os profissionais de qualidade, este artigo aborda alguns conceitos básicos para planejamento um bom plano de teste e aplicação de processos estratégicos e eficientes para validação e garantia da qualidade de software.

Objetivo

O principal objetivo deste artigo é auxiliar os profissionais da área de qualidade de software. Para isso, será apresento uma simples proposta de documentação de testes com base em casos de uso, além de trazer uma breve definição de várias categorias de testes e também apontar algumas das principais metodologias e ferramentas utilizadas no mercado de TI.

Metodologias

Mps.br: o Modelo de Processos de Software Brasileiro é uma proposta de solução brasileira compatível com o modelo CMMI que está em conformidade com as normas ISO/IEC 12207 e 15504, além de ser adequado à realidade brasileira. Para mais informações, acesse: http://www.softex.br/mpsbr/_guias/default.asp

Papéis

  1. Gerência da Qualidade
    • Gerencia da Qualidade de Software
    • Gerência de Teste de Verificação
  2. Profissionais dos Testes de Verificação
    • Revisores de Documentos
    • Auditores da Qualidade
  3. Profissionais dos Testes de Validação
    • Arquiteto de Teste
    • Analista de Teste
    • Automatizador de Teste
    • Executor de Teste

Categorias de testes de Software

Teste de funcionalidade: teste que verifica se todos os requisitos do cliente foram satisfeitos, executando todas as funcionalidades de uma aplicação.

Teste de Usabilidade: tem por objetivo verificar a facilidade que o software http://pt.wikipedia.org/wiki/Software possui de ser claramente compreendido e manipulado pelo usuário http://pt.wikipedia.org/wiki/Usu%C3%A1rio na sua navegação(utilização).

Teste de Carga (Stress): teste que avalia um sistema simulando uma situação predeterminada, geralmente um grande volume de carga ou dados. Tem por objetivo identificar gargalos originados por baixo dimensionamento de link, falta de otimização da infraestrutura ou implementação ineficiente do aplicativo.

Teste de Regressão: teste que executa alguns ou todos os casos de testes já verificados, a fim de detectar erros gerados por alterações ou correções feitas durante o processo de desenvolvimento ou manutenção do software.

Teste de Volume: teste que avalia um sistema ou componente executando de modo que a demanda de recursos ocorre em quantidade frequente ou volume irregular.

Teste de Configuração: teste que verifica todas as configurações necessárias para garantir um bom funcionamento do software.

Teste de Compatibilidade: teste que garante a compatibilidade com todos artefatos

Teste de Segurança: teste de segurança visa verificar se todos os mecanismos de proteção embutidos no sistema eliminam as vulnerabilidades do software.

Teste de Desempenho: teste que avalia o tempo de resposta, os recursos utilizados e eficiência de cada função.

Teste de Instalação: teste que verifica se o processo de instalação está executando todos os passos requeridos para implementação do sistema no ambiente de utilização.

Teste de Confiabilidade: teste que valida à confidencialidade das informações, geralmente este teste é aplicado em conjunto com o teste de segurança.

Teste de Disponibilidade: teste que verifica o nível de disponibilidade do software, esta fase tem como objetivo garantir que o sistema estará disponível mesmo com pequenas falhas no ambiente de produção.

Teste de Recuperação: teste de sistema que força o software a falhar de diversas maneiras e verifica se a recuperação é adequadamente executada.

Teste de Contingência: teste também conhecido como plano de continuidade de negócios ou plano de recuperação de desastres, tem como intuito descrever as medidas a serem tomadas para restabelecer o sistema a seu estado funcional ou estado minimamente aceitável em caso de paralisação do sistema.

Checklist de verificação

  • Checklist Verificação de Negócios
  • Checklist da Proposta de Projeto de Software
  • Checklist Verificação de Requisitos
  • Checklist Diagrama de UML
  • Checklist da Arquitetura
  • Checklist Verificação, Análise e Modelagem
  • Checklist do Código-Fonte
  • Checklist do Bando de Dados
  • Checklist Verificação da Implementação

Exemplo de checklist

Checklist do Modelo de Negócios
Levantamento das Necessidades do Cliente
- Todas as necessidades foram devidamente registradas. SIM NÃO
- Todas as necessidades foram devidamente registradas. SIM NÃO
Definição das Características do Software
- Cada característica atende ao menos a uma necessidade identificada. SIM NÃO
- Cada característica possui uma descrição clara. SIM NÃO
- Cada característica possui exemplos que auxiliam seu entendimento. SIM NÃO
- Existe uma rastreabilidade entre característica e necessidade. SIM NÃO

Componentes de testes

Test-drivers: os controladores de teste são programas desenvolvidos com a finalidade de testar uma unidade de software. Esses controladores executam chamadas as unidades a ser validadas. Com isso, definindo uma ordem de execução e um conjunto de parâmetros de entrada que possibilitam testes mais variado em diferentes cenários.

Stubs: os simuladores são programas que simulam o comportamento de uma unidade de software ou hardware. Os simuladores substituem determinadas unidades reais que dificultam ou limitam determinados testes de software.

Reflexão

Segundo Leintz, a proporção de esforços dedicados para manutenção de software corresponde a 20% de corretivas, 25% adaptativas, 50% evolutiva e apenas 5% para preventivas. Esse resultado é com base em um estudo que aconteceu com 487 organizações da área de TI e testes.

Conclusão

Apesar de termos um processo que permite a organização e seqüenciamento das atividades de teste de software, é muito importante investir na capacitação das pessoas que vão desempenhá- las. Existem diversas técnicas e práticas para realização de testes, mas é preciso conhecimento do assunto para escolher o que é melhor utilizar, levando em consideração o contexto.

Comunicado Importante

Espero que tenham gostado do conteúdo explorado neste artigo. Caso exista qualquer dúvida relacionada ao conteúdo ou interesse em conhecer um pouco mais sobre qualidade de software, informe seu interesse usando o recurso de "comentários".

Referência

Bartié, Alexandre . Garantia de Qualidade de Software, Campus, 2002.

Paul M. Duvall; Steve Matyas; Andrew Glover . Continuous Integration: Improving Software Quality and Reducing Risk, Addison-Wesley Professional, 2007.

Flávio Secchieri Mariotti

Flávio Secchieri Mariotti - Especialista em Engenharia e Arquitetura de Software. Pós Graduado pelo Instituto de Pesquisa Avançada de Tecnologia IBTA em Engenharia de Software baseado em SOA. Bacharel em Sistemas de Informação pela UNIUBE e técnico em Processamento de Dados pela FEB. Consultor independente no desenvolvimento de software em arquitetura OO, SOA, GIS e Plataforma .NET.