Automatização de Testes de Desempenho com JUnitPerf

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:

  1. Primeiro é preciso estimar os valores ideais para execução dos testes.
  2. Escreva testes JUnit para o seu código.
  3. 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.
  4. Escreva testes do JUnit (se não existirem) para os trechos críticos quanto à desempenho.
  5. 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.
  6. 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.

Compartilhe:
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • PDF
  • RSS
  • Twitter

8 Responses to “Automatização de Testes de Desempenho com JUnitPerf”

  1. [Novo Post] Automatização de Testes de Desempenho com JUnitPerf – http://edgarddavidson.com/?p=542
    via Twitoaster

  2. [Novo Post] Automatização de Testes de Desempenho com JUnitPerf – http://edgarddavidson.com/?p=542
    via Twitoaster

  3. [...] 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 [...]

  4. Artur says:

    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

Leave a Reply

Procurar


Edgard Davidson
nova 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

Mérita - Engenharia de Serviços e Sistemas

Curso de Pós Graduação em Engenharia de Software Centrada em Métodos Ágeis

Categorias

Arquivo

Tags

Pagea