Teste de caixa preta ou caixa branca - o que você faz primeiro?

14

Em uma equipe muito pequena, onde os testes de caixa preta e caixa branca são feitos pela mesma pessoa, o que o testador deve fazer primeiro?

Pilar de Sal
fonte
1
Eu acho que isso depende do contexto. Você terminou de implementar as especificações principalmente e deseja iniciar seu teste final ou está falando geralmente a qualquer momento durante o ciclo de desenvolvimento? Como algumas menções nas respostas, seus implementadores geralmente escrevem testes de unidade que podem ser considerados parte de seus testes de caixa, pois esses codificadores entendem o funcionamento interno e desejam afirmar a funcionalidade de sua implementação antes de confirmar.
Chris

Respostas:

11

O que quer que seja mais correto.

Sério, o teste de caixa branca (ou seja, o teste das partes internas do código) deve ser idealmente realizado com testes de unidade pelo desenvolvedor que escreveu o código. Os testes de unidade seriam construídos ao longo do tempo e parte do processo de construção, para que não desperdiçássemos o tempo ruim do testador com código que sabemos que não funciona como deveria. O teste de unidade se torna mais importante quanto menor a sua equipe - principalmente porque você não tem um exército de testadores para resolver os problemas.

O teste de caixa preta (ou seja, através da interface do usuário / sistema) é normalmente o que a maioria dos testadores faz.

Todos os testes precisam ser priorizados quanto à importância de uma função para o produto acabado. Se a missão é fornecer uma ferramenta para executar X e o produto não executar X, isso é um grande problema.

Berin Loritsch
fonte
1
Bem dito, melhor resposta que li até agora.
Chris
5

Preto

Teste de caixa preta para verificar os recursos. Teste de caixa branca, conforme necessário, se as coisas estiverem quebradas. Se todos os testes da caixa preta passarem e a cobertura for boa, o teste da caixa branca será desnecessário.

Steven A. Lowe
fonte
2
A menos, claro, os testes caixa preta perdeu testando uma peça-chave da funcionalidade ou configuração:}
Alan
3
@ Alan: o mesmo argumento se aplica aos testes de caixa branca, portanto a advertência de 'cobertura é boa'
Steven A. Lowe
1
Concordo - acho que minha afirmação depende da sua definição de boa cobertura.
Alan
1
@ DocBrown Eu absolutamente não vejo como o que você explicou é remotamente parecido com o teste de caixa branca. O teste de caixa branca é sobre seguir os caminhos de ramificação de uma determinada implementação e escrever casos de teste que exercitarão todos os caminhos. Se você ainda não possui uma implementação, não poderá, por definição, fazer testes de caixa branca. Com o TDD e o BDD, você escreve testes da forma geral dada quando e depois. Você configura os dados de entrada ou o estado pré-condicional, aciona a unidade e faz verificações nos dados de saída ou no estado final ou em chamadas de terceiros. Esta é a definição de teste de caixa preta.
Sammi 10/10
1
@ SamJudge: para meu entendimento, quando você olha dentro do código de implementação e usa essas informações para projetar dados de teste muito específicos (que são passados ​​pela interface pública), justificou-se chamar esse teste de caixa branca. Esse teste também falha se o resultado não for o que se espera. Se você mais tarde examinar apenas o teste, poderá não ser capaz de dizer claramente "esse teste foi produzido por uma abordagem de caixa branca (ou caixa preta)", é claro.
Doc Brown
3

Caixa preta.

Os componentes da caixa branca geralmente dependem dos componentes da caixa preta, então eu gostaria de testar a caixa preta primeiro e depois passar para a caixa branca.

Walter
fonte
2
Não sei ao certo o que você quer dizer com "componentes da caixa preta" e "componentes da caixa branca" - para mim, são apenas "componentes" (que podem ser testados com ou sem o conhecimento do código ou da arquitetura subjacente.)
Alan
Eu não entendo o relacionamento "dependente" que você está sugerindo aqui. Caixa preta e preta branca não são componentes, mais como um estilo de testar qualquer componente, como Alan menciona. A diferença está na abordagem adotada para testar o componente em questão.
Chris
2

Primeiro você faz o teste de branco pensando como codificador / desenvolvedor para garantir que tudo funcione bem. Em seguida, você faz o teste da caixa preta, geralmente tentando pensar como se você fosse o usuário final, sem pensar na estrutura interna do programa. Às vezes, você precisa pensar como um codificador / desenvolvedor, mesmo que esteja fazendo um teste de preto, porque pode estar testando um módulo interno que foi escrito por outra pessoa e não tem acesso ao código.

Enrique
fonte
2

Se você deseja ter um bom ciclo de teste, deve ter pessoas diferentes fazendo os dois :

  • Um desenvolvedor focado principalmente em testes de caixa branca sabe o que mudou recentemente no código, quais áreas são mais complexas (e, portanto, provavelmente quebram) etc., e pode concentrar esforços adequadamente nessas áreas com maior probabilidade de apresentar novos defeitos.

  • Por outro lado, um testador de controle de qualidade focado em testes de caixa preta pode abordar mais facilmente os testes como um usuário final. Sem nenhum conhecimento interno do código, eles podem adotar uma nova abordagem e não são influenciados pelo conhecimento de como as diferentes partes da solução são implementadas. Eles capturam bugs que o desenvolvedor pode ter esquecido, ou regressões de alterações no código que acidentalmente quebraram outras áreas do aplicativo.

Para responder sua pergunta, o teste da caixa branca deve ser feito primeiro. Mas você realmente precisa ter uma pessoa diferente fazendo o teste da caixa preta, se quiser que seja eficaz.

Justin Ethier
fonte
1

Eu gosto de começar com o teste da caixa preta e depois usar as informações de cobertura de código ou o depurador para descobrir o que estou fazendo e analisar o que está acontecendo.

Mas a resposta real é que depende . É provável que eu mergulhe no código mais cedo (mesmo antes), se estiver fazendo testes de API, mas muito mais tarde, se meu objetivo for analisar alguns cenários de ponta a ponta.

Alan
fonte
1

Eu diria que o teste da caixa preta é o primeiro, simplesmente porque, como proponente do TDD, os testes são escritos antes que o código (ou caixa) exista de qualquer maneira :)

O teste da Caixa Branca (tanto quanto eu entendo) é mais útil em uma mentalidade de depuração.

Matthieu M.
fonte
-1, TDD é um teste de caixa branca. No TDD, é essencial saber o que o código envolvido no teste faz (e o que não faz) para escrever o próximo teste. Teste de caixa preta significa que alguém que não tem idéia do código (um testador, alguém que nem precisa saber como codificar) projeta os testes.
Doc Brown
1
Então não praticamos TDD da mesma maneira. O TDD para mim é sobre o cumprimento das especificações de uma classe / função: os testes são escritos para verificar se a classe / função se comporta conforme especificado, mas podem se importar menos com o comportamento do código nos bastidores, desde que essas especificações sejam mantidas ... o que é necessário, pois os testes são escritos antes da funcionalidade.
Matthieu M.
1

Teste de caixa preta, porque você está escrevendo testes antes que o código exista. O testador precisa desenvolver testes automáticos demorados em paralelo com o código de desenvolvimento do desenvolvedor para ser eficiente em uma equipe pequena.

Se o código já estiver escrito, sugiro que você gaste algum tempo esboçando a cobertura do teste do ponto de vista da caixa preta para garantir um tempo de brainstorming antes de encher seu cérebro com o código real. No entanto, você pode alternar para a caixa branca e examinar o código antes de ir muito longe com os testes reais para ter uma idéia das áreas de risco e priorizar os testes que você pensou anteriormente (e aumentá-los com novos testes pensados ​​por olhando para partes do código que parecem complicadas ou questionáveis).

Ethel Evans
fonte
0

Nem. Eu tento escrever bons testes usando meu Right BICEP , tendo em mente as condições corretas dos limites, não importa a ordem em que eles vêm à mente. Essas são as duas siglas propostas no Teste Pragmático de Unidade .

Meu objetivo é me concentrar em escrever bons testes, e não em qual cor escrever primeiro.

Steven Evers
fonte
'Branco' e 'preto' não são termos de teste de unidade, então é claro que você não está se preocupando com isso. Os testes de unidade são de fato caixa branca.
Ethel Evans
@ Ethel Evans: Eles não são testes de caixa branca por definição. A grande maioria dos testes de unidade são de caixa branca, mas não é um requisito. Quaisquer testes que mapeiam o domínio de entradas para o intervalo de saídas de uma função são testes de unidade, mas não precisam conhecer os detalhes da implementação.
Steven Evers
0

Primeiro faça o teste de caixa branca .

Segundo, vá para o teste de caixa preta.

> Teste de caixa preta

I. O testador deve verificar o funcionamento do aplicativo, como caixa de texto, botão de opção, caixa de listagem, botão de comando, etc.,

II O testador deve verificar o funcionamento da aplicação, como logotipo, imagem, ortografia, etc. etc.

III O testador deve verificar o fluxo inteiro do aplicativo.

Nota: Para verificar as condições positivas e negativas.


fonte