Dando
continuidade à parte 01 do post de Introdução a Teste de Software,
o nosso colaborador Thiago Ferreira elaborou a segunda parte. Nesta
ele abordar as técnicas e níveis de testes de software.
O
objetivo deste post é esclarecer um pouco conceitos e técnicas de
teste que são bastante comuns no cotidiano de quem trabalha com
testes e grande parte da comunidade de Analistas e Desenvolvedores já
ouviu falar ou até mesmo usar alguma prática.
Existem
diversas formas/maneiras de se testar um software. Tudo dependerá
exclusivamente da metodologia e do processo de desenvolvimento que
está sendo aplicado, ou até mesmo do objetivo do que se deseja
encontrar através da sua execução. Irei transcorrer sobre as mais
conhecidas, falando um pouco sobre cada uma.
Para
melhor compreensão, deveremos compreender a diferença entre os
tipos de testes chamados Estáticos
e Dinâmicos.
Os testes ditos Estáticos
compreendem os testes que não envolvem a execução de algum
programa. Nesse tipo de teste o foco está principalmente na análise
dos artefatos do projeto, envolvendo componentes como: documentação
de requisitos, análise dos casos de uso, inspeção do código
fonte, entre outros. Os testes
definidos como Dinâmicos
são os que estão relacionados à execução prática dos testes,
onde estes precisam do programa executando e rodando em uma base de
dados estável e confiável para validação.
“Tá
Thiago, e onde se encaixa os testes chamados de Caixa-Preta e
Caixa-Branca?” Calma rapaz!
Vamos com calma. Os testes conhecidos como Testes
Funcionais. (conhecidos como
Testes de Caixa-Preta),
verifica apenas entradas e saídas, não se preocupando como foi
feita a implementação. O testador nesse tipo de teste não precisa
conhecer os detalhes do código-fonte, bastando para isso informar os
dados de entrada na interface testada e verificar se a
saída/resultado está de acordo com o que era esperado. Este tipo de
teste, portanto, não tem como objetivo saber como a funcionalidade
foi implementada, mas sim quais são os resultados esperados,
avaliando somente a entrada e saída. Também verifica se existem
erros/falhas na interface e se alguma funcionalidade está faltando
conforme requisitos do usuário.
Os
testes Estruturais (conhecidos
como Teste de Caixa-Branca)
levam em consideração a estrutura do código fonte para identificar
a implementação. Assim, esse tipo de teste é elaborado para:
testar as decisões lógicas (verdadeiro/falso), testar os “loops”
até o limite, as variáveis estáticas e dinâmicas, dentre outros.
Figura 1:
Teste de Caixa-Preta e Caixa-Branca.
Uma
questão Thiago: “Os testes de
Caixa-Branca substitui os testes de Caixa-Preta?”
Não. Muito pelo contrário, ambos podem ser utilizados em conjunto,
mas cada um com seus objetivos, ou seja,dependendo do projeto no qual
você trabalha, poderá utilizar a técnica na qual achar melhor.
Existem também os chamados testes de Caixa-Cinza,
que é a união da prática do
teste de Caixa-Preta
com Caixa-Branca,
no qual envolve o acesso a estrutura de dados juntamente com a
interface da aplicação, a fim de elaborar os casos de testes de
acordo com as situações exigidas.
E
o chamado Teste de Regressão?
Essa é uma técnica de teste aplicável quando surge uma nova versão
do software após a mudança da versão anterior. O objetivo é
verificar se a introdução de uma mudança, por exemplo, novo código
ou até mesmo a correção de uma falha, não provocou uma nova falha
em uma parte do software que já funcionava corretamente. Serve,
principalmente, para verificar se não houve algum “efeito
colateral” no produto.
“Bacana,
agora sei de tudo sobre testes de software”.
Vá com calma amigo! Não tão rápido assim. É preciso também ter
o conhecimento sobre os chamados níveis
de testes. “Mas
o que são níveis de testes?”
Os níveis de testes te darão um direcionamento para a execução
dos testes, ou seja, eles podem executar os testes em unidades
mínimas do software ou em grandes partes do sistema. Tudo isso,
claro, dependerá da forma como o projeto está sendo executado e do
que você pretende encontrar nos testes.
Os
níveis de testes são divididos em:
- Teste Unitário: São aplicados nas menores unidades do software, nas quais normalmente são os métodos ou funções de um código-fonte. O objetivo é buscar por erros de lógica e programação, nas unidades em separado, de forma a garantir que essas unidades funcionem corretamente e isoladamente. Usualmente são os próprios desenvolvedores que realizam os testes unitários do próprio código.
- Teste de Integração: Os testes de integração, por sua vez, verificam se as partes que funcionavam isoladamente continuam a funcionar após serem integradas, ou seja, combinadas. Portanto, são verificadas as integrações entre unidades, componentes, sistemas, camadas, entre outros. As integrações podem ser do tipo Big Bang ou Incremental. Integrações do tipo Big Bang procuram integrar as partes do sistema como um todo, enquanto que a Integral realiza a integração de partes do sistema aos poucos, ou seja, por partes.
- Teste de Sistema: Avaliam o comportamento do sistema como um todo. Além das funcionalidades, características não funcionais como: performance, segurança, usabilidade, dentre outros, são avaliados.
- Teste de Aceitação: Conhecido também como Teste de Usabilidade, são realizados pelos clientes/usuários do sistema com o objetivo de verificar se o sistema está atendendo ao que era pretendido e foi especificado. Esse nível não tem como objetivo caçar defeitos, e sim verificar se o sistema está nos padrões solicitados pelo cliente.
Figura 2:
Níveis de Abstração do Teste
Não
paramos por aqui, no próximo post iremos abordar as técnicas
não-funcionais. Então fiquem atentos e aguardem a continuação...
Referências:
Wikipédia.
“Teste
de Software”.
http://pt.wikipedia.org/wiki/Teste_de_software.
Acesso
em 06
março 2013.
COUTINHO,
Pedro Henrique Mannnato. Módulo
de: Teste de Software.
Formato PDF.
ESAB – Escola Superior Aberta do Brasil. Primeira Edição. 2011.
SILVA,
Fernando Rodrigues.
Teste de Software – Níveis de Teste.
http://www.devmedia.com.br/testes-de-software-niveis-de-testes/22282.
Acesso em 06 março 2013.
TOZELLI,
Paulo. Teste
de Software.
Disponível
em: <http://imasters.com.br/artigo/9572/software/teste-de-software/>.
Acesso em 06 março 2013.
Analista de Sistema na Confederação das Unimeds Norte/Nordeste.






Parabéns ao Thiago, exelente matérial.
ResponderExcluirO teste de aceitação que tbm pode ser chamado de teste de validação, pode ser feito em 2 estágios:
Alfa: Ambiente controlado;
Beta: Ambiente Caótico;
Teste de sistemas é a integração de toda a Engenharia de Sistemas:
Pessoas,
Sistema,
Hardware,
Processos,
outros softwares.
É bastante parecido com o ambiente real.
att,
Fernando Ítallo