ferramentas jmockit, allpairs, eclemma, muclipse
TRANSCRIPT
![Page 1: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/1.jpg)
FerramentasJMOCKIT, ALLPAIRS,
ECLEMMA, MUCLIPSE
![Page 2: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/2.jpg)
JMOCKIT
![Page 3: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/3.jpg)
3
Jmockit
• Automatiza a substituição de versões original e mock-up
• Instrumentação ocorre em tempo de execução
![Page 4: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/4.jpg)
4
Como usar?
• Basicamente, uma operação (overloaded):
Mockit.redefineMethods(Class, Class);Mockit.redefineMethods(Class, Object);
Substitui métodos da direita pelos da esquerda
![Page 5: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/5.jpg)
5
Como usar?
• Basicamente, uma operação (overloaded):
Mockit.redefineMethods(Class, Class);Mockit.redefineMethods(Class, Object);
Objeto “Commando” (ver padrão de projetos)
![Page 6: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/6.jpg)
Como usar?
• A execução precisa receber o seguinte parâmetro: -ea -javaagent:"libs\\jmockit.jar“– O agente realiza instrumentação
![Page 7: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/7.jpg)
7
Prós
• Não interfere no código fonte/design
![Page 8: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/8.jpg)
8
Cons
• Erros de instrumentação– Exceção em tempo de execução
• E.g., Mock não é público ao driver– Erro silencioso
• E.g., assinatura de método fonte e destino não casa
Específicos da implementação
![Page 9: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/9.jpg)
9
Instruções
• Baixe o arquivo: http://www.cin.ufpe.br/~damorim/teaching/testing/demos/jmockit-demo.zip
• Descomprima o arquivo• Importe o projeto no Eclipse
– File > Import > Existing Projects Into Workspace
• Rode os testes– Selecione a opção “Run As > ServiceATest”
com botão direito “ServiceATest.launch”,
![Page 10: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/10.jpg)
ALLPAIRS
![Page 11: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/11.jpg)
11
Instruções
• Baixe o arquivo: http://www.cin.ufpe.br/~damorim/teaching/testing/demos/pairs.zip
• Descomprima o arquivo pairs.zip• CD allpairs• Execute na linha de comando (Windows)
– allpairs printing.txt > testcases.txt
![Page 12: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/12.jpg)
ECLEMMA
![Page 13: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/13.jpg)
13
Instruções
• Instale o plugin. Use a URL: http://update.eclemma.org/
• Baixe o arquivo: http://www.cin.ufpe.br/~damorim/teaching/testing/demos/eclemma-demo.zip
• Descomprima o arquivo zip• Importe o projeto associado• Execute os testes usando opção
“Coverage As”
![Page 14: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/14.jpg)
MUCLIPSE
![Page 15: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/15.jpg)
Características importantes
• Separação de código falho do original• Para o teste de mutação
– Interface visual• Preciso visualizar diferenças para construir novos
casos de teste
![Page 16: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/16.jpg)
MuClipse
• Plugin do Eclipse para o MuJava• Seguir passos de configuração em
http://muclipse.sourceforge.net/site– Ver projeto demo no site da disciplina
![Page 17: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/17.jpg)
MuClipse: Dois passos
• Gerar mutantes– Entrada: Caminhos, classe de teste, e operadores
de mutação em script (run configuration)– Saída: lista de mutantes
• Rodar testes e analisar resultados– Entrada: Classe modificada com mutantes e o
teste daquela classe– Saída: Relatório com score de mutação e label
killed ou alive associado a cada mutante
![Page 18: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/18.jpg)
Comentário sobre o MuClipse v1.2
• Reduzir compatibilidade do JDK de 1.6 para 1.5
![Page 19: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/19.jpg)
19
Instruções 1/2
• Instale o plugin. Use a URL: http://muclipse.sourceforge.net/site
• Baixe o arquivo: http://cin.ufpe.br/~damorim/teaching/testing/demos/muclipse-demo.zip
• Descomprima o arquivo zip• Importe o projeto associado
![Page 20: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/20.jpg)
Instruções 2/2
• Gere os mutantes. Execute a configuração “runTraditionalMutants.launch”
• Rode o teste(s). Execute a configuração “runTestsForMutation.launch”
![Page 21: Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE](https://reader036.vdocuments.net/reader036/viewer/2022062818/570638461a28abb8238f2e52/html5/thumbnails/21.jpg)
Exercício
• Tente gerar um score de mutação >50% para a class BST e teste TestBST2– Ver projeto do muclipse no site da disciplina– Lembrar de baixar o plugin