Follow

Why are my HTTP 200 OK counted as errors?

You may have noticed that 200 response code is marked as failed in your Errors report.

This is not a mistake.

How JMeter calculates whether a response is an error or not 

BlazeMeter saves the Sample.jtl files in an XML format, as this is the correct way to store successful HTTP requests. 

To better acquaint yourselves, here are a few examples of some 200 OK HTTP samples taken from a BlazeMeter sample.jtl file:

A Successful HTTP 200 OK HTTP Request

<sample t="2389" lt="337" ts="1385384058184" s="true" lb="demo.blazemeter.com" rc="200" rm="OK" tn="Tour 1-2" dt="text" by="114" sc="1" ec="0" ng="6" na="6" hn="ip-10-116-219-48" in="">

 <assertionResult>

   <name>Duration Assertion</name>

   <failure>false</failure>

   <error>false</error>

 </assertionResult>

</sample>

Notice the “s=true” which is means its successful (the s=true flag, followed by the rc=200 assures us that the entire HTTP request was successfully completed).

Above, you can also see an assertion to this HTTP request which did not fail.

Assertion Errors

Now, lets look at this HTTP request which is also a 200 OK:

<sample t="3040" lt="332" ts="1385384066792" s="false" lb="Resources" rc="200" rm="OK" tn="Tour 1-3" dt="text" by="114" sc="1" ec="1" ng="23" na="23" hn="ip-10-116-219-48" in="">

 <assertionResult>

   <name>Duration Assertion</name>

   <failure>true</failure>

   <error>false</error>

   <failureMessage>The operation lasted too long: It took 3,040 milliseconds, but should not have lasted longer than 3,000 milliseconds.</failureMessage>

 </assertionResult>

</sample>

You can see that the response is still 200 OK but, we had an assertion which failed the response and you can also see the description/failure message of the assertion.

A common scenario for these types of errors is a failed login, because although the request was processed successfully (thats why we got 200 OK) the credentials were false, and thats why the assertion failed the request.

Another scenario will be a “Duration Assertion”. If we won’t accept a response time over 5s of a certain page - then we should apply a “Duration Assertion” to fail the request.

Embedded Errors

Let’s look at this HTTP request:

<httpSample t="2674" lt="171" ts="1385391325519" s="false" lb="demo.blazemeter.com" rc="200" rm="OK" tn="demo.blazemeter.com 1-12" dt="text" by="336853" ng="50" na="50">

 <assertionResult>

   <name>Duration Assertion</name>

   <failure>false</failure>

   <error>false</error>

 </assertionResult>

 <httpSample t="343" lt="171" ts="1385391325519" s="true" lb="http://demo.blazemeter.com/" rc="200" rm="OK" tn="demo.blazemeter.com 1-12" dt="text" by="29146" ng="0" na="0"/><httpSample t="159" lt="159" ts="1385391326193" s="false" lb="http://demo.blazemeter.com/blazemeternew.blazemeterltd.netdna-cdn.com/cdn/farfuture/2DvoLHKhbqQb_segx0EoZA_eyqRcf4nHMy1YhFZ8xN0/drupal:7.16/misc/jquery.js?v=1.4.4" rc="404" rm="Not Found" tn="demo.blazemeter.com 1-12" dt="text" by="649" ng="0" na="0"/></httpSample>

We can see it’s a 200 OK (rc=200), there are no assertions BUT, the successful flag is still false (s=false) - say what?

This means that JMeter was unable to retrieve one of the embedded resources (such as Pictures, JavaScripts, CSS etc.) and marked the request as unsuccessful.

At this example, JMeter could not retrieve the jquery.js element and got 404 for it.

How do I view my test’s sample.jtl file ?

Just download the ZIP of your test and extract it.

 

Want to learn more about BlazeMeter test results? You'll want to view our on-demand recording, Load Test Like a Pro

Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.