22 Junho 2021 22:27

Caixa cinza

O que é uma caixa cinza?

A caixa cinza refere-se ao teste de software em que há algum conhecimento limitado de seu funcionamento interno. O teste de caixa cinza é uma técnica de hacking ética em que o hacker precisa usar informações limitadas para identificar os pontos fortes e fracos da rede de segurança de um alvo.

Principais vantagens

  • O teste de caixa cinza é uma técnica para descobrir bugs de software ou encontrar exploits, onde algum conhecimento limitado sobre o software subjacente é conhecido com antecedência.
  • Essa forma de “hacking ético” permite que os desenvolvedores de software criem correções e patches para impedir que invasores mal-intencionados utilizem essas explorações.
  • O teste de caixa cinza é essencialmente uma mistura de metodologias de caixa branca (conhecimento total) e caixa preta (sem conhecimento).

Compreendendo as caixas cinza

A caixa cinza é o híbrido de teste de caixa branca, em que o testador examina a lógica interna e a estrutura do código do software, e o teste de caixa preta, em que o testador não sabe nada sobre o código do software. Para entender o teste de caixa cinza, devemos primeiro entender o teste de caixa preta e o teste de caixa branca.

Teste de caixa preta e caixa branca 

O teste da caixa preta olha para nada mais do que entradas do usuário e qual saída o software produz com essas entradas. O teste da caixa preta não requer nenhum conhecimento de linguagem de programação ou outros detalhes técnicos. É um tipo de teste de alto nível usado em teste de sistema e teste de aceitação. Os engenheiros de software exigem um documento de especificação de requisitos de software (SRS) para realizar o teste de caixa preta. Esse teste assume uma perspectiva do usuário final, em que o testador da caixa preta não sabe como as saídas são geradas a partir das entradas.

O teste de caixa branca requer conhecimento profundo das técnicas e plataformas usadas para construir software, incluindo a linguagem de programação relevante. É um tipo de teste de baixo nível usado em teste de unidade e teste de indicação. Os engenheiros de software precisam entender a linguagem de programação usada para criar o aplicativo para que possam entender seu código-fonte. Os objetivos principais do teste de caixa branca são fortalecer a segurança, examinar como as entradas e saídas fluem pelo aplicativo e melhorar o design e a usabilidade. Quando um testador de caixa branca não obtém a saída esperada de uma determinada entrada, o resultado é considerado um bug que precisa ser corrigido.

Como funciona o teste de caixa cinza

O teste de caixa cinza inclui componentes importantes de teste de caixa preta e branca para obter um resultado melhor do que qualquer um poderia obter sozinho. Tanto os usuários finais quanto os desenvolvedores realizam testes de caixa cinza com conhecimento limitado (parcial) do código-fonte de um aplicativo. O teste da caixa cinza pode ser manual ou automatizado. É mais abrangente e demorado do que o teste de caixa preta, mas não tão abrangente ou demorado como o teste de caixa branca. Os testadores de caixa cinza exigem documentos de projeto detalhados.

O teste de caixa cinza envolve a identificação de entradas, saídas, caminhos principais e subfunções. Em seguida, ele passa a desenvolver entradas e saídas para subfunções, executar casos de teste para subfunções e verificar esses resultados.

Exemplo de caixa cinza

Um testador de caixa cinza pode verificar e corrigir os links em um site. Se um link não funcionar, o testador altera o código HTML para tentar fazer o link funcionar e, a seguir, verifica novamente a interface do usuário para ver se o link funciona. Um testador de caixa cinza também pode testar uma calculadora online. O testador definiria as entradas – fórmulas matemáticas como 1 + 1, 2 * 2, 5-4 e 15/3 – e verificaria se a calculadora fornece as saídas corretas com essas entradas. O testador de caixa cinza tem acesso ao código HTML da calculadora e pode alterá-lo se algum erro for identificado.

O teste da caixa cinza examina a interface do usuário do aplicativo, ou camada de apresentação, e seu funcionamento interno ou código. É usado principalmente em testes de integração e testes de penetração, mas não é adequado para testes de algoritmos. O teste de caixa cinza é geralmente usado para testar a interface do usuário de um aplicativo, segurança ou funcionalidade online por meio de técnicas como teste de matriz, teste de regressão, teste de matriz ortogonal e teste de padrão. Os testadores de caixa cinza têm maior probabilidade de identificar problemas específicos do contexto.

“Cinza” refere-se à capacidade parcial do testador de ver o funcionamento interno do aplicativo. “Branco” refere-se à capacidade de ver através da interface do software seu funcionamento interno, e “preto” refere-se à incapacidade de ver o funcionamento interno do software. O teste de caixa cinza às vezes é chamado de teste translúcido, enquanto o teste de caixa branca às vezes é chamado de teste claro e o teste de caixa preta também pode ser chamado de teste opaco.