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 № 1Você 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:
- 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); - 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"