/ / JMeter - Só executa um teste subseqüente se a expressão regular do teste anterior pode extrair um determinado valor? - javascript, regex, jmeter

JMeter - Só executa um teste subsequente se a expressão regular do teste anterior puder extrair um determinado valor? - javascript, regex, jmeter

Eu estou executando uma série de testes de webservice emJMeter e eu estávamos querendo saber se há uma maneira de pular um teste se o extrator de expressão regular do teste anterior não pode extrair um valor devido a uma resposta vazia ou algo assim. Eu entendo que eu preciso usar um controlador If, mas eu não consigo descobrir o que devo colocar como condição. A expressão regular do teste anterior é a seguinte:

Reference Name: alarmid
Regular Expression: alarmStatus="raised" [^>]+ alarmId="(.+?)"

Portanto, se ele não puder encontrar um ID de alarme com um status "elevado", quero que o próximo teste seja ignorado porque $ {alarmid} é um argumento para ele e será um erro com um 500. Outras idéias? Agradecemos antecipadamente!

Respostas:

2 para resposta № 1

Você pode tentar usar uma combinação de Asserção de Resposta e Se controlador com condição de javascript: ${JMeterThread.last_sample_ok} (check if last sample succeeded).

Esquema como abaixo:

Amostrador 1
Asserção de Resposta - verificar se alarmId com alarmStatus = "raised" está presente em resposta; Regular Expression Extractor - seu extrator para obter alarmId;
Se controlador
Condição = $ {JMeterThread.last_sample_ok} Amostrador 2 - amostrador que recebe como argumento extraído alarmId;

A Afirmação de Resposta definirá o status do Sampler 1 para "failed" se nenhum alarmId correspondente for encontrado, a condição de If Controller será avaliada como "false", o Sampler 2 será ignorado.

Melhor maneira parece ser algo como:

  1. definir valor para o campo "Valor padrão" de Extrator de Expressão Regular: Default Value: NOT_FOUND (este valor será definido se a expressão regular não corresponder);
  2. use a comparação javascript de alarmId var com o valor padrão como condição de If Controller: "${alarmId}"!="NOT_FOUND" - se não for igual ao Sampler 2 é executado.

Nesse caso, você não precisa usar a asserção de resposta.


0 para resposta № 2

Você pode usar variáveis. Salve um resultado de sua expressão regular em uma variável e use essa variável em IF CONTROLLER.

A sintaxe para variáveis ​​é

${myVariable}

e isso pode ser usado em qualquer lugar no JMeter


0 para resposta № 3

No seu IF Controller, use:

"${alarmId}"  == "raised"