JUnitPerf é uma extensão do JUnit, um conjunto de decoradores de testes JUnit, que é utilizado para medir o desempenho e a escalabilidade dos
testes referenciados. Criado pela Clarkware Consulting desenvolvedora e mantenedora do JUnitPerf.
Veja a documentação completa em no site oficial do JUnitPerf.
Para saber mais sobre teste unitário com JUnit, veja o meu post anterior e assista os vídeos de Teste Unitário com JUnit..
JUnitPerf oferece classes que permitem construir objetos que recebem testes existentes do JUnit e acrescentam neles avaliação de desempenho. Ele não altera testes existentes. Pode-se ainda rodar os testes sem o JUnitPerf.
Roteiro para execução do JUnitPerf:
- Primeiro é preciso estimar os valores ideais para execução dos testes.
- Escreva testes JUnit para o seu código.
- Execute um profiler para descobrir os gargalos. Utilize os dados obtidos como parâmetros para estabelecer os valores máximos aceitáveis para cada método.
- Escreva testes do JUnit (se não existirem) para os trechos críticos quanto à desempenho.
- Escreva um TimedTest do JUnitPerf para cada teste novo e execute-o. O teste deve falhar. Se passar, não há problema de desempenho com o código.
- Trabalhe no código até que os testes passem.
TimedTest
Recuperar o tempo transcorrido após a execução do teste JUnit. Se o tempo for maior que o permitido então uma exceção AssertionFailedError é provocada (o que faz o teste falhar)
Exemplo: TimedTest simples que espera que o método execute em menos de 2 segundos (2000 milissegundos)
public static Test suite() {
TestSuite suite = new TestSuite();
Test testCase = OperacoesTest.suite();
Test testCase = new OperacoesTest("testSoma");
Test timedTest = new TimedTest(testCase, 2000);
suite.addTest(timedTest);
return suite;
}
LoadTest
Permite simular carga, por exemplo, vários usuários acessando a aplicação ao mesmo tempo. Essencial para descobrir problemas que podem surgir em ambientes multiusuário (por exemplo: problemas de concorrência e integridade de dados usados por vários usuários)
Exemplo: LoadTest simples (executa uma vez por usuário) com 100 usuários simultâneos
public static Test suite() {
TestSuite suite = new TestSuite();
Test test = new ExampleTestCase("testMethod");
Test loadTest = new LoadTest(test, 100);
suite.addTest(loadTest);
return suite;
}
A seguir, assista o vídeo:
Automatização de Testes de Desempenho com JUnitPerf from Edgard Davidson on Vimeo.
O código fonte completo poder ser baixado aqui.
Profissional especialista em engenharia de software e desenvol- vimento de sistemas, professor universitário, coordenador do curso de pós graduação em Engenharia de Software Centrada em Métodos Ágeis ofertado pela UNA, mestrando em Engenharia Elétrica com ênfase em Engenharia de Software, Especialista em Engenharia de Software, Graduado em Sistemas de Informação. Sou sócio da MÉRITA - ENGENHARIA DE SERVIÇOS E SISTEMAS e criei este blog dedicado a assuntos como: desenvolvimento e engenharia de software, opiniões pessoais sobre assuntos pertinentes. Os posts deste blog são escritos sem muito rigor científicos e expressam opiniões exclusivamente minhas
[Novo Post] Automatização de Testes de Desempenho com JUnitPerf – http://edgarddavidson.com/?p=542
via Twitoaster
[Novo Post] Automatização de Testes de Desempenho com JUnitPerf – http://edgarddavidson.com/?p=542
via Twitoaster
@edgarddavidson
via Twitoaster
[...] This post was mentioned on Twitter by Reiny Júnior, Edgard Davidson. Edgard Davidson said: [Novo Post] Automatização de Testes de Desempenho com JUnitPerf – http://bit.ly/9rSoMJ [...]
Olá Edgard, gostaria bastante se pudesse enviar o código fonte destes testes para meu email, estou trabalhando com testes unitários e gostaria de estudar por seu matérial, achei-o muto interessante, esta de parabéns.
enviar para arturpaixao@gmail.com
Grato,
Artur
@Artur. O código fonte está disponível no final do post. Até
Edgar o link esta quebrado, favor verificar.
@Artur. O link já está arrumado. Obrigado por me informar.