Guia Completo: Testes, Manutenção e Reengenharia de Software

Classificado em Computação

Escrito em em português com um tamanho de 5,77 KB

Introdução ao Teste de Software

  • Importância do Teste: O teste é fundamental para garantir a qualidade de um sistema e evitar surpresas desagradáveis.
  • Teste Operacional: Tem a finalidade de responder à seguinte pergunta: "Foi isso o que eu pedi?".

Tipos de Teste de Software

  • Teste de Unidade: Testa uma única unidade do sistema de maneira isolada, geralmente simulando as prováveis dependências que aquela unidade possui.
  • Teste de Integração: Testa a integração entre duas partes do seu sistema. Testes que garantem que suas classes se comunicam bem com serviços web, escrevem arquivos de texto ou mesmo enviam mensagens via socket são considerados testes de integração.
  • Teste de Caixa Branca: O analista tem acesso ao código-fonte, conhece a estrutura interna do produto sendo analisado e possibilita que sejam escolhidas partes específicas de um componente para serem avaliadas. É projetado em função da estrutura do componente e permite uma averiguação mais precisa do comportamento dessa estrutura.
  • Teste de Caixa Preta: O analista não tem acesso ao código-fonte e desconhece a estrutura interna do sistema. É também conhecido como teste funcional, pois é baseado nos requisitos funcionais do software, buscando falhas que contrariam os requisitos da aplicação.
  • Teste de Sistema: O objetivo é executar o sistema sob o ponto de vista de seu usuário final, varrendo as funcionalidades em busca de falhas em relação aos objetivos originais.
  • Teste de Aceitação: Geralmente, os testes de aceitação são realizados por um grupo restrito de usuários finais do sistema, que simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado.

Manutenção de Software

  • Por que a Manutenção é Necessária? O ambiente muda, novos requisitos surgem e o sistema deve ser modificado; do contrário, começa a ser considerado desatualizado, podendo ser substituído por outro sistema mais recente.
  • Tipos de Manutenção:
    • Correção de Defeitos: Erros de codificação, requisitos e projeto.
    • Adequação Ambiental: Ocorre se houverem mudanças no hardware, no sistema operacional (SO) ou em outro software de apoio; o sistema deve ser modificado para se adequar às mudanças.
    • Adição de Funcionalidades: Ocorre quando os requisitos do sistema mudam.

Evolução e Descarte de Sistemas

  • Reengenharia de Software: Possui duas vantagens principais em relação a abordagens mais radicais para a evolução de sistemas:
    1. Riscos Reduzidos: Existe um alto risco em redesenvolver um software que seja essencial para uma organização. Podem ser cometidos erros na especificação dos sistemas, ocorrer problemas de desenvolvimento, etc.
    2. Custos Reduzidos: O custo da reengenharia é significativamente menor do que os custos de desenvolvimento de um novo software.
  • Quando Descartar um Sistema? Deve-se descartar o sistema quando ele não contribui mais efetivamente para os processos de negócio da empresa. Isso acontece quando os processos de negócio se alteram e o sistema, que era fundamental para os processos antigos, passa a ser inútil para os novos que não dependem mais dele.
  • Opções Estratégicas para Sistemas Legados:
    • Descartar completamente o sistema.
    • Deixar o sistema desativado e continuar com a manutenção regular.
    • Reestruturar o sistema para melhorar sua manutenibilidade.
    • Substituir parte do sistema por um novo.

Princípios e Desafios do Teste de Software

  • Limitações do Teste: Um programa não precisa ser totalmente livre de erros antes de ser entregue. Os testes não podem demonstrar se o software é totalmente livre de defeitos ou se ele se comportará conforme especificado em qualquer situação, visto que é sempre possível que um teste que tenha sido esquecido seja aquele que poderia descobrir mais problemas no sistema. Testes podem detectar apenas a presença de erros e não sua ausência. O teste é justamente destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso. Os resultados do teste vão verificar erros, anomalias ou informações sobre atributos não funcionais no programa.
  • Vantagens e Desvantagens de Desenvolvedores Testarem o Próprio Software: Os desenvolvedores realizam o trabalho e, teoricamente, na opinião deles, o produto estará funcionando normalmente. Ao decorrer do desenvolvimento do produto, eles vão testando itens menores do software. Então, ao testar partes mais avançadas da fase de testes, eles podem acabar passando por itens que poderiam ser importantes para detectar falhas. Entretanto, como eles já possuem um conhecimento mais aprofundado do software, o desenvolvimento para o produto final pode ser alcançado com menos desperdício de tempo em relação a alguns tipos de teste.
  • Teste de Regressão: Um componente novo ou modificado pode falhar quando usado com componentes inalterados, causando defeitos nos componentes inalterados pela geração de efeitos colaterais ou pelas características de interação. Quando isso ocorre, diz-se que o sistema sob teste regrediu, por isso os testes denominam-se teste de regressão (regression test). O objetivo é garantir que o programa ainda satisfaça seus requisitos.

Entradas relacionadas: