Saltar para o conteúdo principal da página

Definição

Do que trata esta Área Técnica?

Os testes de software consistem nos processos de avaliação da qualidade que ocorrem durante todo o ciclo de vida do desenvolvimento e manutenção de um software, para verificar se este atende aos requisitos especificados e funciona conforme esperado.

O principal objetivo dos testes de software é identificar problemas ou erros no software antes que seja lançado ou implementado em ambiente de produção, reduzindo assim tempo e dinheiro em correções. Permitem validar os requisitos funcionais, as user stories, o desenho dos interfaces, a acessibilidade e usabilidade, a segurança e a qualidade de código.

Os testes de software são fundamentais para garantir a qualidade, eficiência e eficácia do produto/serviço. 

Benefícios

Porque é importante?

A realização de testes de software oferece diversos benefícios que impactam positivamente no desenvolvimento, na qualidade e no sucesso geral do software. Entre os vários benefícios destacam-se:  

  • Identificar antecipadamente falhas ou defeitos, para permitir a correção durante as fases iniciais do desenvolvimento; 
  • Melhorar continuamente a qualidade do software, garantindo que responde aos requisitos especificados e que funciona conforme esperado; 
  • Construir um software mais confiável, aumentando também a confiança dos utilizadores finais na utilização do produto/serviço; 
  • Economizar recursos financeiros e de tempo, uma vez que as correções têm maior impacto à medida que os desenvolvimentos estão mais avançados;
  • Aumentar a satisfação do utilizador, por responder melhor às suas expectativas; 
  • Avaliar o desempenho do software, permitindo otimizações que resultam num melhor desempenho e escalabilidade do software; 
  • Testar a segurança do software, o que permite identificar e corrigir vulnerabilidades que ajudam a proteger o software contra ameaças, ataques ou utilizações incorretas; 
  • Cumprir com os requisitos ou padrões contratuais, legais ou regulamentados e/ou verificar a conformidade do objeto de teste com os requisitos ou normas. 

Tipos de testes

Que tipos de testes existem?

Existem vários tipos de testes de software, cada um com um objetivo específico, estando divididos em dois grandes grupos: testes técnicos e testes funcionais. 

Os testes técnicos são geralmente realizados pela equipa de desenvolvimento, ocorrem na fase de desenvolvimento e são executados pelos programadores. Os testes funcionais, geralmente realizados pela equipa funcional, acontecem numa fase de validação interna, antes dos testes de aceitação, e contam com a participação de uma equipa de testes que pode ser composta por profissionais especializados ou por analistas, product owner, UX designer e, por vezes, gestor de projeto. 

De acordo com o serviço ou produto, a escolha dos testes a realizar deve ter em consideração qual o seu benefício, para que se cumpram os critérios de aceitação. Desta forma, existem testes que podem não fazer sentido serem realizados, como por exemplo os testes de integração, ficando ao critério da equipa decidir acerca da sua realização, conforme as suas reais vantagens, visto que os testes End-to-End (E2E), normalmente, também cobrem esta verificação.

Legislação e regulamentos

O que é obrigatório cumprir?

Boas práticas

O que é interessante fazer?

Promover testes unitários e integrados

Promover testes unitários e integrados ao longo do sprint para garantir a qualidade de cada entregável.

Criar o plano de testes

Criar o plano de testes que define quais os testes a executar, em que momento, em que ambiente e com que materiais.

Identificar a metodologia de testes e o template utilizado e definir responsáveis pela execução.

Escrever casos de teste

Escrever os cenários positivos (resultado esperado) e os cenários improváveis (falhas com impacto elevado).

Definir o passo a passo, o resultado esperado para cada teste e a ligação às respetivas user stories, de forma a garantir a cobertura adequada.

Executar testes de aceitação

Executar testes de performance, funcionais, de segurança e de carga. O resultado destes testes determinam se uma release pode disponibilizar novas funcionalidades.

Testar frequentemente a usabilidade e acessibilidade

Testar frequentemente, e em várias etapas do projeto, a usabilidade e acessibilidade do serviço com potenciais utilizadores reais, usando técnicas apropriadas. 

Implementar testes automatizados

Implementar testes automatizados com ferramentas adequadas, através de scripts que validam requisitos funcionais e não funcionais.

Os testes automatizados ajudam a garantir que funcionalidades anteriores continuam a funcionar de forma correta.

Reportar erros e melhorias

Reportar erros e melhorias com as seguintes informações:

  • Ambiente
  • Tipo de utilizador
  • Dados inseridos
  • Passos efetuados
  • Erro obtido
  • Evidências (imagens, vídeos ou o texto)
  • Resultado esperado
  • Momento em que ocorreu
  • Casos de teste associados

Recomenda-se usar uma ferramenta como o Jira, que permite organizar e priorizar estes registos.

Fazer um relatório de testes

Criar relatórios que identifiquem erros e melhorias, ao indicar:

  • Testes executados
  • Testes que passaram ou falharam
  • Erros associados
  • Momento da execução
  • Conclusões de cada teste

Os relatórios podem ser funcionais, de usabilidade ou acessibilidade.