• Utiliza as estruturas internas do sistema para criar testes
    • Em caixa preta, não sabemos como o sistema funciona
    • Em caixa-branca, conhecemos o como
  • Tipicamente, a “estrutura interna” é o código fonte

Cobertura de comando

Mede o percentual de comandos cobertos pelos testes

Exemplo:

int function SUT(int x, int y, int z) {
	if (x > y+z) {
		x = y+1;
	}
	x = x+1;
	return x;
}

Total de linhas: 5 (não contar linhas sem comandos)

Caso de teste 1:
Entrada: x=10, y=30, z=40
Resultado esperado: 11

Linhas cobertas pelo teste 1:

  • 1 - Declaração de função (por mais estranho que possa parecer)
  • 2 - Condicional (mesmo que a condição não seja atendida)
  • 4 - Comando
  • 5 - Retorno

Cobertura de comando do teste 1: 4/5 = 0,8 = 80%

Exercício

Qual o percentual de cobertura de código considerando-se a soma da cobertura de todos os casos de Teste abaixo?

int function SUT(int x, int y, int z) {
	if (x > y+z) {
		if (y > z) {
			x = y;
		}
		else {
			x = y+1;
		}
	}
	x = x+1;
	return x;
}

Total de linhas: 8 (contando o else)

Caso de teste 1:
Entrada: x=1, y=2, z=3
Resultado esperado: 2

Linhas cobertas: 1, 2, 7, 8
Cobertura: 4/8 = 0,5 = 50%
Caso de teste 2:
Entrada: x=10, y=2, z=3
Resultado esperado: 4 

Linhas cobertas: 1, 2, 3, 5, 6, 7, 8
Cobertura: 7/8 = 0,875 = 87,5%
Caso de teste :
Entrada: x=5, y=2, z=3
Resultado esperado: 6

Linhas cobertas: 1, 2, 7, 8
Cobertura: 4/8 = 0,5 = 50%

Cobertura total: 7/8 linhas - 87,5%

Cobertura de Decisão

Vamos cobrir as decisões

Comandos que possuem decisão:

  • if

  • while

  • do-while

  • for

  • case

  • Em sistemas grandes, é difícil conseguir 100% de cobertura de decisão

  • Qual seria o mínimo de cobertura aceitável?

    • Depende do nível de criticidade e tamanho do software
    • 75% 3 85% é o valor economicamente viável em sistemas grandes
    • Em sistemas muito grandes (> 1000 linhas de codigo), a cobetura fica em torno de 50%

Cobertura de Condição

Entre nos detalhes de uma decisão

if((x == y && y > z) || z == 0)

Temos que projetar Casos de Teste que tornem cada condição verdadeira ou falsa

Cobertura de Caminho