# Teste de Caixa Cinza
Testes de caixa cinza são uma combinação de testes de caixa branca e de caixa preta. Eles são usados para testar um produto ou aplicação com conhecimento parcial da estrutura interna da aplicação. O propósito deste teste é procurar e identificar os defeitos gerados devido a estrutura ou uso impróprios da aplicação.
Algumas das principais características do teste de caixa cinza são:
- É uma é uma junção dos métodos caixa branca (com conhecimento completo do código) e caixa preta (sem qualquer conhecimento do código).
- O custo dos defeitos no sistema podem ser reduzidos ou previnidos ao aplicar a caixa cinza
- É mais apropriados para teste de GUI, funcionais, de securança, aplicações web, etc.
Neste processo, erros de contexto específico que são relacionados a sistemas web são comumente identificados. Isso melhora a cobertura de testes ao concentrar em todas as camadas de qualquer sistema complexo
Em QA, o teste caixa cinza provém uma possibilidade de testar ambos os lados de uma aplicação, ou seja, tanto o front-end quanto o back-end.
# Qual a razão de aplicar o teste Caixa-Cinza?
Alguns dos benefícios de aplicar o teste caixa cinza são:
Ele provém os benefícios combinados de ambas as outras modalidades.
Ele combina o input de devs, com a de testers e melhora a qualidade geral do produto.
Ele reduz o custo geral ao longo do processo de testagem funcional e não-funcional.
Ele confere tempo livre suficiente aos devs para concertar defeitos.
A testagem é feita do ponto de vista do usuário ao invés do ponto de vista de um designer.
# Estratégia de teste Caixa-Cinza
Para performar um teste caixa cinza, não é necessário que o tester tenha acesso ao código fonte.
Um teste é designado baseado no conhecimento de algorítimo, estruturas, arquiteturas, estados interno ou outro tipo de descrição de alto nível do comportamento de um programa.
# Técnicas usadas para o teste
As principais técnicas usadas para o teste caixa cinza são:
Teste de Matriz: esta técnica de testes envolve definir todas as variáveis que existem em um programa.
Teste de Regressão: para checar se a mudança na versão anterior regrediu outros aspesctos do programa na nova versão. Isso será feito por estratégias de teste como retestar tudo, retestar features arriscadas e retestar dentro de um firewall.
Teste de Matriz ou Orientado a Ação (OAT): provê o máximo de cobvertyura de código com o mínimo de casos de teste.
Teste de Padrões: esta técnica é performada nos dados históricos da versão anterior dos defeitos no sistema. Ao contrário do teste caixa preta, o teste caixa cinza opera ao cavar dentro do código e determinar o motivo da falha acontecer.
# Passos para aplicar o teste Caixa-Cinza
Vejamos as etapas para aplicar o teste caixa cinza:
- Identificar os inputs;
- Identificar os outputs;
- Identificar os principais paths;
- Identificar as subfunções;
- Desenvolver inputs para as subfunções;
- Desenvolver outputs para as subfunções;
- Executar casos de teste par as subfunções;
- Verificar o resultado correto para as subfunções;
- Repetir os passos 4 & 8 para outras subfunções;
- Repetir passos 7 & 8 para outras subfunções;
Observe que os casos de teste para caixa cinza podem incluir:
- Relacionado a interface gráfica do usuário (GUI);
- Relacionado a Segurança;
- Relacionado a Database;
- Relacionado a Browser;
- Relacionado ao Sistema Operacional;