27. Tutorial do Amostrador JUnit ¶
Este tutorial tenta explicar o design básico, a funcionalidade e o uso do novo JUnit Sampler for JMeter. O amostrador foi introduzido na versão 2.1.2 do JMeter. As versões anteriores não têm o sampler.
27.1 Projeto ¶
A implementação atual suporta convenções e extensões JUnit padrão, como oneTimeSetUp e oneTimeTearDown . Outros recursos podem ser adicionados mediante solicitação. O amostrador funciona como o JavaSampler com algumas diferenças.
- Em vez de usar a interface de teste do JMeter, ele verifica os arquivos jar em busca de classes que estendem a classe TestCase do JUnit . Isso significa qualquer classe ou subclasse.
- Os arquivos jar de teste JUnit são copiados para jmeter/lib/junit em vez de jmeter/lib
- O amostrador JUnit não usa pares de nome/valor para configuração. O amostrador assume que
setUp e tearDown configurarão o teste corretamente.
Nota: os métodos setUp e tearDown devem ser declarados como public , para que o JMeter possa usá-los.
- O amostrador mede o tempo decorrido apenas para o método de teste e não inclui setUp e tearDown .
- Cada vez que o método de teste é chamado, o JMeter passará o resultado para os ouvintes.
- O suporte para oneTimeSetUp e oneTimeTearDown é feito como um método. Como o JMeter é multi-thread, não podemos chamar oneTimeSetUp / oneTimeTearDown da mesma forma que o maven o faz.
- O amostrador relata exceções inesperadas como erros.
27.2 Funcionalidade ¶
Aqui está uma descrição da funcionalidade.
- Nome
- nome para a amostra. Este é o mesmo que todos os amostradores JMeter.
- Filtro de pacote
- fornece uma maneira de filtrar as classes pelo nome do pacote.
- Nome da classe
- o nome da classe a ser testada. O sampler irá varrer os arquivos jar em jmeter/lib/ext e jmeter/lib/junit para classes que estendem o TestCase do JUnit .
- Cadeia Construtora
- uma string para passar para o construtor de strings da classe de teste.
- Método de teste
- o nome do método a testar no amostrador.
- Mensagem de sucesso
- uma mensagem descritiva indicando o que significa sucesso.
- Código de sucesso
- um código exclusivo indicando que o teste foi bem-sucedido.
- Mensagem de falha
- uma mensagem descritiva indicando o que significa falha.
- Código de falha
- um código único indicando que o teste falhou
- Mensagem de erro
- uma descrição para erros
- Erro de código
- algum código para erros. Não precisa ser único
- Não chame setUp e tearDown
- defina o amostrador para não chamar setUp e tearDown . Por padrão, setUp e
tearDown devem ser chamados. Não chamar esses métodos pode afetar o teste e torná-lo impreciso. Esta opção deve ser usada com cautela.
Se o método selecionado for oneTimeSetUp ou oneTimeTearDown , esta opção deve ser marcada.
- Anexar erro de declaração
- Por padrão, o amostrador não anexará as falhas de declaração à mensagem de falha. Para ver a mensagem na árvore de resultados, marque a opção.
- Anexar exceção de tempo de execução
- Por padrão, o amostrador não anexará as exceções à mensagem de falha. Para ver o stacktrace, marque a opção
A implementação atual do amostrador tentará criar uma instância usando primeiro o construtor de string. Se a classe de teste não declarar um construtor de string, o amostrador procurará um construtor vazio. Exemplo abaixo:
classe pública meuTestCase { public myTestCase() {} }Construtor de strings:
classe pública meuTestCase { public myTestCase(String texto) { super(texto); } }
Por padrão, o JMeter fornecerá alguns valores padrão para o código e a mensagem de sucesso/falha. Os usuários devem definir um conjunto exclusivo de códigos de sucesso e falha e usá-los uniformemente em todos os testes.
27.3 Uso ¶
Aqui está um pequeno passo-a-passo.
- Escreva seu teste JUnit e jar as classes
- Copie e cole os arquivos jar no diretório jmeter/lib/ junit
- Iniciar JMeter
- Selecione o plano de teste
- Clique com o botão direito do mouse em
- Selecionar grupo de tópicos
- Clique com o botão direito em
- Digite meu teste de unidade no nome
- Insira o pacote do seu teste JUnit
- Selecione a turma que deseja testar
- Selecione um método para testar
- Insira o teste bem-sucedido na mensagem de sucesso
- Digite 1000 no código de sucesso
- Digite o teste falhou na mensagem de falha
- Digite 0001 no código de falha
- Selecione o grupo de tópicos
- Clique com o botão direito em
Um benefício do amostrador JUnit é que ele permite que o usuário selecione qualquer método de uma variedade de testes de unidade para criar um plano de teste. Isso deve reduzir a quantidade de código que um usuário precisa escrever para criar uma variedade de cenários de teste. A partir de um conjunto básico de métodos de teste, diferentes sequências e testes podem ser criados usando a GUI do JMeter.
Por exemplo:
Plano de teste 1
TestCase1.testImportCustomer TestCase2.testUpdateRandomCustomer TestCase1.testSelect100 TestCase2.testUpdateOrder TestCase1.testSelect1000
TestPlan2
TestCase1.testImportCustomer TestCase1.testSelect100 TestCase1.testSelect1000 TestCase2.testAdd100Clientes
27.4 Diretrizes Gerais ¶
Aqui estão algumas diretrizes gerais para escrever testes JUnit para que funcionem bem com o JMeter. Como o JMeter é executado em vários segmentos, é importante manter algumas coisas em mente.
- Escreva os métodos setUp e tearDown para que sejam thread-safe. Isso geralmente significa evitar o uso de membros estáticos.
- Faça dos métodos de teste unidades de trabalho discretas e não longas sequências de ações. Ao manter o método de teste em uma operação discreta, fica mais fácil combinar métodos de teste para criar novos planos de teste.
- Evite fazer com que os métodos de teste dependam uns dos outros. Como o JMeter permite o sequenciamento arbitrário de métodos de teste, o comportamento do tempo de execução é diferente do comportamento padrão do JUnit.
- Se um método de teste for configurável, tenha cuidado com o local onde as propriedades são armazenadas. A leitura das propriedades do arquivo Jar é recomendada.
- Cada amostrador cria uma instância da classe de teste, portanto, escreva seu teste para que a configuração ocorra em oneTimeSetUp e oneTimeTearDown .
- Se você selecionar uma classe e nenhum método aparecer, significa que o amostrador teve um problema ao criar uma instância da classe de teste. A melhor maneira de depurar isso é adicionar algum System.out ao seu construtor de classe e ver o que está acontecendo.