Desenvolvimento

Testes de software

Como programadores, toda vez que codificamos algo sentimos uma necessidade enorme de pôr nosso código a prova e essa necessidade é uma atividade que é sempre inerente a codificação: o teste. Seja nos casos em que escrevemos apenas um pequeno método ou uma função, seja na criação de uma classe ou de um script, durante ou ao final do processo de codificação acabamos testando o que produzimos para verificar se o que escrevemos funciona de fato. Para tanto, há várias técnicas e níveis de testes que podem nos guiar durante esse processo.

Testes nada mais são do que experimentos que fazemos sob o artefato codificado. As técnicas são as abordagens que aplicamos em nossos experimentos e os níveis estão relacionados a extensão desses experimentos.

Há diversas nomenclaturas para diversos tipos de testes. Dentre elas, há de se saber:

  • teste de unidade: é o experimento que testa a menor parte do software. Em softwares orientados a objetos, a menor unidade é uma classe. Ou seja, os testes de unidade visam pôr à prova uma classe de maneira isolada. Em alguns casos é necessário simular as dependências desta classe durante o teste;
  • teste unitário: é um termo comumente usado pelas pessoas para um teste de unidade [1];
  • teste de integração: é o experimento que testa a combinação entre recursos. Ou seja, os testes de integração visam garantir que um ou mais componentes combinados (ou unidades) funcionem. A combinação de componentes pode ser, por exemplo, entre uma classe do software e um recurso externo. Um recurso externo ao software pode ser um banco de dados, um web service, um sistema de envio de mensagens ou mesmo um arquivo de texto no disco rígido;
  • teste de sistema: é o experimento que testa o software como um todo. Ou seja, o objetivo dos testes de sistema é avaliar como todas as unidades e recursos externos funcionam em conjunto;
  • teste de aceitação: é o experimento realizado por um usuário do software que executa uma operação a fim de verificar se o comportamento executado é igual ao comportamento desejado. Em outras palavras, o teste visa avaliar se o comportamento está de acordo com o requisitado e se satisfaz os critérios de aceitação;
  • teste funcional: é a técnica que visa avaliar se o resultado obtido por meio de uma entrada fornecida é igual ao resultado esperado. Testes de unidade, de integração, de sistema e de aceitação são testes funcionais;
  • teste de regressão: é a técnica que visa aplicar todos os testes já existentes ao artefato modificado. Ou seja, ao aplicar os testes novamente no item alterado, o objetivo é avaliar se uma nova alteração no código não alterou o comportamento do item testado, mantendo em funcionamento o que já funcionava antes;
  • teste de carga: é o experimento que avalia o limite operacional de um software. Ou seja, visa avaliar o poder de um software em suportar uma quantidade excessiva de um determinado processamento, como por exemplo, a quantidade de requisições por segundo que um sistema web suporta.

E aí, conhece mais algum tipo de teste? Comenta aí! =)

Referências:

[1] Unidade, integração ou sistema? Qual teste fazer?

Anúncios
Padrão

2 comentários sobre “Testes de software

  1. Parabéns, muito legal esse post. Os testes são fundamentais para o desenvolvimento de software. Infelizmente, muitas vezes, eles são deixados de lado.
    Outra coisa que vejo acontecer com frequência, é as pessoas fazerem apenas um tipo de teste e acharem que já é o suficiente.
    Como você bem mostrou, cada tipo de teste tem um propósito bem definido, e portanto, são complementares.

    Curtido por 1 pessoa

    • Valeu Bruno! O engraçado é que escrevendo essa publicação eu percebi que nunca deixamos de testar o que produzimos. Desde o primeiro código que criamos, sempre executamos ele para ver se funciona, o que não deixa de ser um teste. Mas acho que bons programadores devem buscar conhecer formas mais rápidas e profissionais de testar.

      Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s