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 seria interessante fazer?

Fomentar a realização de testes unitários e integrados

Fomentar a realização de testes unitários e integrados, de uma forma contínua ao longo do sprint, para garantir a qualidade do entregável do sprint.

Fazer o plano de testes

Fazer o plano de testes que deve definir os testes que vão ser executados, quando e em que condições (ambiente, materiais, passo a passo). Indicar qual a metodologia de testes que está a ser usada e qual o template de plano de testes e identificar os responsáveis pela execução.

Escrever casos de teste

Escrever os cenários “positivos” (em que o resultado é o esperado - caminho feliz) e os improváveis (em que a falha tem um forte impacto - o sistema deve estar preparado para lidar com um cenário que não é suposto acontecer). Escrever o passo a passo e o resultado esperado para cada um dos testes e identificar a ligação a uma ou mais user stories (garantir a cobertura de testes: uma funcionalidade tem de ter pelo menos um teste associado).

Executar testes de aceitação

Executar testes de performance, funcionais, de segurança e de carga, uma vez que o resultado destes testes irão determinar a aceitação de uma release para 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, recorrendo a ferramentas desenvolvidas para verificar requisitos de software funcionais e/ou não funcionais, por meio de scripts de testes automatizados, de modo a verificar se as implementações antigas estão a funcionar corretamente.

Reportar erros e melhorias

Reportar erros e melhorias indicando o ambiente, tipo de utilizador, os dados introduzidos, passos que foram feitos, erro obtido e evidências do que foi feito(screenshots, vídeos ou o texto com erro), qual o resultado esperado, quando ocorreu e os casos de teste associados. Sugere-se que sejam reportados numa ferramenta como o Jira, pois permite criar uma lista onde serão avaliados pelo product owner para decidir qual a sua prioridade e atribuir a quem os irá resolver.

Fazer um relatório de testes

Fazer um relatório de testes, identificando os erros e as melhorias. O relatório deve indicar quais os testes que passaram e quais não passaram, os erros associados a cada um, quando foram executados e as conclusões dos testes. Os relatórios podem ser funcionais ou de usuabilidade e acessibilidade.