Buscar

Atividade Prática 3 - Teste Estrutural, Teste de Mutação, Design by Contract, Teste Metamórfico

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Assunto 
Tese Estrutural, Teste de Mutação, Design by Contract, Teste Metamórfico 
Descrição do Exercício 
Siga o enunciado abaixo e registre suas respostas em um arquivo único em formato PDF. A 
atividade poderá ser feita em dupla. Inclua o nome dos participantes no início do arquivo. 
IMPORTANTE: INCLUA TUDO QUE FOI SOLICITADO (POR EXEMPLO, O GRAFO, A COMPLEXIDADE DE McCABE, O 
ARRASTO, TODOS OS CÓDIGOS E EVIDÊNCIA DE EXECUÇÂO DOS TESTES) NO RELATÓRIO PDF. 
1) (5,0 pontos) A respeito da aplicação de técnicas de testes estruturais. Considere o código abaixo que realiza uma 
busca binária de forma iterativa. 
public class ServicoPesquisa{ 
 public int pesquisaBinaria (int vet[], int chave) 
 { 
 if ((vet == null) || (vet.length == 0)) 
 return -1; 
 
 int inf = 0; // limite inferior 
 int sup = vet.length-1; // limite superior 
 int meio; 
 while (inf <= sup) 
 { 
 meio = (inf + sup)/2; 
 if (chave == vet[meio]) 
 return meio; 
 if (chave < vet[meio]) 
 sup = meio-1; 
 else 
 inf = meio+1; 
 } 
 return -1; // não encontrado 
 } 
} 
 
a. (2,0 pontos) Elabore o grafo do programa para o método pesquisaBinaria, determine a complexidade de Mc 
Cabe do método e calcule o arrasto do laço contido no método. 
b. (2,0 pontos) Crie casos de teste seguindo a técnica Teste de Caminhos Básicos (explicite os caminhos e a 
associação dos caminhos aos casos). Considerando o teste de laços utilizando o arrasto, assegure que, caso 
possível, seus casos de teste executem o laço com 0, 1 e arrasto + 1 iterações. Expresse seus casos de teste 
em JUnit, complementando o código abaixo. Execute os testes e inclua no relatório o resultado e informações 
sobre a cobertura de linhas de código. 
 
public class ServicoPesquisaTest { 
 private static ServicoPesquisa servico; 
 @BeforeClass 
 public static void setUp() throws Exception{ 
 servico = new ServicoPesquisa(); 
 } 
 @Test 
 public void testPesquisaBinaria() { 
 // seus casos de teste aqui 
 } 
} 
c. (1,0 pontos) Execute testes de mutação sobre os seus testes JUnit e anexe o relatório indicando a cobertura 
de mutantes. 
 
 
2) (3,0 pontos) Sabendo que a pesquisa binária requer que o vetor recebido esteja ordenado e que deve assegurar 
que os valores de retorno possíveis estejam corretos, instrumente o código seguindo os preceitos de Design by 
Contract. Crie métodos na classe ServicoPesquisa de acordo com sua necessidade. Dica: Explore o princípio de 
encapsulamento para permitir a implementação de assertivas de saída efetivas. Não se preocupe com o 
desempenho, assuma que as assertivas sejam desabilitadas em produção. 
a. (1,0 pontos) encapsulamento adequado do método. 
b. (1,0 pontos) assertivas de entrada. 
c. (1,0 pontos) assertivas de saída. 
 
 
3) (2,0 pontos) Acrescente um método na classe ServicoPesquisaTest que realize testes metmórficos utilizando as 
assertivas implementadas no item anterior. O novo método deve ter uma constante que determina o número 
de casos de teste a serem gerados automaticamente. Para cada caso de teste deve: 
a. (1,0 pontos) Ser gerado um um array ordenado de tamanho aleatório de 1 a 1000 com conteúdo 
também aleatório (por exemplo, números inteiros de 1 a 1000 também). 
b. (1,0 pontos) Ser gerado um outro número aleatório que deve ser buscado no array, chamando o 
método pesquisaBinaria para que ele auto-verifique seu método de busca. 
 
IMPORTANTE: INCLUA TUDO QUE FOI SOLICITADO (POR EXEMPLO, O GRAFO, A COMPLEXIDADE DE McCABE, O 
ARRASTO, TODOS OS CÓDIGOS E EVIDÊNCIA DE EXECUÇÂO DOS TESTES) NO RELATÓRIO PDF.

Continue navegando