De acordo com a norma ISO 9126, funcionalidade é a capacidade de um sistema em prover funcionalidades definidas que atendam às necessidades do usuário quando usado sob determinadas condições preestabelecidas.

Devido a essa importância, existem várias técnicas para avaliar as funcionalidades de um software, dentre elas, o teste funcional. Esse tipo de teste é conhecido como “caixa preta” por desconsiderar a estrutura interna (código fonte) dos programas e basear-se na especificação para realizar o seu planejamento e execução.

Essa abordagem de teste tem por objetivo principal verificar se o sistema está correto “funcionalmente” e de acordo com os seus requisitos. Pode ser aplicado em diversos tipos de sistemas construídos em diferentes tipos de linguagens de programação sendo realizado tanto manualmente quanto utilizando-se ferramentas de automação.

Alguns exemplos de testes funcionais são:

  • Teste de Funcionalidade.
  • Teste de Usabilidade.
  • Teste de Compatibilidade.
  • Teste de Interface.
  • Teste de Regressão.
  • Teste de Requisitos.

Um dos principais artefatos para a execução de testes funcionais são os casos de teste, os quais são derivados a partir da especificação do sistema ou componente a ser testado com foco no domínio do negócio. Para executá-los, devem ser criados cenários para validar as possibilidades de uso das funcionalidades através de entradas inseridas com resultados esperados estabelecidos.

Neste caso, para cada teste executado é comparado o resultado obtido visando saber se o sistema atingiu o seu objetivo (passou) ou foi encontrado algum erro (falhou) podendo-se encontrar diversos tipos de defeitos, tais como:

  • Funcionalidades incorretas.
  • Erros de interface.
  • Erros na validação de campos.
  • Funcionalidades não implementadas totalmente.

O sucesso do teste funcional está diretamente relacionado com a cobertura dos testes, ou seja, quanto maior o número de verificações realizadas, maior tende a ser a confiabilidade no software. Alguns documentos que podem ser utilizados como base para a criação de casos de teste são: layouts de telas, especificação de requisitos, especificação de casos de uso, especificação funcional, documentação de regras e funções de negócio etc.

Entretanto, como toda técnica, ela possui suas limitações, sendo listadas abaixo algumas delas:

  • Normalmente os testes funcionais são aplicados durante as últimas etapas da atividade de desenvolvimento.
  • Teste funcional utilizado isoladamente não verifica as funcionalidades extras não especificadas.
  • Nem todos os sistemas possuem especificação funcional.
  • É praticamente impossível testar todas as possíveis entradas de um sistema.

Para contornar a primeira situação é ideal que os testes sejam aplicados desde as fases iniciais do processo de desenvolvimento. Já para a segunda, podem ser utilizadas em conjunto outras técnicas complementares aos testes funcionais. Em relação a terceira, uma possibilidade é a execução de testes exploratórios. Sobre a quarta, faz-se necessário utilizar técnicas que aumentem a coberturas dos testes.

Os testes exploratórios são muito úteis para resolver algumas dessas questões visto que podem ser utilizados para complementar os testes, entender o funcionamento da aplicação, encontrar novos defeitos, simular cenários não documentados e validar funcionalidades críticas e por vezes complexas.

Na maioria das vezes, para a realização de testes exploratórios, não há um planejamento detalhado e estratégia totalmente definida, dependendo-se da habilidade e experiência do testador para ser realizado. Saiba mais sobre esse tipo de teste neste link.

Como foi visto, o teste funcional se caracteriza como um dos principais tipos de teste para a detecção de defeitos e garantia da qualidade, sendo totalmente possível utilizá-lo trazendo diversos e concretos benefícios.

Mas e a pergunta que não quer calar, será que o teste funcional tende a sumir com o tempo? Tal questionamento chegou como uma dúvida através de um contato feito na Testing Company.

Pelo conhecimento e experiência que temos obtido nos projetos realizados, isso provavelmente não irá ocorrer, visto que através do teste funcional conseguimos em conjunto com nossos clientes garantir a qualidade de inúmeros projetos de desenvolvimento o que torna esse tipo de teste primordial no processo de controle da qualidade.

Ademais, esta técnica avalia partes do sistema que são imprescindíveis por terem contato direto com os usuários finais, principais interessados na utilização das aplicações.

Concorda, gostou do artigo? Deixe seu comentário.

Escrito por Cristiano Baumgartner
Co-Fundador da Testing Company / Especialista em Teste e Qualidade de Software