Níveis de Teste, Tipos de Teste e Execução de Testes – Descubra as Diferenças

Tempo de Leitura: 6 minutos
Software Tests

Na última década assistiu-se a uma evolução muito significativa da indústria de testes de software, que deu lugar a múltiplas novas oportunidades, aumentando a relevância desta área para as organizações. É cada vez mais importante garantir o desempenho eficaz das aplicações e dos testes de software, certificando-nos que essas aplicações ou programas são executados com o menor número possível de falhas. 

Estas garantias assentam na definição de uma série de atividades que conduzem à execução dos Testes: o Ciclo de Vida de Testes de Software (STLC – Software Testing Life Cycle). Este procedimento identifica quais as diversas fases dos testes de software e quando devem ser realizadas e concluídas. No STLC cada atividade é executada de forma planeada e sistematizada e cada fase tem objetivos e entregáveis diferentes. 

Mesmo a nível dos profissionais da área de Testes de Software, com a evolução já referida, existe por vezes uma certa confusão sobre algumas das componentes que fazem parte deste ciclo, assim como as competências e atividades que eles próprios, ou os colegas, estão capacitados para executar. 

Vamos por isso esclarecer resumidamente o que são três conceitos essenciais: Níveis de Teste, Tipos de Teste e Execução de Testes. 

Níveis de Teste

Segundo a ISTQB® (International Software Testing Qualifications Board), os níveis de teste são grupos de atividades organizadas e geridas em conjunto. Cada nível é uma instância do processo de teste e estão divididos da seguinte forma:

Teste de Componentes (Component Testing)

O Teste de Componentes ou teste unitário ou de módulos, verifica o funcionamento da unidade mais pequena do código de uma aplicação, independentemente da sua interação com outras partes do código. 

Geralmente, este nível de teste é realizado isoladamente do resto do sistema. Podem utilizar-se objetos simulados, virtualização de serviços, simuladores ou controladores. O teste unitário pode abranger funcionalidades (por exemplo: correção de cálculos), características não funcionais (por exemplo, procura de fugas de memória) e propriedades estruturais (por exemplo: teste de decisões).

Este nível de teste é efectuado habitualmente pelo programador que desenvolveu o código. Os testes unitários são simples e rápidos, mas não são suficientes. É importante que sejam complementados com outros níveis de teste.

Integração (Integration Testing)

Quando de está a preparar os testes para um projeto, é comum os testes de integração serem esquecidos. Mesmo testando separadamente dois componentes que interagem entre si, usando mocks, virtualização etc, e concluindo que ambas estão a funcionar como esperado, é possível que os dois componentes não funcionem bem em conjunto.

Os testes de integração são mais complexos de desenvolver, manter e mais lentos que os testes de componentes, dado que testam funcionalidades inteiras, muitas vezes, com persistência de dados. 

Realizar testes de integração não é testar a lógica dos componentes, mas testar como os diferentes componentes interagem entre si (testes de integração de componentes).

Esta mesma lógica de teste de integração aplica-se a quaisquer elementos que possam ser integrados. Por exemplo, quando temos dois sistemas integrados também devemos endereçar a interação entre estes sistemas recorrendo a testes de integração de sistemas.

Teste de Sistema (System Testing)

O teste de sistema centra-se no comportamento e nas capacidades de todo um sistema ou produto. Consideram-se as execuções das tarefas do sistema de ponta a ponta (End to End Test) e os comportamentos não funcionais exibidos ao executar tais tarefas. 

Este nível de teste produz informações que são usadas pelos stakeholders para a tomada de decisões. Pode também satisfazer requisitos ou obrigações normativas e regulamentares. É comum implementar-se este nível de teste, pois simula a experiência do utilizador. É por isso de extrema importância, dado que são os testes mais próximos do que o utilizador final vai encontrar ao usar a aplicação.

Tipicamente, este nível de teste é realizado no ambiente que antecede a produção. O teste de sistema deve focar-se no comportamento geral, funcional e não funcional, de ponta a ponta do sistema, como um todo.

Teste de Aceitação

O teste de aceitação, tal como o teste de sistema, centra-se no comportamento e capacidade de todo um sistema ou produto. Pode produzir informações para avaliar a situação do sistema, no sentido da sua implementação e utilização pelo cliente final (utilizador). O teste de aceitação pode também satisfazer requisitos, obrigações normativas ou regulamentos.

As formas mais comuns de testes de aceitação incluem o seguinte:

  • Teste de aceitação de utilizador (UAT) 

Consiste em colocar o sistema num ambiente controlado, para que o utilizador da aplicação faça um “TestDrive”. É aqui que podemos recolher informações sobre se o sistema corresponde aos requisitos e se o utilizador consegue executar os processos de negócio com o mínimo de dificuldade, custo e risco.

  • Teste de aceitação operacional (OAT)

Esta forma de teste de aceitação é focada na equipa de administração de sistemas. Realizado igualmente num ambiente controlado, pode incluir testes como backup, instalação, recuperação de desastres, gestão de utilizadores, tarefas de manutenção, vulnerabilidade, segurança e teste de performance. 

  • Teste de aceitação contratual e de regulamentação (Contractual and Regulatory Acceptance Testing)

O teste de aceitação contratual é realizado com base nos critérios de aceitação de um contrato para desenvolver softwares específicos.

  • Teste Alfa e Beta

O Teste Alfa é uma forma de teste de aceitação, no entanto, é realizado de uma forma não planeada, disponibilizando o sistema dentro da infraestrutura da empresa que desenvolveu o produto e para um pequeno grupo de pessoas. Essas pessoas são geralmente membros da organização e também do cliente mas não da equipa de desenvolvimento. O objetivo é que essas pessoas forneçam inputs sobre a situação atual do sistema.

O Teste Beta é realizado também de forma não planeada, e pode ser executado por um grande número de pessoas desconhecidas. O sistema é executado na infraestrutura dessas pessoas, que tipicamente não fazem parte da equipa ou da empresa que efetuou o seu desenvolvimento. É utilizado como uma forma de aceitação externa, possibilitando avaliar o feedback do mercado.

Tipos de Teste

Um tipo de teste é um grupo de atividades, destinado a testar características específicas de um sistema de software, ou parte, com base em objetivos de teste específicos.

Os principais tipos de teste são: 

Teste Funcional

O teste funcional envolve testes que avaliam as funcionalidades que o sistema deve executar. Os requisitos funcionais podem ser descritos, por exemplo, como especificações de requisitos de negócio, user stories, casos de uso ou especificações funcionais, podendo ainda não estar documentados. O projeto e a execução de testes funcionais podem envolver o recurso a profissionais especializados numa determinada área ou competência, como o conhecimento específico de um problema de negócio que o software resolve, ou o papel específico que o software desempenha ou deverá desempenhar.

O teste funcional é o teste de “o que” o sistema deve fazer.

Teste Não Funcional

Os testes não funcionais avaliam as características dos sistemas e software, como a usabilidade, eficiência de desempenho ou segurança. Pode consultar a norma [ISO25010] que regula os requisitos e avaliação dos sistemas e modelos de qualidade de software

O teste não funcional é o teste de “quão bem” o sistema deve comportar-se.

Tipos e Níveis de Teste

É possível executar qualquer um dos tipos de teste  em qualquer nível de teste, mas não é necessário ter todos os tipos de testes representados em todos os níveis.

Teste Manual e Teste de Automação

Depois da descrição dos principais tipos e fases de teste, avançamos para as suas forma de execução.

Podemos executar os teste de duas formas, manual ou automatizada.

Teste Manual

Tal como o nome indica, o Teste Manual é a forma de uma aplicação ser testada por um ser humano, manualmente. Um especialista em garantia de qualidade (tester) que executa testes manuais garante que a aplicação está a funcionar corretamente, seguindo as condições descritas nos casos de teste.O tester avalia o design, a funcionalidade e o desempenho da aplicação, verificando ainda outros elementos. Os testes manuais são mais recomendados quando se utilizam testes exploratórios, testes de usabilidade e testes de aceitação.

Teste de Automação

Os Testes Automáticos implicam o desenvolvimento de testes programados para serem executados automaticamente, comparando os resultados reais com os resultados esperados. Os Testes Automáticos são executados com o auxílio de ferramentas, scripts e software, sendo principalmente recomendados para realizar testes de regressão, testes de carga e testes de desempenho.

Conclusão

Esperamos ter contribuído para um maior esclarecimento entre os três tópicos abordados. 

Relembrando:

  • O Teste manual é um Teste manual; já o Teste Funcional, pode ser manual ou automático;
  • O teste unitário pode ser um teste funcional (tal como os outros níveis de teste)
  • Reduzir o custo e o tempo para a conclusão de um projeto, com qualidade, não pode depender apenas de testes automáticos. É imprescindível realizar a combinação certa entre testes manuais e testes automáticos. Igualmente fulcral, é encontrar um equilíbrio na distribuição dos tipos de testes nos níveis de teste para obter os melhores resultados.

Considere por favor que, para o seu projeto, não é necessário realizar todos os testes que mencionámos aqui. Os testes que deverá executar, dependem do tipo de software que se encontra a desenvolver e de outros fatores, que devem depender de uma análise atenta e cuidada. 

RECEBER OFERTAS DE FORMAÇÃO OLISIPO: SOFTWARE TESTING E QA

Partilha-me!

Subscreve a newsletter semanal com os melhores conteúdos

Read on...

Está na hora de dares um salto na tua carreira?

iT's 29 years accelerating careers and still new in town!

Key reading jobs