ELEK BOYUTU (mesh)
6 DEĞERLENDĠRME VE ÖNERĠLER
Baseando-se em um estudo pr´evio de Offutt et al. (1996) que relata a determinac¸˜ao de um conjunto essencial de operadores de mutac¸˜ao para reduc¸˜ao de custo em teste de mutac¸˜ao, Barbosa investiga abordagens para determinar um conjunto essencial de operadores de mutac¸˜ao para linguagem C, e para isso foi definida uma diretriz para selec¸˜ao de um conjunto essencial de operadores de mutac¸˜ao. Barbosa ainda aplicou essa diretriz nos operadores de mutac¸˜ao da ferramenta Proteum, e obteve um conjunto de 10 operadores de mutac¸˜ao que alcanc¸avam um escore de mutac¸˜ao de aproximadamente 99.5% e com 65% de m´edia na reduc¸˜ao dos custos da aplicac¸˜ao.
Em seu trabalho, Barbosa fez uma comparac¸˜ao entre os conjuntos de operadores essenci- ais determinados por Offutt et al. e dos operadores determinados por Wong et al. Apesar de os resultados alcanc¸ados por Wong serem um pouco melhores do que o conjunto determinado pela abordagem de Offutt para os 27 programas estavam entre os mais relevantes conflitando com N-seletiva mutac¸˜ao. Al´em de os operadores essenciais determinados eram completamente diferentes para cada conjuntos. Esses resultados motivaram a criac¸˜ao de uma diretriz para determinac¸˜ao de um conjunto de operadores de essenciais, esse processo ´e denominado Proce- dimento Essencial (do inglˆes Sufficient Procedure).
A relac¸˜ao de inclus˜ao definida por (RAPPS; J.WEYUKER, 1985) ´e um dos principais me- canismos para fazer a comparac¸˜ao entre os crit´erios de teste. Considerando C1 e C2 como crit´erios de teste, diz-se ent˜ao que C1 inclui C2, se para todo conjunto teste T1 que ´e adequado a C1, ´e tamb´em adequado a C2, e se para alguns T2 ´e adequado a C2 mas n˜ao ´e adequado a C1, e se para qualquer conjunto teste T for a adequado a C1 e tamb´em for adequado para C2 e vice-versa, ent˜ao diz-se que o C1 e C2 s˜ao equivalentes.
Considerando esse conceito definido por Rapps, Barbosa definiu empiricamente um con- ceito adequado denominado relac¸˜ao EmpSubsumes, o qual assume que escores de mutac¸˜ao que possuem valores pr´oximo a 1.0 podem ser considerados como satisfat´orios, pois segundo Offutt n˜ao h´a evidˆencias claras de que 100% de cobertura consiga oferecer um teste melhor do que um com uma cobertura com menor percentagem. Utilizando ent˜ao como referˆencia a relac¸˜ao de inclus˜ao definida por Rapps, ´e determinado empiricamente pelo testador um novo escore de mutac¸˜ao ms*, e ent˜ao s˜ao definidas as propriedades que para um crit´erio C e um teste T, diz-se
3.4 Estrat´egias Baseadas em Operadores Essenciais 55
que T ´e empiricamente adequado a C se T obtˆem um escore de mutac¸˜ao igual ou superior ao que fora definido pelo testador (ms*). Se para cada conjunto de teste T1 ´e empiricamente ade- quado a C1 e T1 ´e tamb´em empiricamente adequado a C2, e algum teste T2 ´e empiricamente adequado a C2, mas n˜ao a C1, ent˜ao diz-se que C1 EmpSubsumes C2, e o T1 ´e empiricamente adequado a C1 e a C2 e vice-versa, ent˜ao diz-se que C1 e C2 s˜ao empiricamente equivalentes.
A determinac¸˜ao de um conjunto essencial de operadores de mutac¸˜ao consiste na selec¸˜ao de um subconjunto de operadores, os quais produzem mutantes e que quando aplicados em um conjunto de teste T, obtˆem um escore de mutac¸˜ao igual ou pr´oximo ao escore de mutac¸˜ao alcanc¸ados por todos os mutantes gerados quando aplicados ao mesmo conjunto de teste T.
Buscando definir um subconjunto de operadores o estudo estabelece um conjunto de dire- trizes, denominado Procedimento Essencial (do inglˆes, Sufficient procedure), que visa ajudar a selecionar os melhores operadores de mutac¸˜ao para compor esse subconjunto essencial. Os passos para realizar a selec¸˜ao de operadores essenciais s˜ao descritos a seguir:
• considerar operadores de mutac¸˜ao que determinam um alto escore de mutac¸˜ao: se- lecionar os operadores que podem ser determinantes no aumento do escore de mutac¸˜ao.
• considerar um operador de cada classe de mutac¸˜ao: cada classe de mutac¸˜ao refere-se a um tipo de erro espec´ıfico de uma determinada parte do programa, ´e prefer´ıvel a escolha do operador mais representativo de cada classe.
• avaliar a inclus˜ao emp´ırica entre os operadores: os operadores de mutac¸˜ao que s˜ao empiricamente inclu´ıdos por outros operadores do conjunto essencial que elevam o custo da aplicac¸˜ao devem ser removidos.
• estabelecer uma estrat´egia incremental: estabelecer uma estrat´egia incremental entre os operadores dos conjuntos essenciais, baseada no custo aplicac¸˜ao e os requisitos de teste que cada classe determina. Aplicar primeiro os operadores que s˜ao mais relevantes para os requisitos m´ınimos de teste.
• considerar os operadores que oferecem um incremento no escore de mutac¸˜ao: o incremento de 1% no escore de mutac¸˜ao representa cerca de 5% dos mutantes que s˜ao realmente significantes. Dessa forma um operador que n˜ao foi selecionado e que pode aumentar o escore de mutac¸˜ao, deve ser analisado.
3.4 Estrat´egias Baseadas em Operadores Essenciais 56
mais dif´ıceis de serem satisfeitos pelos casos de testes adequados a outros operadores, podem contribuir pra aumentar o escore de mutac¸˜ao do conjunto essencial final.
Ap´os a determinac¸˜ao desse conjunto de diretrizes para selec¸˜ao de operadores essenciais, Barbosa aplicou o Procedimento Essencial em dois experimentos para determinar um conjunto essencial de operadores para linguagem C. Para esses experimentos foi utilizado a ferramenta de teste Proteum para apoiar o teste de mutac¸˜ao nessa linguagem.
Experimento 1: Foi utilizado um conjunto de 27 programas de um editor simples de texto, esses programas possuem de 11 a 71 linhas execut´aveis, gerando cada cerca de 119 a 1631 mu- tantes. Para esse conjunto de 27 programas, foram aplicados 39 dos 71 operadores de mutac¸˜ao, sendo 10 operadores de declarac¸˜ao, 21 de operadores, 5 de vari´aveis e 3 de constantes.
Experimento 2: J´a no experimento 2, foi utilizado um conjunto de cinco programas uti- lit´arios Unix, cada programa possu´ıa cerca de 76 a 119 linhas execut´aveis, cada um gerando de 1619 a 4332 mutantes. Ap´os a aplicac¸˜ao das diretrizes foram escolhidos 56 operadores, sendo 14 de declarac¸˜ao, 33 de operadores, 6 de vari´aveis e 3 de constantes.
Ap´os a aplicac¸˜ao do processo, os resultados relatados no estudo mostram que foi poss´ıvel atingir uma significativa reduc¸˜ao do n´umero de operadores de mutac¸˜ao da ferramenta Pro-
teum, os conjuntos de operadores essenciais determinados no estudo alcanc¸aram alto grau de adequac¸˜ao, os quais atingiram escores de mutac¸˜ao acima de 99,5%. Considerando o custo da aplicac¸˜ao em termos de n´umero de mutantes gerados, a reduc¸˜ao atingiu uma m´edia de cerca de 65%. Em ambos experimentos, levando em considerac¸˜ao o escore de mutac¸˜ao, reduc¸˜ao de custo, resistˆencia e distribuic¸˜ao dos escores, foi poss´ıvel observar que o procedimento proposto por Barbosa, representa uma boa escolha em relac¸˜ao a outras abordagens de reduc¸˜ao de custo em teste de mutac¸˜ao.