Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE JMOCKIT Jmockit • Automatiza a substituição de versões original e mock-up • Instrumentação ocorre em tempo de execução 3 Como usar? • Basicamente, uma operação (overloaded): Mockit.redefineMethods(Class, Class); Mockit.redefineMethods(Class, Object); Substitui métodos da direita pelos da esquerda 4 Como usar? • Basicamente, uma operação (overloaded): Mockit.redefineMethods(Class, Class); Mockit.redefineMethods(Class, Object); Objeto “Commando” (ver padrão de projetos) 5 Como usar? • A execução precisa receber o seguinte parâmetro: -ea -javaagent:"libs\\jmockit.jar“ – O agente realiza instrumentação Prós • Não interfere no código fonte/design 7 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 8 Instruções • Baixe o arquivo: http://www.cin.ufpe.br/~damorim/teaching/t esting/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”, 9 ALLPAIRS Instruções • Baixe o arquivo: http://www.cin.ufpe.br/~damorim/teaching/t esting/demos/pairs.zip • Descomprima o arquivo pairs.zip • CD allpairs • Execute na linha de comando (Windows) – allpairs printing.txt > testcases.txt 11 ECLEMMA Instruções • Instale o plugin. Use a URL: http://update.eclemma.org/ • Baixe o arquivo: http://www.cin.ufpe.br/~damorim/teaching/t esting/demos/eclemma-demo.zip • Descomprima o arquivo zip • Importe o projeto associado • Execute os testes usando opção “Coverage As” 13 MUCLIPSE 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 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 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 Comentário sobre o MuClipse v1.2 • Reduzir compatibilidade do JDK de 1.6 para 1.5 Instruções 1/2 • Instale o plugin. Use a URL: http://muclipse.sourceforge.net/site • Baixe o arquivo: http://cin.ufpe.br/~damorim/teaching/testi ng/demos/muclipse-demo.zip • Descomprima o arquivo zip • Importe o projeto associado 19 Instruções 2/2 • Gere os mutantes. Execute a configuração “runTraditionalMutants.launch” • Rode o teste(s). Execute a configuração “runTestsForMutation.launch” 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