• Nenhum resultado encontrado

As técnicas de detecção de defeitos foram basicamente as mesmas do experimento de Basili & Selby [BAS87] e Kamsties & Lott [KAM95], exceção feita à técnica Teste Incremental, conforme mencionado na Seção 4.1. A seguir, apresentam-se as técnicas utilizadas nesta replicação do experimento:

Leitura de Código: No 1º passo, indivíduos recebem o código fonte impresso, mas não têm acesso à especificação do programa. Eles são instruídos a lerem o código fonte e escreverem suas próprias especificações para o programa, baseados na técnica de leitura Stepwise Abstraction [LIN79], descrita detalhadamente no Capítulo 2. Os indivíduos identificam subprogramas no código fonte e escrevem uma especificação para esses subprogramas e combinam essas especificações, repetidamente, em uma especificação macro até capturarem o comportamento completo do programa. Após escreverem suas próprias especificações, os indivíduos recebem a especificação original. Para efeitos de comparação Leitura de Código não tem o 2º passo, que é o passo de execução dos casos de teste. No 3º passo, indivíduos comparam a especificação original com sua própria especificação em busca de inconsistências, observando o comportamento esperado e especificado. O 4º passo consiste em isolar os defeitos que produziram as inconsistências observadas. Nenhuma técnica especial para isolar defeitos foi especificada.

Teste Funcional: No 1º passo, indivíduos recebem a especificação, mas não têm acesso ao código fonte do programa. Eles derivam os casos de teste utilizando os critérios particionamento em classes de equivalência e análise do valor limite da técnica funcional. Os

critérios estão descritos detalhadamente no Capítulo 2. No 2º passo, os indivíduos recebem uma versão executável do programa e executam seus casos de teste no computador. Ao terminar a execução dos casos de teste os indivíduos imprimem seus resultados e encerram a seção de teste no computador. Com a especificação em mãos e os resultados da seção de teste os indivíduos verificam a existência de falhas, caracterizando assim o 3º passo. Após registrar as eventuais falhas, os indivíduos recebem o código fonte impresso. No 4º passo, os indivíduos utilizam o código fonte para isolar os defeitos que causaram as falhas observadas. Nenhuma técnica especial para isolar defeitos foi especificada.

Teste Incremental: Envolve a aplicação dos critérios: Todos-Nós e Todos-Arcos que são

critérios baseados em fluxo de controle, Todos-Usos e Todos-Potenciais-Usos que são baseados em fluxo de dados, e o critério Análise de Mutantes. A cada aplicação de um determinado critério de teste um conjunto adequado de casos de teste é definido. Esse conjunto adequado de casos de teste é utilizado para descobrir possíveis falhas, e posteriormente é utilizado pelo critério seguinte da estratégia incremental como um conjunto inicial de casos de teste. O conjunto de casos de teste vai sendo melhorado por meio de um processo evolutivo que vai do critério todos-nós até o critério análise de mutantes.

1º passo: Os indivíduos recebem o código fonte e são instruídos a construírem casos de

teste até alcançarem 100% de cobertura do critério Todos-Nós da técnica estrutural. Posteriormente, os indivíduos por meio de uma versão instrumentada do programa executam seus casos de teste e verificam os valores de cobertura obtidos. Os indivíduos constroem casos de teste adicionais até alcançarem 100% de cobertura para o critério ou até acreditarem que não é possível alcançar cobertura melhor devido aos elementos não executáveis, ou seja, aqueles elementos cujo não existe um dado de entrada que o execute. Ao terminar a execução dos casos de teste, os indivíduos com a especificação em mãos e os resultados da seção de teste verificam a existência de falhas. Após registrar as eventuais falhas, os indivíduos utilizam o código fonte para isolar defeitos que causaram as falhas observadas. Nenhuma técnica especial para isolar defeitos foi especificada. Os indivíduos analisam a cobertura do conjunto de casos de teste Todos- Nos adequado com relação aos critérios Todos-Arcos, Todos-Usos e Todos-Potenciais- Usos.

2o passo: Os indivíduos são instruídos a construírem casos de teste até alcançarem 100%

de cobertura do critério Todos-Arcos. A seqüência desse passo é a mesma do 1º passo, exceção feita à fase de analisar a cobertura do conjunto de casos de teste Todos-Arcos adequado. Neste caso a análise é realizada com relação aos critérios Todos-Usos e Todos- Potenciais-Usos;

CAPÍTULO 4 – CÓDIGO FONTES: REPLICAÇÃO DE EXPERIMENTO 54

3º passo: Os indivíduos são instruídos a construírem casos de teste até alcançarem 100%

de cobertura do critério Todos-Usos. A seqüência desse passo é similar ao 1º passo, exceção feita: ao processo de marcação das associações não executáveis, ou seja, aquelas associações cujo não existe um dado de entrada que as execute; e a fase de analisar a cobertura do conjunto de casos de teste Todos-Usos adequado. Neste caso a análise é realizada com relação ao critério Todos-Potenciais-Usos;

4o passo: Os indivíduos são instruídos a construírem casos de teste até alcançarem 100%

de cobertura do critério Todos-Potenciais-Usos. A seqüência desse passo é a mesma do 3º passo, exceção feita à fase de analisar a cobertura do conjunto de casos de teste Todos- Potenciais-Usos adequado. Neste caso a análise é realizada com relação ao critério Análise de Mutantes;

Os 4 passos acima devem ser realizados em no máximo 6 horas. Quando os indivíduos completarem 04h30min receberão os elementos e associações não executáveis.

5o passo: Os indivíduos são instruídos a iniciarem o 5º passo utilizando o conjunto de

casos de teste gerado durante os 4 passo anteriores e construírem casos de teste até alcançarem 100% de cobertura do critério Análise de Mutantes. Posteriormente, os indivíduos por meio de uma versão instrumentada do programa executam seus casos de teste e verificam os valores de cobertura obtidos. Os indivíduos devem construir casos de teste adicionais até alcançarem 100% de cobertura, que significa ter que determinar os mutantes equivalentes, ou seja, aqueles programas cuja alteração sintática não altera o resultado se comparado ao programa original. Ao terminar a execução dos casos de teste, os indivíduos com a especificação em mãos e os resultados da seção de teste verificam a existência de falhas. Após registrar as eventuais falhas, os indivíduos utilizam o código fonte para isolar defeitos que causaram as falhas observadas. Nenhuma técnica especial para isolar defeitos foi especificada. O 5º passo deve ser realizados em no máximo 6 horas. Quando os indivíduos completarem 04h30min receberão os mutantes equivalentes. Nos 4 primeiros passos a ferramenta Poke-Tool (Potential Uses Criteria Tool for Program Testing) foi utilizada [CHA91]. No 5º passo, a ferramenta Proteum foi utilizada [DEL93].

Documentos relacionados