Principais tipos de Testes de Software

Os testes de software são uma maneira de garantir a qualidade de um software. Com isso existem diversas maneiras de se testar um sistema, que podem variar de acordo com a sua natureza ou seu objetivo. Podemos classificar em:
  1. Testes estruturais ou caixa-branca (white-box testing): teste de unidade e teste de integração.
  2. Testes funcionais ou caixa-preta (black-box testing): teste de sistema e teste de aceitação.
  3. Testes não-funcionais: teste de carga e teste de segurança.
  4. Testes de relacionados à mudança: teste de confirmação e teste de regressão.

Relação entre tipos e técnicas de teste
Relação entre tipos e técnicas de teste


Os testes caixa-branca são realizados diretamente no código e geralmente são feitos pelo desenvolvedor do sistema, um exemplo deste tipo de teste são os testes de unidade (unit testing) e o teste de integração. No teste de unidade, cada função do sistema é testada a fim de garantir que elas funcionam independente da interação com as outras partes do sistema. Já o teste de integração tem o objetivo de verificar se cada parte, ao ser integrada com outras, funcionam corretamente.

Por outro lado, os testes caixa-preta são feitos pelos testador, cliente ou usuários, os quais não têm contato direto com o código-fonte do sistema. Entende-se o sistema como uma caixa, onde ao inserir valores de entrada, retorna valores de saída. Em cada nível de teste eles mudam de objetivo. Os testes de sistema são realizados por uma equipe específica de teste, que utiliza a especificação dada pelo cliente para fazer o roteiro de casos de teste.

Já o teste de aceitação difere do teste de sistema, pois pode ser executado pelo cliente ou pelos usuários, cuja finalidade do teste é verificar se o sistema está de acordo com o que foi solicitado e se atende as necessidades dos usuários.

Os testes não-funcionais têm esse nome por se tratar de testes que verificam aspectos gerais da aplicação, independente das regras de negócio que há nele. Nesse caso, pode-se testar o desempenho, a segurança, a usabilidade, entre outros.

Já os testes de relacionados à mudança são realizados quando o sistema sofrem alterações consideráveis, que podem gerar bugs. Geralmente é necessário re-executar o roteiro de teste criado para o teste funcional, nesse caso chamamos de teste de regressão. Para uma melhor eficiência nesse tipo de teste, uma estratégia seria automatizar para reduzir o custo de re-execução e conseguir realizar uma verificação mais rápida.

Uma ferramenta que pode ser usada para testes de regressão caixa-preta é o Selenium WebDriver. Contudo, eles também podem ser feitos com técnicas estruturais (caixa-branca), pois qualquer execução de teste que valide se o sistema continua funcionando é um teste de regressão.

Uma métrica importante, que deve ser levada em consideração, é a cobertura dos testes, que tem a finalidade de verificar qual o percentual de código-fonte que os testes realizados, tanto estruturais quanto funcionais, estão abrangendo. Há ferramentas que auxiliam na verificação dessa métrica, como por exemplo:
  1. SonarQube;
  2. OpenClover;
  3. IntelliJ IDEA;
  4.  EclEmma. 
Geralmente é definido um critério aceitável de cobertura, por exemplo, testes que cobrem 95% do código. Não existe técnica melhor, existe sim a melhor estratégia de teste. Cada técnica tem sua finalidade e pode ser executada de forma manual ou automática. A partir do entendimento mais aprofundado sobre cada tipo de teste, é que se pode obter uma forma mais prática de testar cada parte do sistema, a fim de garantir uma maior qualidade no software.

Referência:


Última Atualização: 19/01/2022

Vídeo sobre o tema: