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:
O código fonte completo poder ser baixado aqui.




