Baixe o app para aproveitar ainda mais
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.
Compartilhar