O que é Teste de Software?


Teste de Software é um processo que faz parte do #desenvolvimento de software, e tem como principal objetivo revelar falhas/bugs para que sejam corrigidas até que o produto final atinja a qualidade desejada / acordada.

Profissionais que trabalham com testes (denominados analistas de testes, técnicos de testes, homologador, ou simplesmente testes) estão habituados a realizar uma bateria de testes de diferentes naturezas e propósitos, envolvendo não apenas os testes funcionais da aplicação, mas diversas outras atividades como:

  • avaliação da especificação de requisitos,
  • avaliação de projeto técnico,
  • verificações em outros documentos,
  • testes de performance e capacidade,
  • avaliação de interface,
  • dentre outros.

Para ter uma ideia a respeito da diversidade e abrangência de atividades que fazem parte do processo de testes, é apresentada a seguir uma tabela com alguns tipos de testes comuns.

Tipos de Testes


Lista dos tipos de testes que podem ser feitos:

Tipo de Teste
Descrição
Teste de Unidade
Teste em um nível de componente ou classe. É o teste cujo objetivo é um “pedaço do código”.
Teste de Integração
Garante que um ou mais componentes combinados (ou unidades) funcionam. Podemos dizer que um teste de integração é composto por diversos testes de unidade.
Teste Operacional
Garante que a aplicação pode rodar muito tempo sem falhar.
Teste Positivo-negativo
Garante que a aplicação vai funcionar no “caminho feliz” de sua execução e vai funcionar no seu fluxo de exceção. 
Teste de Regressão
Toda vez que algo for mudado, deve ser testada toda a aplicação novamente.
Teste de Caixa-preta
Testar todas as entradas e saídas desejadas. Não se está preocupado com o código, cada saída indesejada é visto como um erro.
Teste Caixa-branca
O objetivo é testar o código. Às vezes, existem partes do código que nunca foram testadas.
Teste Funcional
Testar as funcionalidades, requerimentos, regras de negócio presentes na documentação. Validar as funcionalidades descritas na documentação (pode acontecer de a documentação estar inválida)
Teste de Interface
Verifica se a navegabilidade e os objetivos da tela funcionam como especificados e se atendem da melhor forma ao usuário.
Teste de Performance
Verifica se o tempo de resposta é o desejado para o momento de utilização da aplicação.
Teste de Carga
Verifica o funcionamento da aplicação com a utilização de uma quantidade grande de usuários simultâneos.
Teste de Aceitação do usuário
Testa se a solução será bem vista pelo usuário. Ex: caso exista um botão pequeno demais para executar uma função, isso deve ser criticado em fase de testes. (aqui, cabem quesitos fora da interface, também).
Teste de Volume
Testar a quantidade de dados envolvidos (pode ser pouca, normal, grande, ou além de grande).
Testes de Stress
Testar a aplicação sem situações inesperadas. Testar caminhos, às vezes, antes não previstos no desenvolvimento/documentação.
Testes de Configuração
Testar se a aplicação funciona corretamente em diferentes ambientes de hardware ou de software.
Testes de Instalação
Testar se a instalação da aplicação foi OK.
Testes de Segurança
Testar a segurança da aplicação das mais diversas formas. Utilizar os diversos papéis, perfis, permissões, para navegar no sistema.

TDD


O custo de correção de um bug aumenta até mais de 100x quando corrigido nas fases finais de desenvolvimento, quando comparado ao custo de corrigir a mesma falha em fases iniciais. Por reconhecer este fato e por entender a relevância dos testes no processo de desenvolvimento, muitas empresas, profissionais e equipes optam por um método de desenvolvimento denominado TDD (Test Driven Development) – Desenvolvimento Orientado a Testes.

A ideia é que funcionalidades de testes sejam escritas antes mesmo do desenvolvimento das funcionalidades do sistema. Desta forma, as funcionalidades desenvolvidas precisarão “passar no teste” para serem validadas. Para saber mais, recomendamos: Programação Orientada a Testes.

Mais sobre Testes de Software