JMeter как не ошибиться 500 внутренних ошибок сервера

Я использую JMeter в качестве инструмента модульного тестирования в параметризованных вызовах, где я ожидаю, что некоторые из ответов будут 500 внутренних ошибок сервера. Я использую утверждения BeanShell для проверки ответов.

Я хочу, чтобы некоторые из 500 внутренних ошибок сервера не были отмечены как ошибки, если ответ содержит указанный текст. Все 500 ошибок сервера помечены как ошибки. Возможно ли изменить поведение?

Ниже приведена выдержка из BeanShell Утверждение.

if (ResponseCode.equals("500")) {
    Failure = false;
    String respData = new String(ResponseData);

    if (! respData.contains("specific Text")) {
        Failure = true;
        FailureMessage = "500 Internal Server Error:  Unexpected Response.   " + 
            "Response Message: " + respData;
    }
}  

спасибо и с уважением

4 ответов


UPD: пожалуйста, найдите самое простое и "родное" Решение ниже:


в случае, если вы хотите сделать некоторые сложные вещи в коде, используйте следующий подход.

изменить SampleResult чтобы изменить статус с "FAIL" на "PASS", если код 500 от вашего JSR223 утверждение или использовать JSR223 PostProcessor вместо этого-они все имеют доступ к объекту SampleResult.

1. JSR223 утверждение

if (ResponseCode.equals("500") == true) { 
    SampleResult.setResponseOK();  

    /* the same is 
    SampleResult.setSuccessful(true);
    SampleResult.setResponseCodeOK();
    SampleResult.setResponseMessageOK();
    */
}

2. JSR223 PostProcessor
Использовать prev вместо этого-для доступа к объекту SampleResult сэмплера, к которому подключен один постпроцессор:

if (prev.getResponseCode().equals("500") == true) { 
    prev.setResponseOK();  

    /* the same is 
    prev.setSuccessful(true);
    prev.setResponseCodeOK();
    prev.setResponseMessageOK();
    */
}

другое возможное решение-использовать Утверждение, Ответ с флажком "игнорировать статус", добавленным в ваш сэмплер:

игнорировать статус
Инструктирует JMeter установить состояние на успех изначально.

общий успех выборки определяется путем объединения результат утверждения с существующим статусом ответа. Когда Установлен флажок игнорировать состояние, состояние ответа принудительно успешно перед оценкой утверждения.

HTTP-ответы со статусами в диапазонах 4xx и 5xx обычно рассматриваются как неудачный. флажок "игнорировать статус" можно использовать для установки состояние успешно перед выполнением дальнейших проверок. обратите внимание, что это будет иметь эффект очистки любых предыдущих сбоев утверждения, поэтому убедитесь, что этот параметр установлен только для первого утверждения.


добавьте " утверждение ответа "после запроса, который вы хотите передать, и установите флажок" игнорировать статус".


используя утверждение BeanShell, принудительно передайте http-сэмплер, а затем передайте/fail на обычный оператор утверждения Beanshell вместо:

if (ResponseCode.equals("500") == true) { 
    SampleResult.setResponseOK();  

    /* the same is 
    SampleResult.setSuccessful(true);
    SampleResult.setResponseCodeOK();
    SampleResult.setResponseMessageOK();
    */
}
String path = SampleResult.getURL().getPath();
if (!path.contains("anerror")) {
    Failure = true;
    FailureMessage = "URL Path: didn't contain \"anerror\"" +
        System.getProperty("line.separator") + "URL Path detected: " + path;
}