ser gerados para uma determinada conexao, pelo conjunto de operadores de Mu- ta<;ao de Interface proposto, e proporcional ao mimero de variaveis do programa vezes 0mimero de referencias a essas variaveis na unidade chamada e ao mimero de parametros formais dessa mesma unidade.
o
primeiro resultado e importante porque aponta para os aspectos comple- mentares - ja ressaltados no nivel de unidade - entre criterios de fiuxo de dados e criterios baseados em muta<;ao e sugere a utiliza<;ao conjunta desses criterios na atividade de teste tanto no nivel de unidade quanto no nivel de integra<;ao. As- sim, a elabora<;ao de uma abordagem sistematica para utiliza<;ao desses criterios e importante e permite que se defina urn estrategia de teste desde 0nive1 de uni- dade ate 0 nivel de integra<;ao, utilizando criterios de fiuxo de dados e baseados em muta<;ao. A segunda analise mostra que, embora os pontos de aplica<;ao dos operadores de Muta<;ao de Interface sejam limit ados a pontos re1acionados com urn conexao, 0 numero de mutantes pode ser elevado, 0 que revel a a necessi- dade de adotarem-se abordagens que restrinjam 0 numero de mutantes para que a Muta<;ao de Interface possa ser aplicada dentro de parametros aceitaveis de custo. Para isso foram definidos criterios de Muta<;ao de Interface alternativos que resgatam, no nive1 interprocedimental, abordagens de redu<;ao dos mutantes ja utilizadas com sucesso no nivel de unidade. Uma avalia<;aodessas abordagensCapitulo
4
FROmAM(Dvt:
Defini<;ao e
1m plementa<;ao
A aplica<;ao de urn criterio de teste sem 0 suporte de urna ferrarnenta e urna
atividade irnprodutiva e propensa a erros. A analise do prograrna em teste, a gera<;ao de requisitos a serern satisfeitos e a avalia<;ao de conjuntos de teste de acordo com esses requisitos sao, em geral, tarefas demasiado complexas para serern realizadas rnanualrnente.
Este capitulo des creve a ferramenta de teste
T-R.fJTEU;'v1(I!vt,
que suporta a apli- cac;iio do criterio Mutac;ao de Interface. I\ela foram irnplernentados os operadores de muta<;ao descritos no Capitulo :3. No contexto deste trabalho tal ferramenta rcprescnta contribuic;ao irnportante, pois sem ela seria impossivel a realiza<;ao de experirnentos ernpiricos para avaliar a aplicac;ao do criterio proposto. como os experimentos descritos no Capitulo:S. Atualmente. a ferramenta ap6ia 0 testede programas escritos na linguagem C. Pode ser executada sobre os sistemas operacionais SunOs 4 ou
:s
e sobre Linux. A interface grafica disponivel para ela foi irnplernentada utilizando-se os programas T cl e Tk[76],
exigindo assim UInarnbiente grafico que os suporte.
Os requisitos fundamentais de qualquer ferramenta que ap6ie a aplicac;7w de urn criterio de teste saG que. dado um programa P a ser testado e urn conj unto de teste T. essa ferramenta determine automaticamente os requisitos de teste a serern satisfeitos para
P
c avalie a adequac;ao deT
frente a esses requisitos.No caso do teste de muta<;ao, essas duas tarefas correspondem a gera<;ao dos mutantes de Pea execu<;aode cada mutante e compara<;ao dos resultados com 0 do programa original. Adicionalmente, outras caracteristicas sao desejadas de uma ferramenta desse tipo. Entre elas, pode-se destacar: 1) facilidades para armazenar e manipular casos de teste; e 2) amilises e relat6rios sobre 0 comportamento dos casos de teste frente aos requisitos. No caso especffico do teste baseado em muta<;oes, e tambem de suma imporbincia que a ferramenta de teste viabilize a aplica<;aode criterios alternativos, permitindo que a gera<;aode mutantes seja feita de maneira flexivel, de acordo com uma estrategia determinada pelo testador.
Inicialmente, sao apresentadas as principais caracterfsticas funcionais da fer- ramenta. A 'FROJll)Iv1fJJv1. e composta por diversos programas que, executados em conjunto, permitem ao testador aplicar Muta<;ao de Interface no teste de urn programa. Isso permite que a atividade de teste possa ser desenvolvida de ma- neira "batch" atraves da execu<;ao de "scripts" que descrevem os passos a serem seguidos. Alem dessa forma de utiliza<;ao, a ferramenta possui uma interface inte- rativa, grafica, que0testador pode tambem utilizar para conduzir 0teste. As duas formas de interface sao descritas neste capitulo. A segunda parte do capitulo apre- senta algumas considera<;oes importantes sobre a implementa<;ao da ferramenta.
E
dada particular enfase as abordagens utilizadas na aplica<;aodos operadores de muta<;ao e constru<;ao e execu<;ao dos programas mutantes. Descreve-se tambem como informa<;oessimples sobre 0fluxo de execu<;aodos casos de teste podem ser utilizadas para acelerar a execu<;aodos mutantes.Basicamente, a ferramenta 'FROJll)Iv1fJJv1. oferece ao testador recursos para, apli- cando-se 0 criterio Muta<;ao de Interface, avaliar-se a adequa<;ao de urn conjunto de teste T para urn determinado programa P. Baseado no resultado dessa ativi- dade, 0 testador deve ser capaz de melhorar a qualidade de T procurando satis- fazer os requisitos nao satisfeitos, ate obter urn conjunto MI-adequado. Assim, a ferramenta pode ser usada como instrumento de avalia<;aobem como de sele<;ao de casos de teste. Com esse objetivo, as operac;oes minimas que devem ser sup or- tadas pela FROWJ/vifJJv1. saG:
A
~(INt
suporta essas e outras opera<;oes, algumas de maneira com- pletamente automatica - como a execu<;ao de mutantes - e outras atraves da interven<;:ao do testador - como a analise de equivalencia de mutantes. Diver- sas caracteristicas foram tambem adicionadasa
ferramenta de forma a facilitar a execu<;:ao de experimentos. E 0 caso, pOI' exemplo, de permitir que cada mutanteseja cxecutado com todos os casos de teste, independentemente de estar vivo ou morto. Esse nao e 0 comportamento normal mas permite que dados sejam colhi-
dos, pOI' cxemplo, sobre a eficacia dos operadores de muta<;ao e que se determinem estrategias de minimiza<;ao do conjunto de teste [38].
o
teste usando-se a~(INt
e dirigido pOI' sessoesde
teste. 0 estado de uma sessao de teste (' caracterizado pOl' uma base de dados identificada pOI' um nome e composta. basicamente, pOI' dados sobre os casos de teste sendo utilizados. dados sobre os mutantes sendo utilizados e alguns arquivos intermediarios que descrevem 0 program a sendo testado. Uma sessao de teste e constitufda de umasequencia de opcra<;:oes realizadas sobre essa base de dados1 atraves de chamadas
aos programas que compoem a ferramenta. Dessa forma, pode-se iniciar uma sessao de teste - atraves da cria<;:ao da base de teste - executar diversas opera<;:oes. interromper a sessao e retoma-la posteriormente do ponto onde foi interrompida.
As chamadas aos programas da
rROW-Alvt/l]'v1
podem ser feitas de duas manei- ras distintas. A primeirae
diretamente na linha de comando da shell do sistemcl au em scripts. :\ segundae
de maneira transparente para 0 testador. atraves deuma interface grafica que cuida de invocar os pragramas. Essas duas farmas de se canduzir uma sessaa de teste sao descritas nas se<;:oes seguintes.
!\ interface grafica da rROlfUA1.(I1Vf permite aa testadar sem experiencia exploraI e aprcndcr os conceitos sabre 0 teste baseado em muta<;:ao. ~Iuta<;:ao de lntcrfct-
ce e sobre a prc>pria fcrramenta. Ela tambem fornece melhorcs rccursos para se visualizar a canjunto de casas de teste e os Il1utantes. facilitanda dessa maneinl algumas t arcfas CalllO a idcntifica<;:ao de Il1utantes equivalentes. Uma visao ([('- ral das operae,:oes que podcm scr realizadas atraves cia interface (' mostrada na Figura 2"i.
" 'ROTEUM!IM - PROgram TEsting Using lIIutants/lnterlace Mutation - V.1.1 C £raqraIlT~'.it IestCasc ~tants !!ep(Jrts PrQPerties ~tatus Q-lit
Deleto Effective Itport M1n1l120 ~t.nts I Gene rate Vi ew
Equi yol ents Execute
Sol oct •.
o
primeiro passo necessario para que se conduza urn sessao de testee
iden- tificar qual base de teste deseja-se manipular. Caso trate-se de uma nova base de teste (que ainda nao foi iniciada). deve-se entao cria-la. Para isso 0 testadorutiliza a opera<;ao Program Test/Newe deve fornecer algumas informa<;oes, entre elas urn nome que identificara a base de teste. A Figura 26 mostra quais saG as informa<;oes requeridas pela ferramenta. Se trata-se de uma base de teste que ja existe, 0 testador deve apenas identificar 0 nome da base de teste a ser utilizada.
Na opera<;ao de cria<;ao, toda estrutura necessaria para a condu<;ao da sessao de teste
e
inicializada, ou seja, criam-se os arquivos intermediarios, cria-se uma base de casos de teste vazia e cria-se uma base de mutantes tambem vazia.@j
Create New Program Test Directory: l/home/elisa/testeProgram Test Name: [myprog-1
~=================~
Source Program: lmyprog. c
~===============~
Executable Program: [myprog
==================::::
Compilation command:lgcc myprog.c -0 myprog
Type: ¢ test
<>
research [ Conti rrnI[
CancelI
Uma vez identificada a base de teste a ser utilizada na sessao. opera<;oes podem scr realizadas, por exemplo, para construir 0 conjunto de teste a ser avaliado. A
primeira dessas opera<;oes permite que 0 testador adicione interativamente casos de teste ao conjunto. Com essa funcionalidade. ativada atraves da opera<;ao Test