CINXE.COM
<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> <!--[if gt IE 9]><!--><html class='no-js' lang='en'><!--<![endif]--><head> <meta content='IE=edge' http-equiv='X-UA-Compatible'> <meta charset='utf-8'> <meta content='width=device-width, initial-scale=1.0, maximum-scale=1, minimum-scale=1, user-scalable=no' name='viewport'> <meta content='en' name='Content-Language'> <link rel="stylesheet" media="screen" href="https://leanpub.com/assets/stylesheets/app-bundle-3737be649a5454e3a415.css" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-57x57-3dc48b9be1873ac9bf6d580e7836e3e5.png" sizes="57x57" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-60x60-06b95deca3f378372b051ca8ea42cfbd.png" sizes="60x60" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-72x72-935ba702f9d3da9b4404aa2b797920e5.png" sizes="72x72" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-76x76-937dbc8b688db389b5b872c5ffdffe2d.png" sizes="76x76" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-114x114-9db66ed49dfe9c3ed799923955da36e2.png" sizes="114x114" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-120x120-3fd2359930103db35eb499036b81ba90.png" sizes="120x120" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-144x144-5bee791d2b53cc426eb14e7f6e40a024.png" sizes="144x144" /> <link rel="apple-touch-icon-precomposed" type="image/png" href="https://leanpub.com/assets/favicons/apple-touch-icon-152x152-af69d0ec0fe11cf82324b06ff9a56e3b.png" sizes="152x152" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-16x16-19545df363d1089bccdc59d17ee5b781.png" sizes="16x16" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-32x32-9a0898109481d6450269c966cdf6a2d7.png" sizes="32x32" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-96x96-98f4372a68f5617fc907b7bde8d94e05.png" sizes="96x96" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-128x128-bf73acc329429fbf555afe3b067aa2d6.png" sizes="128x128" /> <link rel="icon" type="image/png" href="https://leanpub.com/assets/favicons/favicon-196x196-24a71f1b4fb02600f635b59a116daf05.png" sizes="196x196" /> <meta content='Leanpub' name='application-name'> <meta content='#ffffff' name='msapplication-TileColor'> <meta content='favicons/mstile-144x144.png' name='msapplication-TileImage'> <meta content='favicons/mstile-150x150.png' name='msapplication-square150x150logo'> <meta content='favicons/mstile-310x150.png' name='msapplication-wide310x150logo'> <meta content='favicons/mstile-310x310.png' name='msapplication-square310x310logo'> <meta content='favicons/mstile-70x70.png' name='msapplication-square70x70logo'> <link href='//fonts.googleapis.com/' rel='dns-prefetch'> <script src='https://ajax.googleapis.com/ajax/libs/webfont/1.6.16/webfont.js'></script> <script> if (typeof WebFont !== 'undefined') { WebFont.load({ google: { families: [ 'Noto+Sans:ital,wght@0,400;0,700;1,400;1,700', 'Noto+Serif:ital,wght@0,400;0,700;1,400;1,700', 'Inter:wght@400;700', ] } }); } </script> <link rel="stylesheet" media="screen" href="https://leanpub.com/assets/font_awesome-bbab983f4954a5c7dd952efdd403ebe8.css" /> <script> window.__BASE_URL__ = "https://leanpub.com/" window.__RAILS_ENV__ = "production" window.__IGNORE_ANALYTICS__ = false </script> <script> var _rollbarConfig = { accessToken: "3d279f41d3804636adbbba833c2c0d2d", captureUncaught: true, captureUnhandledRejections: true, code_version: "0a7b8076", payload: { environment: "production" } }; // Rollbar Snippet !function(r){function o(n){if(e[n])return e[n].exports;var t=e[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}var e={};return o.m=r,o.c=e,o.p="",o(0)}([function(r,o,e){"use strict";var n=e(1),t=e(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.5.2/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,o,e){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,o){this.options=r,this._rollbarOldOnError=null;var e=s++;this.shimId=function(){return e},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[e]={handler:o,messages:[]})}function a(r,o){if(r){var e=o.globalAlias||"Rollbar";if("object"==typeof r[e])return r[e];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(o);return n(function(){o.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),o.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=o.autoInstrument;return o.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[e]=t,t})()}}function l(r){return n(function(){var o=this,e=Array.prototype.slice.call(arguments,0),n={shim:o,method:r,args:e,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=e(2),s=0,d=e(3),c=function(r,o){return new t(r,o)},p=function(r){return new d(c,r)};t.prototype.loadFull=function(r,o,e,t,a){var l=function(){var o;if(void 0===r._rollbarDidLoad){o=new Error("rollbar.js did not load");for(var e,n,t,l,i=0;e=r._rollbarShims[i++];)for(e=e.messages||[];n=e.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(o);break}}"function"==typeof a&&a(o)},i=!1,s=o.createElement("script"),d=o.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,e||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,o,e){try{var n;if(n="function"==typeof o?o:function(){return o||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){e&&"function"==typeof e&&e.apply(this,arguments);try{return r.apply(this,arguments)}catch(e){var o=e;throw o&&("string"==typeof o&&(o=new String(o)),o._rollbarContext=n()||{},o._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=o),o}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(o){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,o){"use strict";function e(r,o,e){if(r){var t;if("function"==typeof o._rollbarOldOnError)t=o._rollbarOldOnError;else if(r.onerror){for(t=r.onerror;t._rollbarOldOnError;)t=t._rollbarOldOnError;o._rollbarOldOnError=t}var a=function(){var e=Array.prototype.slice.call(arguments,0);n(r,o,t,e)};e&&(a._rollbarOldOnError=t),r.onerror=a}}function n(r,o,e,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),o.handleUncaughtException.apply(o,n),e&&e.apply(r,n)}function t(r,o,e){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var e,n,t;try{e=r.reason}catch(r){e=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!e&&t&&(e=t.reason,n=t.promise)}catch(r){}e||(e="[unhandledrejection] error getting `reason` from event"),o&&o.handleUnhandledRejection&&o.handleUnhandledRejection(e,n)};n.belongsToShim=e,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,o,e){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(o,r[t].prototype,e)}}function l(r,o,e){if(o.hasOwnProperty&&o.hasOwnProperty("addEventListener")){for(var n=o.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(o,e,t){n.call(this,o,r.wrap(e),t)};t._rollbarOldAdd=n,t.belongsToShim=e,o.addEventListener=t;for(var a=o.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,o,e){a.call(this,r,o&&o._rollbar_wrapped||o,e)};l._rollbarOldRemove=a,l.belongsToShim=e,o.removeEventListener=l}}r.exports={captureUncaughtExceptions:e,captureUnhandledRejections:t,wrapGlobals:a}},function(r,o){"use strict";function e(r,o){this.impl=r(o,this),this.options=o,n(e.prototype)}function n(r){for(var o=function(r){return function(){var o=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,o)}},e="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<e.length;n++)r[e[n]]=o(e[n])}e.prototype._swapAndProcessMessages=function(r,o){this.impl=r(this.options);for(var e,n,t;e=o.shift();)n=e.method,t=e.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],e.ts]):this[n].apply(this,t));return this},r.exports=e},function(r,o){"use strict";r.exports=function(r){return function(o){if(!o&&!window._rollbarInitialized){r=r||{};for(var e,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;e=window._rollbarShims[i++];)n||(n=e.handler),e.handler._swapAndProcessMessages(l,e.messages);window[t]=n,window._rollbarInitialized=!0}}}}]); // End Rollbar Snippet </script> <script src="https://www.google.com/recaptcha/api.js?render=6LdDCakUAAAAAEFI0Kyx_gg9t-G4r1mOWrIwFLd0"></script> <script src="https://leanpub.com/assets/modernizr-a38b94cc0625ba4488942166ee4d23a4.js"></script> <title data-react-helmet="true">Master Apache… by Philippe Mouawad et al. [PDF/iPad/Kindle]</title><meta data-react-helmet="true" name="og:site_name" content="Leanpub"/><meta data-react-helmet="true" name="leanpub:page_name" content="book"/><meta data-react-helmet="true" name="title" content="Master Apache JMeter From load testing to DevOps."/><meta data-react-helmet="true" name="description" content="A reference book on JMeter by three performance experts &amp;amp; developers of JMeter Team. Learn load testing from the methodology to the integration with DevOps."/><meta data-react-helmet="true" name="author" content="Antonio Gomes Rodrigues"/><meta data-react-helmet="true" name="author" content="Philippe Mouawad"/><meta data-react-helmet="true" name="author" content="Milamber"/><meta data-react-helmet="true" name="DCTERMS.title" content="Master Apache JMeter From load testing to DevOps."/><meta data-react-helmet="true" name="DCTERMS.description" content="A reference book on JMeter by three performance experts &amp;amp; developers of JMeter Team. Learn load testing from the methodology to the integration with DevOps."/><meta data-react-helmet="true" name="DCTERMS.type" content="book"/><meta data-react-helmet="true" name="DCTERMS.creator" content="Antonio Gomes Rodrigues"/><meta data-react-helmet="true" name="DCTERMS.creator" content="Philippe Mouawad"/><meta data-react-helmet="true" name="DCTERMS.creator" content="Milamber"/><meta data-react-helmet="true" name="DCTERMS.publisher" content="Leanpub"/><meta data-react-helmet="true" name="DCTERMS.contributor" content="Alexander Podelko"/><meta data-react-helmet="true" name="DCTERMS.contributor" content="Felix Schumacher"/><meta data-react-helmet="true" name="DCTERMS.date" content="2015-10-18T19:51:29.000Z"/><meta data-react-helmet="true" name="DCTERMS.language" content="eng"/><meta data-react-helmet="true" property="og:title" content="Master Apache JMeter From load testing to DevOps."/><meta data-react-helmet="true" property="og:type" content="book"/><meta data-react-helmet="true" property="og:image" content="https://d2sofvawe08yqg.cloudfront.net/master-jmeter-from-load-test-to-devops/s_hero2x?1732865322"/><meta data-react-helmet="true" property="og:url" content="http://leanpub.next/master-jmeter-from-load-test-to-devops"/><meta data-react-helmet="true" property="og:publisher" content="Leanpub"/><meta data-react-helmet="true" property="og:description" content="A reference book on JMeter by three performance experts &amp;amp; developers of JMeter Team. Learn load testing from the methodology to the integration with DevOps."/><meta data-react-helmet="true" name="twitter:card" content="summary"/><meta data-react-helmet="true" name="twitter:site" content="@Leanpub"/><meta data-react-helmet="true" name="twitter:title" content="Master Apache JMeter From load testing to DevOps."/><meta data-react-helmet="true" name="twitter:description" content="A reference book on JMeter by three performance experts &amp;amp; developers of JMeter Team. Learn load testing from the methodology to the integration with DevOps."/><meta data-react-helmet="true" name="twitter:image" content="https://d2sofvawe08yqg.cloudfront.net/master-jmeter-from-load-test-to-devops/s_featured?1732865322"/><meta data-react-helmet="true" name="twitter:url" content="http://leanpub.next/master-jmeter-from-load-test-to-devops"/> </head> <body> <div id='react-root'><div class="app"><section class="Header"><nav class="Header__Nav"><a class="Header__Nav__Logo" href="/"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABDCAYAAABjoACgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABSRJREFUeNrsXP11mzAQx375P+oEYQOzQdig3iDOBHUnKBs4mYB0grgTQCYwmcBkAuMJXCk9xYqK0DfgoHvvHnl20En3ofsd5hRFgQIFChQoUKBBaOZz8NPphPAlwZxivsEcY6aftVGDuYLrK/xdzWaz2lB+DLIILxjZSHALlU3kvWEuQX5zMQbAi17iyy0oPXE0bAXKeJQZA5T+w5P8Fyx/O7owwotOMeeYDyf/VBB5gjkUPcg/wFrToZWOMK8w70/DEFF2AlwMNIc96AD1tgWBsDWEOYoC0dz1iPlBN1+YGCDHl5WDSdfAlJDDPVtlT2cVFQPb0hM2wL3ODVcGQnQnWsKCCaqp8QRLDeREk7kNvSdPVUQDe3sMqCnRlB97dx08wZ3CvrgBNOQq16w1c80e7kGO5rCENcnmsOsjB5wEXxF49rsNpjFenUA9kLRsO+yW9AJ/lyzsJAkPXzYduYd49098zxMHS1PGo6mn3suisQNm32FudTA85syn9yMRIhHAwo1CxMhoxyINmEPe8n859z9riezUUhci5IV8GiCVGQCUfvCEvzM2GuCzA0QGVXymKN+XAVKfBlgKhGbwfdID9iZenTDyEsY5dPKErQEywbhauW+uKVcGE/uoC8gc3rclvN0SVFOBAxSaKCT1OD9vMPS6A+ppC7ekHPDAraO6xATe/tLQkRMDjCECPhlhhFWxlhPOXUhk4NxiKs8eTCCsCwOkI4sAG7r1NG7adwSUpuH3BajsLQIUYVt4OqquK2cRUFFMPkFdV33mAJFVjxfq/S7qgKPt2HOHXhAiwHMEiFBDM+H9v7FFWC4jYBEiwG8EJIKC5GIjwPaBXMeva4kPAyCJB0wxB4iiADk1QAfEbEIN0J4HVGH53ML7CdUTrgE+6cA0ClQNIFLw24V7v4ta4M0mDziJgAnv/71FwEIiHAUDKOvMSwQsggEGyAHMOzuXGgHWvwl0vC7vPQewguNo2lR7iwB4sywKBtDfhjp0pxUBcVcBoiJkqsWYimPaGOD1C3h/6mic1yEM0ITtp58IuBF8XgUD/KcLVd05jYCboP8BcgB5J/MrRICLt5kZXfRmgCZAUKUosDNAR7NBFQyglgdkDRuyl3MThzVADUwmeozOxxLw8siEr6NzSxNy4JkVI7fmCqfKYwTQNZWmBkAWNQARqtydyNzDexDtVLyL1B97b0H21vScCcNaYKn7SMI0AkTbD1n4H1h406JI1FL8LMAjj5zHkpbWGhIc4QeIuFXU3iROxvgdtTRLw30xF1E0yl5anKDpSKy6lIBejBDCpqu9B9p0aEtozO57TGvnzvIogJw/DoDrBfvoEeO+X8G9e8t2qA2sBcnQlGCMjQ1EKyQG4JW+9nxuw6dDMkAm4pSQez6forX/WKWB0cQArd7L/Q/xjucBDupIucX3fWDHM9+QZ9K8PZMYQNSU/S36d2DH3cAw9AGu6wHn8JF7MB8EhdrMpQGaKPQBdEFRpGOAK4MS3VT5ZXQ+CozH4uzY9HixxGF00fqDHoMmqlrj6Hy0mskjCiTSpain7MqjN5QASUtNSLfloCs9lyE2UDo9v8IIUjI1yPfIX1+xUHhmmBytTpDqmI/q6Vx7HpY6kk+hrUmyz3wbIO/rp0nJvLKe5hBrwl0jAxQKnpZ5PR2kY2vgomE/xPupTEEoi8zChQH2gH3XY3gZFxa/A0YjmE8CunluMUihDUOZZzcun4s4NwLAvGak8xu9DgMFChQo0HD0V4ABAKiCSwHftnDCAAAAAElFTkSuQmCC" alt="Leanpub"/></a><div class="Header__Middle"></div><button class="btn--plain DropdownContainer__Trigger "><div class="Header__Nav__Logo relative__nav__logo"><i class="HeaderIcon fa fa-bars"></i><i class="AccountItem__Trigger fa fa-caret-down"></i></div></button></nav></section><div id="scroll-wrapper" class="scroll-wrapper undefined false"><div class="main"><article class="book-show" lang="en"><div class="quick-buy-header"><div class="container--large"><div class="quick-buy-item-details"><div class="book-cover s_hero "><img src="https://d2sofvawe08yqg.cloudfront.net/master-jmeter-from-load-test-to-devops/s_hero?1732865322" style="width:auto;height:auto"/></div><h6 class="quick-buy-title">Master Apache JMeter From load testing to DevOps.</h6></div><div class="quick-buy-purchase-details"><div class="pricing"><div class="price--minimum"><div class="price__value"><span>$24.95</span></div><div class="price__title"><span>Minimum price</span></div></div><span><div class="price--suggested"><div class="price__value"><span>$34.95</span></div><div class="price__title"><span>Suggested price</span></div></div><span class="tooltip--pricing"><button class="tooltip-item"><i class="fa fa-question-circle"></i></button></span></span></div><button class="btn--solid"><span>Add Ebook to Cart</span></button></div></div></div><span></span><section class="book-hero"><div class="container--medium--title"><h3 class="book-hero__title ltr">Master Apache JMeter From load testing to DevOps.</h3><h6 class="book-hero__subtitle">Prefaced by Alexander Podelko</h6></div><div class="shelf-hero container--medium"><aside class="book-hero__summary ltr"><div class="book-hero__cover"><div class="book-cover s_hero "><img src="https://d2sofvawe08yqg.cloudfront.net/master-jmeter-from-load-test-to-devops/s_hero?1732865322" style="width:auto;height:auto"/></div><div class="book-progress"><div class="progress-bar" title="[object Object]"><span class="progress-bar__meter" style="width:100%"></span></div><p class="percent-complete"><span>This book is 100% complete</span></p><p class="last-updated"><span>Last updated on 2024-11-29</span></p></div></div><div class="book-hero__author"><div><div class="avatars"><div class="avatar--tiny"><a href="https://leanpub.com/u/antoniogomesrodrigues"><img class="avatar__image" src="https://secure.gravatar.com/avatar/11151972f58437babe04ebb6595e1b94?r=pg&d=mm" alt="Antonio Gomes Rodrigues"/></a></div><div class="avatar--tiny"><a href="https://leanpub.com/u/pmouawad"><img class="avatar__image" src="https://d39qdlcrvnra4b.cloudfront.net/avatars/564680/small/philmdot.png?1443126672" alt="Philippe Mouawad"/></a></div><div class="avatar--tiny"><a href="https://leanpub.com/u/milamber"><img class="avatar__image" src="https://d39qdlcrvnra4b.cloudfront.net/avatars/518676/small/avatar-milamber-petit.png?1436213901" alt="Milamber"/></a></div></div><div class="names"><a class="link" href="https://leanpub.com/u/antoniogomesrodrigues">Antonio Gomes Rodrigues</a><span>, </span><a class="link" href="https://leanpub.com/u/pmouawad">Philippe Mouawad</a><span>, and </span><a class="link" href="https://leanpub.com/u/milamber">Milamber</a></div></div></div><div class="book-hero__blurb"><p>Master performance testing and JMeter with this book written by three members of Apache JMeter's team who are also experts in the performance field.</p><p>You will deeply understand how to get the most out of it, be more productive and integrate it into your Agile/DevOps processes.<strong> </strong></p></div></aside><aside class="book-hero__purchase"><div><div class="pricing"><div class="price--minimum"><div class="price__value"><span>$24.95</span></div><div class="price__title"><span>Minimum price</span></div></div><span><div class="price--suggested"><div class="price__value"><span>$34.95</span></div><div class="price__title"><span>Suggested price</span></div></div><span class="tooltip--pricing"><button class="tooltip-item"><i class="fa fa-question-circle"></i></button></span></span></div><div class="cartable-form"><span></span><div class="cartable-form__packages"><h6 class="cartable-form__radio-group__name">Packages<a href="#packages">Details</a></h6><div class="radio-group"><div class="radio"><label class="radio__label" for="36314"><input type="radio" class="radio__input" id="36314" value="36314" checked=""/><span>The Book</span></label></div><div class="radio"><label class="radio__label" for="55522"><input type="radio" class="radio__input" id="55522" value="55522"/><span>25% discount - Pack of 3</span></label></div></div></div><div class="cartable-form__actions"><div class="cartable-input"><div class="cartable-input__wrapper"><label><span>You Pay in US $</span></label><div class="cartable-form__action--with-hint"><input type="text" class="cartable-input__input"/><p class="hint"><span><strong>EU customers:</strong> Price excludes VAT.<br/> VAT is added during checkout.</span></p></div></div></div><div class="cartable-form__action--with-hint"><button class="btn--solid"><span>Add Ebook to Cart</span></button></div><div class="cartable-form__action"></div><div class="cartable-form__action"><button class="btn--wishlist"><span>Add to Wish List</span></button></div></div></div></div><div class="book-hero__actions"><div><a class="btn--sample-download btn--hollow"><i class="fa fa-file-pdf-o"></i></a></div><div><a class="btn--hollow"><span>Table of Contents</span><i class="fa fa-list-ol"></i></a></div></div></aside></div><div class="book-hero__meta-container"><div class="book-hero__metadata"><ul class="stats__list"><li class="stats__list-item"><span class="stats__list-item-metric">550</span><p class="stats__list-item__title"><span>Readers</span></p></li><li class="stats__list-item"><span class="stats__list-item-metric">720</span><p class="stats__list-item__title"><span>Pages</span></p></li><li class="stats__list-item"><span class="stats__list-item-metric">61,425</span><p class="stats__list-item__title"><span>Words</span></p></li><li class="stats__list-item"><a href="#happiness-guarantee"><span class="stats__list-item-metric"><span>60 days</span></span><p class="stats__list-item__title"><span>guarantee</span></p></a></li><li class="stats__list-item"><i class="fa fa-globe stats__list-item-icon"></i><p class="stats__list-item__title">English</p></li><li class="stats__list-item" title="For Mac and PC"><i class="fa fa-laptop stats__list-item-icon"></i><p class="stats__list-item__title">PDF</p></li><li class="stats__list-item" title="For phones and tablets"><i class="fa fa-mobile stats__list-item-icon"></i><i class="fa fa-tablet stats__list-item-icon"></i><p class="stats__list-item__title">EPUB</p></li><li class="stats__list-item" title="On the web"><span class="stats__list-item--leanpub-icon"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 347.827 237.519" style="enable-background:new 0 0 347.827 237.519;" xml:space="preserve"> <path class="st0" d="M321.584,21.423C309.91,14.855,279.145,0,239.679,0c-35.436,0-55.606,10.893-65.766,17.889 C163.754,10.893,143.584,0,108.148,0C68.682,0,37.917,14.855,26.242,21.423L0,237.519h0.783c14.836,0,29.441-3.421,42.86-9.752 c14.957-7.057,38.538-15.36,66.698-15.36c34.255,0,53.752,15.291,63.573,25.112c9.821-9.821,29.318-25.112,63.573-25.112 c28.16,0,51.741,8.303,66.698,15.36c13.418,6.331,28.023,9.752,42.86,9.752h0.783L321.584,21.423z M303.403,202.544 c-13.892-5.715-27.909-9.622-41.664-11.615c-8.081-1.17-16.241-1.764-24.253-1.764c-22.779,0-43.361,5.68-61.175,16.883 l-2.398,1.491l-2.385-1.484c-17.826-11.21-38.409-16.89-61.188-16.89c-8.012,0-16.171,0.594-24.251,1.764 c-13.755,1.992-27.774,5.9-41.666,11.615l-17.659,7.265L47.831,36.451l1.56-0.689c17.758-7.848,40.543-12.533,60.95-12.533 c25.278,0,46.649,8.049,63.573,23.936c16.924-15.886,38.294-23.936,63.572-23.936c20.407,0,43.192,4.686,60.95,12.533l1.56,0.689 l21.065,173.358L303.403,202.544z M241.984,181.205c-2.178-0.086-4.35-0.132-6.512-0.132c-22.871,0-43.604,5.647-61.626,16.777 c-18.031-11.133-38.759-16.777-61.626-16.777c-8.044,0-16.234,0.595-24.343,1.77c-13.807,1.999-27.86,5.915-41.768,11.636 l-7.933,3.263L56.999,42.849c16.281-6.903,36.783-11,55.222-11c23.941,0,43.983,7.904,59.569,23.491l2.057,2.057l2.056-2.057 c15.017-15.017,34.18-22.88,56.968-23.437L241.984,181.205z"/> </svg> </span><p class="stats__list-item__title">WEB</p></li></ul></div></div></section><span style="font-size:0"></span><section class="about-book"><div class="container--medium"><h1 class="section__title"><span>About the Book</span></h1><div class="about-book__content" dir="ltr" data-dir="ltr"><div class="about-book__media"><div class="video-box"><div class="video-wrapper"><iframe id="ytplayer" type="text/html" width="640" height="390" src="//www.youtube.com/embed/JBRIwqqVPdw" frameBorder="0" allowfullscreen=""></iframe></div></div></div><div class="about-book__copy"><p>Throughout the chapters, you will understand how to create meaningful performance tests, discover the richness of JMeter and learn how to use it efficiently and effectively.</p><p> </p><p>From automatic recording that allows you to gain in productivity and realism in writing your scripts, through correlation that makes your test realistic and reusable across environments, the authors put you on the right track to realize your scalability testing campaigns.</p><p> </p><p>They then explore the different protocols offered by the tool through examples drawn from their professional experiences.</p><p> </p><p>Finally, they show how to integrate the tool into the DevOps approach, create professional reports and exploit the richness of its eco-system to integrate new protocols, enrich its monitoring or leverage its power through the use of the Cloud.</p></div><div class="about-book__meta"><ul class="meta-list"><li class="meta-list__item"><h3 class="meta-list__item-title"><span>Share this book</span></h3><ul class="social-sharing"><li class="twitter"><span class="icon-link--twitter" aria-label="twitter" tabindex="0"></span></li><li class="facebook"><span class="icon-link--facebook" aria-label="facebook" tabindex="0"></span></li></ul></li><li class="meta-list__item"><h3 class="meta-list__item-title"><span>Categories</span></h3><ul class="meta-list__item categories"><li>Agile</li><li>DevOps</li><li>Resiliency</li><li>Automated Software Testing</li><li>Java</li><li>Testing</li><li>Software</li><li>Networking</li><li>Messaging</li><li>Databases</li><li>Oracle</li></ul></li><li class="meta-list__item"><h3 class="meta-list__item-title"><span>Installments completed</span></h3><p>13<!-- --> / <!-- -->13</p></li><li class="meta-list__item"><h3 class="meta-list__item-title"><span>Feedback</span></h3><a class="btn--hollow --interactive" href="/master-jmeter-from-load-test-to-devops/email_author/new"><span>Email the Author(s)</span></a></li></ul></div></div></div></section><section class="about-authors"><section class="lane--author"><div class="container--medium"><header class="lane__header--center"><h4><span>About the Authors</span></h4></header><div data-item-count="3" class="lane__contents--author lane__contents--center"><div><div class="lane-item--author"><a class="avatar-with-name--vertical link" href="/u/antoniogomesrodrigues"><div class="avatar--small"><img class="avatar__image" src="https://secure.gravatar.com/avatar/11151972f58437babe04ebb6595e1b94?r=pg&d=mm" alt="Antonio Gomes Rodrigues"/></div><span class="avatar-with-name__name">Antonio Gomes Rodrigues</span></a><div class="profile-icons"><a class="icon-link--twitter" href="https://twitter.com/ra0077"></a></div><div class="lane-item__author_blurb text-left"><p>Antonio Gomes Rodrigues is an expert in the field of application performance for years.</p><p>His missions led him to work:</p><p><br></p><ul><li>On the performance of high traffic websites</li><li>On the performance of an application for brokers</li><li>On the performance of rich clients, cloud applications, web applications, etc.</li><li>With various profilers: JProfiler, Yourkit, PerfView, etc.</li><li>With various APM: Dynatrace, AppDynamics, Introscope, NewRelic, etc.</li><li>With various load testing tools: JMeter, LoadRunner, etc.</li><li>In various missions: load tests, implementation of performance strategies, training, performance audits, troubleshooting, etc.</li></ul><p><br></p><p>He shares his knowledge of application performance at conferences, on his <a href="http://arodrigues.developpez.com/" target="_blank">blog</a> and during technical book reviews.</p><p><br></p><p>He is currently a committer and a PMC member of the JMeter project within the Apache Software Foundation.</p></div></div></div><div><div class="lane-item--author"><a class="avatar-with-name--vertical link" href="/u/pmouawad"><div class="avatar--small"><img class="avatar__image" src="https://d39qdlcrvnra4b.cloudfront.net/avatars/564680/small/philmdot.png?1443126672" alt="Philippe Mouawad"/></div><span class="avatar-with-name__name">Philippe Mouawad</span></a><div class="profile-icons"><a class="icon-link--github" href="https://github.com/pmouawad"></a><a class="icon-link--twitter" href="https://twitter.com/philmdot"></a></div><div class="lane-item__author_blurb text-left"><p>Philippe Mouawad is a technical expert and architect in J2E and Web environments within the company <a href="https://www.ubik-ingenierie.com/" target="_blank">Ubik-Ingenierie</a>.</p><p>He has been using JMeter since 2009 as part of performance improvements missions, load testing of intranet or e-commerce websites and trainings on JMeter.</p><p> </p><p>He has been contributing to JMeter since 2009 first through patches and then as a 'committer' and member of Project Management Committee at Apache.</p><p>Among his main contributions, the <strong>CSS selector Extractor</strong>, the <strong>Boundary Extractor</strong>, the <strong>Backend Listener</strong> (allowing to interface among others <strong>Graphite</strong>, <strong>InfluxDB</strong> or <strong>ElasticSearch</strong>),</p><p>part of the Web reporting feature and the optimization of the performances of the core, its stabilization and various ergonomic improvements, to his credit more than 400 bugs/improvements.</p><p> </p><p>He also contributes to the <a href="https://jmeter-plugins.org/" target="_blank">JMeter-Plugins</a> project, among his contributions are <strong>Redis DataSet</strong>, <strong>Graphs Generator Listener</strong> and various patches to different plugins.</p><p> </p><p>He also manages the <a href="https://github.com/jmeter-maven-plugin/jmeter-maven-plugin" target="_blank">JMeter Maven Plugin</a> project, he has been managing it since version 2.3.0 ensuring its compatibility with last JMeter releases and improving its</p><p>dependencies management and reporting mechanism.</p><p> </p><p>He is currently a committer and a PMC member of the <a href="https://jmeter.apache.org/" target="_blank">JMeter project</a> within the <a href="http://www.apache.org/foundation/how-it-works.html#what" target="_blank">Apache Software Foundation</a>.</p><p>His Apache ID is <a href="http://people.apache.org/~pmouawad/" target="_blank">pmouawad</a>.</p><p> </p><p>He is also a lead developer of the <a href="https://ubikloadpack.com" target="_blank">Ubik Load Pack</a> solution, a set of Enterprise Plugins which provides support for protocols that are not natively supported by JMeter.</p><p>Finally, he contributes to the <a href="https://www.ubik-ingenierie.com/blog/" target="_blank">Ubik-Ingenierie blog</a>.</p></div></div></div><div><div class="lane-item--author"><a class="avatar-with-name--vertical link" href="/u/milamber"><div class="avatar--small"><img class="avatar__image" src="https://d39qdlcrvnra4b.cloudfront.net/avatars/518676/small/avatar-milamber-petit.png?1436213901" alt="Milamber"/></div><span class="avatar-with-name__name">Milamber</span></a><div class="profile-icons"><a class="icon-link--github" href="https://github.com/milamberspace"></a><a class="icon-link--twitter" href="https://twitter.com/milamberspace"></a></div><div class="lane-item__author_blurb text-left"><p>Bruno Demion, better known as Milamber, is a French computer scientist expatriated in Morocco since 2002, currently living in Témara (near Rabat).</p><p> </p><p>He works in a technology consulting and expertise company as a partner, senior technical expert and technical architect.</p><p> </p><p>Through his work and passion for IT, Milamber has strong skills in performance, troubleshooting, security and technical architectures around web technologies.</p><p> </p><p>Since December 2003, he has been working with JMeter to perform load tests in various missions and training courses.</p><p> </p><p>He contributes as much as possible to the JMeter project in his spare time, in particular on the translation into French of the graphical interface, corrections of anomalies as well as some behaviors (proxy https, new results tree, icon bar, etc.).</p><p> </p><p>He is currently a committer, PMC member and the PMC Chair of the Apache JMeter project within the Apache Software Foundation - ASF. He is also an official ASF member. His Apache ID is milamber.</p><p> </p><p>Milamber also has a personal blog with many articles and tutorials on Apache JMeter, some of which inspired this book.</p></div></div></div></div></div></section></section><section class="about-packages"><a name="packages"></a><section class="lane--package"><div class="container--medium"><header class="lane__header--center"><h4><span>Packages</span></h4></header><div data-item-count="2" class="lane__contents--package lane__contents--center"><div><div class="lane-item--package--selected"><div class="lane-item--package__content"><h5 class="lane-item--package__name">The Book</h5><ul class="stats__list"><li class="stats__list-item" title="For Mac and PC"><i class="fa fa-laptop stats__list-item-icon"></i><p class="stats__list-item__title">PDF</p></li><li class="stats__list-item" title="For phones and tablets"><i class="fa fa-mobile stats__list-item-icon"></i><i class="fa fa-tablet stats__list-item-icon"></i><p class="stats__list-item__title">EPUB</p></li><li class="stats__list-item" title="On the web"><span class="stats__list-item--leanpub-icon"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 347.827 237.519" style="enable-background:new 0 0 347.827 237.519;" xml:space="preserve"> <path class="st0" d="M321.584,21.423C309.91,14.855,279.145,0,239.679,0c-35.436,0-55.606,10.893-65.766,17.889 C163.754,10.893,143.584,0,108.148,0C68.682,0,37.917,14.855,26.242,21.423L0,237.519h0.783c14.836,0,29.441-3.421,42.86-9.752 c14.957-7.057,38.538-15.36,66.698-15.36c34.255,0,53.752,15.291,63.573,25.112c9.821-9.821,29.318-25.112,63.573-25.112 c28.16,0,51.741,8.303,66.698,15.36c13.418,6.331,28.023,9.752,42.86,9.752h0.783L321.584,21.423z M303.403,202.544 c-13.892-5.715-27.909-9.622-41.664-11.615c-8.081-1.17-16.241-1.764-24.253-1.764c-22.779,0-43.361,5.68-61.175,16.883 l-2.398,1.491l-2.385-1.484c-17.826-11.21-38.409-16.89-61.188-16.89c-8.012,0-16.171,0.594-24.251,1.764 c-13.755,1.992-27.774,5.9-41.666,11.615l-17.659,7.265L47.831,36.451l1.56-0.689c17.758-7.848,40.543-12.533,60.95-12.533 c25.278,0,46.649,8.049,63.573,23.936c16.924-15.886,38.294-23.936,63.572-23.936c20.407,0,43.192,4.686,60.95,12.533l1.56,0.689 l21.065,173.358L303.403,202.544z M241.984,181.205c-2.178-0.086-4.35-0.132-6.512-0.132c-22.871,0-43.604,5.647-61.626,16.777 c-18.031-11.133-38.759-16.777-61.626-16.777c-8.044,0-16.234,0.595-24.343,1.77c-13.807,1.999-27.86,5.915-41.768,11.636 l-7.933,3.263L56.999,42.849c16.281-6.903,36.783-11,55.222-11c23.941,0,43.983,7.904,59.569,23.491l2.057,2.057l2.056-2.057 c15.017-15.017,34.18-22.88,56.968-23.437L241.984,181.205z"/> </svg> </span><p class="stats__list-item__title">WEB</p></li><li class="stats__list-item"><i class="fa fa-globe stats__list-item-icon"></i><p class="stats__list-item__title">English</p></li></ul></div><div class="lane-item--package__purchase"><div class="pricing"><div class="price--minimum"><div class="price__value"><span>$24.95</span></div><div class="price__title"><span>Minimum price</span></div></div><span><div class="price--suggested"><div class="price__value"><span>$34.95</span></div><div class="price__title"><span>Suggested price</span></div></div><span class="tooltip--pricing"><button class="tooltip-item"><i class="fa fa-question-circle"></i></button></span></span></div><div class="purchase--button"><button class="btn--solid"><span>Add To Cart</span></button></div></div></div></div><div><div class="lane-item--package"><div class="lane-item--package__content"><h5 class="lane-item--package__name">25% discount - Pack of 3</h5><p class="lane-item__blurb">This package is for 3 copies of the "Master JMeter : from load testing to DevOps" at a 25% discount.</p><ul class="stats__list"><li class="stats__list-item" title="For Mac and PC"><i class="fa fa-laptop stats__list-item-icon"></i><p class="stats__list-item__title">PDF</p></li><li class="stats__list-item" title="For phones and tablets"><i class="fa fa-mobile stats__list-item-icon"></i><i class="fa fa-tablet stats__list-item-icon"></i><p class="stats__list-item__title">EPUB</p></li><li class="stats__list-item" title="On the web"><span class="stats__list-item--leanpub-icon"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 347.827 237.519" style="enable-background:new 0 0 347.827 237.519;" xml:space="preserve"> <path class="st0" d="M321.584,21.423C309.91,14.855,279.145,0,239.679,0c-35.436,0-55.606,10.893-65.766,17.889 C163.754,10.893,143.584,0,108.148,0C68.682,0,37.917,14.855,26.242,21.423L0,237.519h0.783c14.836,0,29.441-3.421,42.86-9.752 c14.957-7.057,38.538-15.36,66.698-15.36c34.255,0,53.752,15.291,63.573,25.112c9.821-9.821,29.318-25.112,63.573-25.112 c28.16,0,51.741,8.303,66.698,15.36c13.418,6.331,28.023,9.752,42.86,9.752h0.783L321.584,21.423z M303.403,202.544 c-13.892-5.715-27.909-9.622-41.664-11.615c-8.081-1.17-16.241-1.764-24.253-1.764c-22.779,0-43.361,5.68-61.175,16.883 l-2.398,1.491l-2.385-1.484c-17.826-11.21-38.409-16.89-61.188-16.89c-8.012,0-16.171,0.594-24.251,1.764 c-13.755,1.992-27.774,5.9-41.666,11.615l-17.659,7.265L47.831,36.451l1.56-0.689c17.758-7.848,40.543-12.533,60.95-12.533 c25.278,0,46.649,8.049,63.573,23.936c16.924-15.886,38.294-23.936,63.572-23.936c20.407,0,43.192,4.686,60.95,12.533l1.56,0.689 l21.065,173.358L303.403,202.544z M241.984,181.205c-2.178-0.086-4.35-0.132-6.512-0.132c-22.871,0-43.604,5.647-61.626,16.777 c-18.031-11.133-38.759-16.777-61.626-16.777c-8.044,0-16.234,0.595-24.343,1.77c-13.807,1.999-27.86,5.915-41.768,11.636 l-7.933,3.263L56.999,42.849c16.281-6.903,36.783-11,55.222-11c23.941,0,43.983,7.904,59.569,23.491l2.057,2.057l2.056-2.057 c15.017-15.017,34.18-22.88,56.968-23.437L241.984,181.205z"/> </svg> </span><p class="stats__list-item__title">WEB</p></li><li class="stats__list-item"><i class="fa fa-globe stats__list-item-icon"></i><p class="stats__list-item__title">English</p></li></ul></div><div class="lane-item--package__purchase"><div class="pricing"><div class="price--minimum"><div class="price__value"><span>$56.25</span></div><div class="price__title"><span>Minimum price</span></div></div><span><div class="price--suggested"><div class="price__value"><span>$78.75</span></div><div class="price__title"><span>Suggested price</span></div></div><span class="tooltip--pricing"><button class="tooltip-item"><i class="fa fa-question-circle"></i></button></span></span></div><div class="purchase--button"><button class="btn--solid"><span>Add To Cart</span></button></div></div></div></div></div></div></section></section><span></span><section class="about-contributors"><section class="lane--contributor"><div class="container--medium"><header class="lane__header--center"><h4><span>About the Contributors</span></h4></header><div data-item-count="2" class="lane__contents--contributor lane__contents--center"><div><div class="lane-item--contributor"><div class="avatar-with-name--vertical"><div class="avatar--small"><img class="avatar__image" src="https://s3.amazonaws.com/avatars.leanpub.com/avatars/2017/small/podelko_small.jpg?1542094401" alt="Alexander Podelko"/></div><span class="avatar-with-name__name">Alexander Podelko</span></div><p class="lane-item--contributor__title">Board director for the Computer Measurement Group (CMG), a worldwide organization of performance and capacity management professionals. </p><div class="profile-icons"><a class="icon-link--twitter" href="https://twitter.com/apodelko"></a></div><div class="truncate__text lane-item__blurb"><div class="truncate__text"><div><div><p>Over the last twenty years <a href="mailto:apodelko@yahoo.com" target="_blank">Alex Podelko</a> supported major performance initiatives for <a href="https://www.oracle.com/corporate/index.html" target="_blank">Oracle</a>, <a href="https://www.oracle.com/corporate/acquisitions/hyperion/index.html" target="_blank">Hyperion</a>, <a href="https://www.aetna.com/about-us.html" target="_blank">Aetna</a>, and <a href="https://software.intel.com/en-us/" target="_blank">Intel</a> in different roles including performance tester, performance analyst, performance architect, and performance engineer. </p><p> </p><p>Currently he is Consulting Member of Technical Staff at <a href="https://www.oracle.com/index.html" target="_blank">Oracle</a>, responsible for performance testing and tuning of Hyperion (a.k.a. <a href="https://www.oracle.com/applications/performance-management/index.html" target="_blank">Enterprise Performance Management</a> and <a href="https://www.oracle.com/solutions/business-analytics/business-intelligence/index.html" target="_blank">Business Intelligence</a>) products. Before specializing in performance, Alex led software development for <a href="https://www.rodnik.ru/" target="_blank">Rodnik Software</a>. </p><p>Having more than thirty years of overall experience in the software industry, he holds a PhD in Computer Science from <a href="http://en.gubkin.ru/academics/faculties-and-departments/faculty/faculty-of-automation-and-computer-science/" target="_blank">Gubkin University</a> and an MBA from <a href="http://www.bellevue.edu/degrees/master/business-admin-mba/" target="_blank">Bellevue University</a>.</p><p>Alex periodically talks and writes about performance-related topics, advocating tearing down silo walls between different groups of performance professionals. He currently serves as a board director for the <a href="https://www.cmg.org/" target="_blank">Computer Measurement Group (CMG)</a>, a worldwide organization of performance and capacity management professionals.</p></div></div></div></div></div></div><div><div class="lane-item--contributor"><div class="avatar-with-name--vertical"><div class="avatar--small"><img class="avatar__image" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8IAEQgAUABQAwERAAIRAQMRAf/EABoAAQACAwEAAAAAAAAAAAAAAAAFBwEGCAP/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAEAAAAAACRBHAAAFslnGSsyowACZOjzIBziQgAJ86KABzwa6AAXkbsDTyhwACVLnNtMGqFLkUAe50STIBghznY8AWSXAAYMmCoStQXobqAYANLKLP/EACAQAAICAgIDAQEAAAAAAAAAAAMFBAYCIAEQABIwFDH/2gAIAQEAAQUC+wF0qVxIXSovwr1Zxxw/nVgrOJMdU8b9bTR1F4htdEB+I7jSwmxO51rz7FiHp+9GtBquWHaGW1uIv7Z1yKy8YrDqzdgDnJKqXYK4mjVdg0iHBnGN1TIPvI2ucH0P1UQ8CTbW4PBU3n//xAAUEQEAAAAAAAAAAAAAAAAAAABg/9oACAEDAQE/AUn/xAAUEQEAAAAAAAAAAAAAAAAAAABg/9oACAECAQE/AUn/xAAvEAACAAMEBwcFAAAAAAAAAAABAgMEERIgITEAEBNCkbHBIjAyU2Fx8EFDUVJy/9oACAEBAAY/Au+BhS8R1O8Fw46ExZeIijeK4ce4EzOJaY+GEwy9TraZlFsOBVoQGDe16WhGhBepB/AxuzMJfCGqKfQHG7Ku2VqzxwuzTKai1TgKXhCjMomhh/frraGjWplhQAbvqb2zgjLNjkNA1nbxv3foNZemxjeYnUabOMM8mGRuLChqXdsABosFMTmzUzN1oL4HNWpkdHhRFsupoRriTTDsoLC+/wA534U0owfst7/OWtW8xix5dL7MftsGHLrq/8QAJhABAAECBQMEAwAAAAAAAAAAAREhYQAQIDFBUZHRMHGBsaHB8P/aAAgBAQABPyH1mFbAvnFmB2thX4vQA2Hfg9Hrbj32CEFDCTTBVu5KBw25+9JEAgsjUHYdMSBBRBQD4mNMkHRWP7aaRYTuC/Jq2japhEbL7yHScwVqLjWfwc6kI2E0p3cHvArHMNLBU97579X5HsP3TfAEZCa07OhbZ9WcLdFwTzPjSt03JPE+cNinhnHY1STXu2g1o9A6cbNm8mYRqs+4rrFGRj3Ncj//2gAMAwEAAgADAAAAEAAAAAAABAAAAIIAABJIAAIIBAABAAAAIBJAABJAIBJIIABIIIIP/8QAFBEBAAAAAAAAAAAAAAAAAAAAYP/aAAgBAwEBPxBJ/8QAFBEBAAAAAAAAAAAAAAAAAAAAYP/aAAgBAgEBPxBJ/8QAIhABAQEAAQUAAwADAAAAAAAAAREhMQAQIEGBMFFhkaGx/9oACAEBAAE/EPzWm7xT7IgHlWEbx1N2pkNhIqqAjt/BaF8xU5HK9Phr0gAAYBwdAVFEiPSqZRwBwv08CYkb5N1poDKPdFP70EIYeATNCpAKHAD8euPEHE7SKJLqYJX+Dzx187fOvnQEDhCYJv6U+Z5NPNvB0BJg0OWBh2WMZAWFhCURH+FTxbPVt9EkMqQAV3IKCrjQgdX1NB016fevvVEY8GZM/otXFBjps9W32SwWLEQTMiL3Gk0LU/0HtXAFcOgeWLCbpPXBVQArL4g8kGA3C+uSIopS3pSkj9E/6PI8Iic91bIQFik2rHjR7ieewoYDnW9qpZgN07mKrERGJnELt1e3zv8AO1hFYInFziNyaHb/2Q==" alt="Felix Schumacher"/></div><span class="avatar-with-name__name">Felix Schumacher</span></div><p class="lane-item--contributor__title">Apache JMeter committer, developer and Project Management Committee member</p><div class="profile-icons"><a class="icon-link--twitter" href="https://twitter.com/felschu"></a></div><div class="truncate__text lane-item__blurb"><div class="truncate__text"><div><div><p>Long term committer in JMeter project and Tomcat. </p><p>He has a diploma in mathematics, but found working in IT more appealing. </p><p>He really likes to work with open source, as it gives him the ability to dive into the inner workings of those magic things.</p></div></div></div></div></div></div></div></div></section></section><section class="about-testimonials"><section class="lane--testimonial"><div class="container--medium"><header class="lane__header--center"><h4><span>Reader Testimonials</span></h4></header><div data-item-count="4" class="lane__contents--testimonial lane__contents--center"><div class="LaneItem--TestimonialWrapper"><div class="LaneItem--Testimonial"><div class="LaneItem--Testimonial__UserDetails"><div class="avatar--small"><img class="avatar__image" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8IAEQgAUABQAwERAAIRAQMRAf/EABoAAQACAwEAAAAAAAAAAAAAAAAFBwEGCAP/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAEAAAAAACRBHAAAFslnGSsyowACZOjzIBziQgAJ86KABzwa6AAXkbsDTyhwACVLnNtMGqFLkUAe50STIBghznY8AWSXAAYMmCoStQXobqAYANLKLP/EACAQAAICAgIDAQEAAAAAAAAAAAMFBAYCIAEQABIwFDH/2gAIAQEAAQUC+wF0qVxIXSovwr1Zxxw/nVgrOJMdU8b9bTR1F4htdEB+I7jSwmxO51rz7FiHp+9GtBquWHaGW1uIv7Z1yKy8YrDqzdgDnJKqXYK4mjVdg0iHBnGN1TIPvI2ucH0P1UQ8CTbW4PBU3n//xAAUEQEAAAAAAAAAAAAAAAAAAABg/9oACAEDAQE/AUn/xAAUEQEAAAAAAAAAAAAAAAAAAABg/9oACAECAQE/AUn/xAAvEAACAAMEBwcFAAAAAAAAAAABAgMEERIgITEAEBNCkbHBIjAyU2Fx8EFDUVJy/9oACAEBAAY/Au+BhS8R1O8Fw46ExZeIijeK4ce4EzOJaY+GEwy9TraZlFsOBVoQGDe16WhGhBepB/AxuzMJfCGqKfQHG7Ku2VqzxwuzTKai1TgKXhCjMomhh/frraGjWplhQAbvqb2zgjLNjkNA1nbxv3foNZemxjeYnUabOMM8mGRuLChqXdsABosFMTmzUzN1oL4HNWpkdHhRFsupoRriTTDsoLC+/wA534U0owfst7/OWtW8xix5dL7MftsGHLrq/8QAJhABAAECBQMEAwAAAAAAAAAAAREhYQAQIDFBUZHRMHGBsaHB8P/aAAgBAQABPyH1mFbAvnFmB2thX4vQA2Hfg9Hrbj32CEFDCTTBVu5KBw25+9JEAgsjUHYdMSBBRBQD4mNMkHRWP7aaRYTuC/Jq2japhEbL7yHScwVqLjWfwc6kI2E0p3cHvArHMNLBU97579X5HsP3TfAEZCa07OhbZ9WcLdFwTzPjSt03JPE+cNinhnHY1STXu2g1o9A6cbNm8mYRqs+4rrFGRj3Ncj//2gAMAwEAAgADAAAAEAAAAAAABAAAAIIAABJIAAIIBAABAAAAIBJAABJAIBJIIABIIIIP/8QAFBEBAAAAAAAAAAAAAAAAAAAAYP/aAAgBAwEBPxBJ/8QAFBEBAAAAAAAAAAAAAAAAAAAAYP/aAAgBAgEBPxBJ/8QAIhABAQEAAQUAAwADAAAAAAAAAREhMQAQIEGBMFFhkaGx/9oACAEBAAE/EPzWm7xT7IgHlWEbx1N2pkNhIqqAjt/BaF8xU5HK9Phr0gAAYBwdAVFEiPSqZRwBwv08CYkb5N1poDKPdFP70EIYeATNCpAKHAD8euPEHE7SKJLqYJX+Dzx187fOvnQEDhCYJv6U+Z5NPNvB0BJg0OWBh2WMZAWFhCURH+FTxbPVt9EkMqQAV3IKCrjQgdX1NB016fevvVEY8GZM/otXFBjps9W32SwWLEQTMiL3Gk0LU/0HtXAFcOgeWLCbpPXBVQArL4g8kGA3C+uSIopS3pSkj9E/6PI8Iic91bIQFik2rHjR7ieewoYDnW9qpZgN07mKrERGJnELt1e3zv8AO1hFYInFziNyaHb/2Q==" alt="Software Testing Magazine"/></div><h6 class="LaneItem--Testimonial__Name">Software Testing Magazine</h6><p class="LaneItem--Testimonial__Title">A must have for every software tester working with JMeter</p></div><div class="truncate__text lane-item__blurb"><div class="truncate__text"><div><p>The book provides an impressive amount of knowledge on how to successfully use JMeter, from your first steps with the tool to its integration in a DevOps approach. ... This book is naturally a must have for every software tester working with JMeter, but it will also provide valuable knowledge and solution to every software tester or developer concerned with the performance of her or his application. Read full review at http://www.softwaretestingmagazine.com/knowledge/master-apache-jmeter/</p></div></div></div></div></div><div class="LaneItem--TestimonialWrapper"><div class="LaneItem--Testimonial"><div class="LaneItem--Testimonial__UserDetails"><div class="avatar--small"><img class="avatar__image" src="https://s3.amazonaws.com/testimonials.leanpub.com/avatars/723/small/Deepak_Shetty.png?1545910021" alt="Deepak Shetty"/></div><h6 class="LaneItem--Testimonial__Name">Deepak Shetty</h6><p class="LaneItem--Testimonial__Title">Performance Expert and JMeter committer (http://theworkaholic.blogspot.com/)</p></div><div class="truncate__text lane-item__blurb"><div class="truncate__text"><div><p>This book fills in the details for many of the problems that JMeter users run into - which is practical advice on how to use the various components of the extensible JMeter ecosystem. This book is a very good resource to developers and testers who have some exposure to testing and are now looking to get into the more advanced JMeter features and using tools that JMeter integrates with. </p></div></div></div></div></div><div class="LaneItem--TestimonialWrapper"><div class="LaneItem--Testimonial"><div class="LaneItem--Testimonial__UserDetails"><div class="avatar--small"><img class="avatar__image" src="https://s3.amazonaws.com/testimonials.leanpub.com/avatars/726/small/AnthonyGauthier.jpeg?1545981510" alt="Anthony Gauthier"/></div><h6 class="LaneItem--Testimonial__Name">Anthony Gauthier</h6><p class="LaneItem--Testimonial__Title">Software Developer, Performance Engineer, ElasticSearch backend listener author (https://www.github.com/delirius325)</p></div><div class="truncate__text lane-item__blurb"><div class="truncate__text"><div><p>As an active member of the community & a seasoned JMeter user, I believe this book should be a must have for any JMeter user-beginner or expert. As a beginner, it will show you all of what you need to know to successfully establish meaningful test scenarios. As an advanced user, it will be a nice reminder of what really should be in your tests as well as making you discover some JMeter features you've never really used. I highly recommend it to anyone involved in performance testing/engineering.</p></div></div></div></div></div><div class="LaneItem--TestimonialWrapper"><div class="LaneItem--Testimonial"><div class="LaneItem--Testimonial__UserDetails"><div class="avatar--small"><img class="avatar__image" src="https://s3.amazonaws.com/testimonials.leanpub.com/avatars/727/small/naveenkumar_n.jpg?1546071593" alt="NaveenKumar Namachivayam"/></div><h6 class="LaneItem--Testimonial__Name">NaveenKumar Namachivayam</h6><p class="LaneItem--Testimonial__Title">Performance test engineer https://QAInsights.com</p></div><div class="truncate__text lane-item__blurb"><div class="truncate__text"><div><p>If you are getting started with JMeter, then this book is for you; if you are already experienced in JMeter, then this book is also for you; Even if you are an expert in JMeter, then also this book is for you. It teaches both: performance testing and engineering concepts clearly with examples. After reading this book, you can load test a website, database, web services, integrate your scripts with your enterprise CI/CD pipeline. </p></div></div></div></div></div></div></div></section></section><section class="layer"><div class="container--large"><div class="container--small section-toc" id="toc"><header class="lane__header--center"><h4><span>Table of Contents</span></h4></header><div class="truncate__text"><div class="truncate__text"><div><div><ul class='toc no-parts'> <li> Copyright </li> <li> Presentation of the authors <ul> <li> Antonio Gomes Rodrigues </li> <li> Bruno Demion (Milamber) </li> <li> Philippe Mouawad (Philippe M.) </li> </ul> </li> <li> About the reviewers <ul> <li> Felix Schumacher </li> </ul> </li> <li> Preface by Alexander Podelko <ul> <li> Alexander Podelko bio </li> </ul> </li> <li> How to read this book <ul> <li> I just want to discover Apache JMeter </li> <li> There is nothing and I have to do everything </li> <li> I am joining a performance team </li> <li> I need to do a load test from scratch </li> <li> I need script load test </li> <li> I need to help developers to make load test </li> <li> I need to analyse and presents results from a load test </li> <li> I need to make shift left strategy </li> </ul> </li> <li> Quick start with JMeter <ul> <li> Our process </li> <li> Setup JMeter to record our browsing session </li> <li> Configure your browser </li> <li> Save our script </li> <li> Validate our script with only one user </li> <li> Setup our load test and launch it </li> <li> Run our load test and analyze it </li> </ul> </li> <li> JMeter overview <ul> <li> JMeter overview </li> <li> Types of load tests supported </li> <li> Supported test protocols </li> <li> Reporting </li> <li> Conclusion </li> </ul> </li> <li> Why is it still important to make load test today? <ul> <li> Why performance matters? <ul> <li> Better user experience </li> <li> Better SEO (Search Engine Optimization) </li> <li> Better conversion rate </li> <li> Reduce cost </li> </ul> </li> <li> What has changed in the last years and why it is not enough? <ul> <li> Provisioning a server is easiest with Cloud </li> <li> More powerful server </li> <li> Autoscaling is easy with Cloud/Kubernetes </li> <li> Canary release deployment </li> <li> Blue/Green deployment </li> <li> Feature Flipping allows to quickly disable a faulty feature </li> <li> Design for failure </li> </ul> </li> <li> Other reasons why it is still important to make load test today <ul> <li> Performance culture </li> <li> Don’t live with Broken Windows </li> <li> Put into production the healthiest application </li> <li> Fine tune as much as possible the architecture and application </li> <li> Understand the weak points of the application </li> <li> Reproduce a performance or multithreading issue detected in production to fix it </li> <li> Give business an idea of future response times when a new application goes live </li> <li> Anticipate Sales period </li> <li> Compare two versions of the same application </li> <li> Confirm/tune the alerting system </li> <li> Validate/improve monitoring (metrics, tools, dashboards, etc.) </li> <li> Find the soft limits of the AWS infrastructure </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Designing a test case <ul> <li> Introduction </li> <li> Define your goal </li> <li> Type of load test <ul> <li> Smoke Test </li> <li> Performance/Load Test </li> <li> Stress Test </li> <li> Breakpoint Test </li> <li> Soak/Endurance Test </li> <li> Failover/Resilience Test </li> <li> Spike Test </li> <li> Other </li> <li> Summary </li> </ul> </li> <li> Load model <ul> <li> Closed model vs Open model <ul> <li> Closed model </li> <li> Open model </li> <li> Why is it important to choose the right model? </li> </ul> </li> <li> Implementation in JMeter <ul> <li> Concurrency user (<em>Closed model</em>) </li> <li> Throughput (<em>Open model</em>) </li> <li> Arrivals rate (<em>Open model</em>) </li> </ul> </li> <li> Arrivals rate model <ul> <li> Poisson process with Precise Throughput Timer </li> <li> Constant arrival rate with Thread Group </li> <li> Constant arrival rate with Constant Throughput Timer </li> <li> Arrival rate with Open Model Thread Group </li> </ul> </li> <li> Think time <ul> <li> Constant think time with Constant Timer </li> <li> Uniform distribution think time with Uniform Random Timer </li> <li> Gaussian/Normal distribution think time with Gaussian Random Timer </li> <li> Poisson distribution think time with Poisson Random Timer </li> <li> All think time we want with JSR223 Timer </li> </ul> </li> </ul> </li> <li> Structure of a test case <ul> <li> Ramp Up </li> <li> Plateau/Step </li> <li> Ramp Down </li> <li> Example: step load test </li> </ul> </li> <li> Identify critical business scenarios to script <ul> <li> Frequent </li> <li> Vital/Business critical </li> <li> Technically risky </li> <li> Legally risky </li> <li> Brand image risk </li> <li> Summary </li> </ul> </li> <li> How many virtual users do I need? </li> <li> Identify Service Level Agreements (SLAs) <ul> <li> Why SLA? </li> <li> Identify SLAs, use case 1: SLAs already exists </li> <li> Identify SLAs, use case 2: SLAs don’t exist, but business has a clear idea of them </li> <li> Identify SLAs, use case 3: SLAs don’t exist and business does not have a clear idea of them </li> <li> Best practices </li> <li> Implement them in Apache JMeter </li> </ul> </li> <li> Parameters to take into account when creating a scenario <ul> <li> Vary user input data </li> <li> Reuse the same values </li> <li> Pre-calculate input data vs random input data </li> <li> Vary the type of users </li> <li> Vary and adjust think times </li> <li> Adjust the ramp up time </li> <li> Adjust the test duration </li> <li> Error handling </li> <li> User connection type </li> <li> Size of the scenarios </li> <li> Meeting point/rendez-vous </li> <li> Cookie Management </li> <li> Cache Management </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Important concepts in JMeter <ul> <li> Scoping </li> <li> Elements execution order </li> <li> How Timers scope works <ul> <li> Rule 1: Timers are executed before each sampler in their scope. </li> <li> Rule 2: If there is more than one timer in the scope, all the timers will be processed before the sampler. </li> <li> Control the execution order of <em>Timers</em> </li> </ul> </li> <li> How Assertions scope works <ul> <li> Rule 1: Assertions are executed after each sampler in their scope or to parent samplers </li> <li> Rule 2: Failed assertions cause the failure of the entire Transaction Controller </li> <li> Rule 3: Assertions can validate main sample and/or sub-samples </li> <li> Rule 4: Be careful with low performing assertions </li> <li> Our advice </li> </ul> </li> <li> How properties differ from variables <ul> <li> How properties are created </li> <li> How variables are created </li> <li> How ${} differs from ${_P} </li> </ul> </li> </ul> </li> <li> Preparing the test environment (injectors and tested system) <ul> <li> Introduction </li> <li> Prepare the injectors <ul> <li> Never host injectors on the same servers as the tested system </li> <li> Calibrating your test </li> <li> Monitor injectors </li> </ul> </li> <li> Prepare Apache JMeter <ul> <li> Use the latest version </li> <li> JMeter memory configuration </li> </ul> </li> <li> Prepare the network <ul> <li> IP Spoofing <ul> <li> Setting up <em>IP Spoofing</em>: </li> </ul> </li> <li> Avoid load testing behind a proxy </li> </ul> </li> <li> Prepare the tested system <ul> <li> A tested environment </li> <li> An environment consistent with the target </li> <li> Datasets </li> <li> Take into account calls to third party services </li> <li> Disable protection systems </li> <li> Isolated environment </li> <li> License Management </li> <li> Summary </li> </ul> </li> <li> Monitoring the tested system <ul> <li> Monitoring/profiling tools and their features <ul> <li> Overhead </li> <li> Metrics </li> <li> Logs </li> <li> Instrumentation </li> <li> Sampling </li> <li> Distributed tracing </li> <li> Memory monitoring </li> <li> Thread monitoring </li> <li> Exception monitoring </li> <li> Database monitoring </li> <li> Continuous Profiling/APM (Application Performance Monitoring) </li> <li> Network monitoring </li> <li> Events monitoring </li> </ul> </li> <li> Monitoring methodology <ul> <li> USE method (Utilisation, Saturation & Errors) </li> <li> RED method (Rate, Errors & Duration) </li> <li> Four Golden Signals (Latency, Traffic, Errors & Saturation) method </li> </ul> </li> <li> Our advice </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Being productive with JMeter <ul> <li> Introduction </li> <li> Before starting the recording of the script <ul> <li> Choose if static resources are important or not <ul> <li> Solution 1: Do not take them into account </li> <li> Solution 2: Let JMeter manage them </li> <li> Solution 3: Manage it ourselves </li> </ul> </li> <li> Apply a naming convention for transactions/requests </li> <li> Modify or learn keyboard shortcuts </li> </ul> </li> <li> Have a script base quickly <ul> <li> Pre-populate HTTP Request Defaults before recording the script </li> <li> Use the HTTP(S) Test Script Recorder element </li> <li> BlazeMeter Chrome Extension </li> <li> Use Tools / Import from cURL </li> <li> Import requests from HAR file </li> <li> Recording HTTPS website </li> </ul> </li> <li> Save time when working on the script <ul> <li> Global Assertion </li> <li> Re-Use script parts </li> <li> Share an object between different Thread Groups </li> <li> Get the most out of CSV files <ul> <li> The different modes/options of CSV reader </li> <li> CSV file and JSON content </li> <li> Data coming from several CSV files </li> <li> CSV and Groovy </li> </ul> </li> <li> Using Regular Expression Extractor on content with spaces and multiple lines </li> <li> Add headers to our HTTP requests </li> <li> Waiting with While Controller <ul> <li> Wait for the end of execution: example 1 </li> <li> Wait for the end of execution: example 2 </li> <li> Wait for three products to be added to the cart. </li> <li> Exit from While if the last action returns an error. </li> </ul> </li> <li> The right Extractor at the right time </li> <li> Handle cookies </li> <li> Set HTTP status code 404 as success in JMeter </li> </ul> </li> <li> Debugging a script <ul> <li> Using View Results Tree </li> <li> Capture errors </li> <li> Debug Sampler </li> <li> jp@gc - Dummy Sampler </li> <li> Log Viewer </li> <li> BlazeMeter Step-by-step Debugger </li> <li> The old-fashioned way in the console </li> <li> Use a third-party tool </li> </ul> </li> <li> Finalise a script <ul> <li> Change the name of a transaction according to a parameter </li> <li> Mark a response as an error </li> <li> Execute an action based on the status of the previous one </li> <li> Use timeouts </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Load Testing a website <ul> <li> A bit of theory </li> <li> Set up with JMeter </li> <li> Methodology </li> <li> Put into practice with JMeter <ul> <li> Example 1: Find a owner in Spring PetClinic application <ul> <li> Our scenario to script </li> <li> The recording </li> <li> Step 1: Work on “Go to the home page” </li> <li> Step 2: Work on “Do a search on the owner of a pet” </li> <li> Step 3: Work on “View the details of the owner” </li> </ul> </li> <li> Example 2: Add an owner/Display last owner in Spring PetClinic application <ul> <li> Step 1: Add an owner </li> <li> Step 2: Display last owner </li> </ul> </li> <li> Example 3: Technical tests with Byteman </li> <li> Example 4: Technical tests with JProfiler </li> <li> Example 5: Tricking captchas with a Java Request </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Load Testing web services <ul> <li> What we will learn </li> <li> A few concepts <ul> <li> REST (REpresentational State Transfer) web services </li> <li> GraphQL (Graph Query Language) </li> <li> REST vs GraphQL </li> </ul> </li> <li> Set up with JMeter <ul> <li> Tips </li> </ul> </li> <li> Methodology </li> <li> Practice with JMeter <ul> <li> Load test a REST web service: Spring PetClinic REST </li> <li> Load test a GraphQL web service: Spring PetClinic GraphQL </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Load Testing a database server <ul> <li> A bit of theory </li> <li> Methodology </li> <li> Setup with JMeter </li> <li> Putting theory into practice with JMeter <ul> <li> Example 1: Load test of a database <ul> <li> Avoiding duplication using Include Controller </li> <li> Avoiding duplication using Module Controller </li> </ul> </li> <li> Example 2: Studying indexes impact on performance </li> <li> Example 3: ETL </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Load Testing Message Oriented Middleware (MOM) via JMS <ul> <li> What we will learn </li> <li> A bit of theory <ul> <li> Asynchronous messages </li> <li> Decoupling <ul> <li> Technology decoupling </li> <li> Geographical Decoupling (<em>Location transparency</em>) </li> <li> Time decoupling </li> </ul> </li> <li> Back pressure </li> <li> Communication models </li> <li> Types of delivery semantics <ul> <li> At Most Once </li> <li> At Least Once </li> <li> Exactly Once </li> <li> Summary </li> </ul> </li> <li> What is a message composed of? </li> </ul> </li> <li> Set up with JMeter <ul> <li> Installation of MOM libraries </li> <li> JMS Point-to-Point <ul> <li> JMS Resources and JNDI Properties </li> <li> Communication style </li> <li> Priority </li> <li> Use non-persistent delivery mode? </li> <li> JMS Selector </li> <li> Example with Apache ActiveMQ Classic </li> </ul> </li> <li> Publish/Subscribe <ul> <li> JMS Publisher </li> <li> JMS Subscriber </li> </ul> </li> </ul> </li> <li> Methodology </li> <li> Put into practice with JMeter <ul> <li> Example 1: Test the configuration of a MOM server with point-to-point </li> <li> Example 2: Test the performance of our consumer with JMS Publish/Subscribe </li> <li> Example 3: Testing the configuration of a MOM server with Publish/Subscribe </li> <li> Example 4: Test any MOM </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Performing a load test <ul> <li> Introduction </li> <li> Methodology </li> <li> Before the execution of the load test <ul> <li> Testing your script/dataset with the graphical interface </li> <li> Check the injectors </li> <li> Be careful with the use Extractors to avoid injection problems <ul> <li> Regular Expression Extractor </li> <li> XPath Extractor </li> <li> Extractor performances </li> </ul> </li> <li> Be careful with the use Assertions to avoid injection problems </li> <li> Be careful with the use of custom scripting to avoid injection problems </li> <li> Generate reports at the end of the test </li> </ul> </li> <li> Execute load test <ul> <li> Running your test from the command line </li> <li> Running your test on the command line with Taurus </li> <li> Running your test from Apache Maven </li> <li> Running your test from Jenkins </li> <li> Running your test from Apache Ant </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Visualising, analysing and reporting the load testing results <ul> <li> Introduction </li> <li> What we will learn </li> <li> Prepare our analyse <ul> <li> Have data to analyse </li> <li> Have RAW data </li> <li> Having the right granularity on the data </li> <li> Have enough data to analyse </li> <li> Have the right definition of metrics </li> </ul> </li> <li> Visualising <ul> <li> Visualising the results with listeners <ul> <li> View Results Tree <ul> <li> Sampler result tab </li> <li> Request tab </li> <li> Response data tab </li> </ul> </li> <li> Summary Report </li> <li> Aggregate Report </li> <li> Backend Listener </li> <li> Report Dashboard </li> <li> Particularities of the visualization of results for a distributed load test before JMeter 5.0 </li> </ul> </li> <li> Visualizing the results with PaaS load testing tools <ul> <li> Redline13 </li> <li> Blazemeter </li> </ul> </li> <li> Visualizing the results with third party visualizing tools </li> </ul> </li> <li> Analyse the results <ul> <li> Methodology <ul> <li> Example 1: High response time and Low CPU/memory/network/io disk usage </li> <li> Example 2: High response time and High CPU usage </li> </ul> </li> <li> Some tips to analyse the results <ul> <li> Check response time distribution </li> <li> Check for spurious events (errors and bad response time) </li> <li> Worrying About Your Tail </li> <li> Be careful with response time at beginning of the load test </li> <li> Have separate statistics for failed and successful response times </li> </ul> </li> <li> Some examples <ul> <li> Is the application support increasing number of clients? </li> <li> Is errors having an impact in response time? </li> <li> Is Garbage Collector (GC) is optimal? </li> <li> Is my application is CPU bound? </li> <li> Is my application is memory bound? </li> </ul> </li> </ul> </li> <li> Reporting <ul> <li> Prepare the reporting <ul> <li> Who is the target of the report? </li> <li> What is the purpose of the report </li> <li> Don’t expose sensitive information </li> </ul> </li> <li> Methodology </li> <li> Structure our load test report </li> <li> Choose the right chart types <ul> <li> Don’t use pie charts </li> <li> Prefer bar graphs when we have sparse metrics </li> <li> Present errors with toplist </li> <li> Timeseries graphs and single-value summaries </li> <li> Consider box plot for response time </li> </ul> </li> <li> Choose the right key metrics <ul> <li> Define the number of metrics to display in a time series line graphs </li> <li> Same key metrics in report and in SLAs/load model </li> </ul> </li> <li> Choose the right data aggregation <ul> <li> Prefer percentiles over average </li> <li> View aggregated data by phase </li> <li> Don’t average percentiles </li> <li> Define the resolution/granularity of the measures </li> </ul> </li> <li> Choose the correct display for the chart <ul> <li> Don’t forget to add clear labels, legends and units in graphs </li> <li> Axis Forced 0 </li> <li> Make sure data can be easily seen </li> <li> Add annotations for important events </li> <li> Add Thresholds in graph </li> </ul> </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Integration of JMeter in the DevOps tool chain <ul> <li> Introduction </li> <li> Why </li> <li> Organization/team topology <ul> <li> Load testing team in its ivory tower </li> <li> DevOps and load test team collaboration </li> <li> One performance tester integrated on DevOps team </li> <li> No performance tester </li> <li> Team of evangelist’s performance testers </li> </ul> </li> <li> Questions to ask before automation and Shift-Left strategy <ul> <li> Question 0: Which tool? </li> <li> Question 1: How many times do we need to create and maintain scripts? </li> <li> Question 2: How can we stabilize the test environment (injectors and tested system) to allow us to compare results? </li> <li> Question 3: How long should a test take? </li> <li> Question 4: When do we need to execute automated load test? </li> <li> Question 5: Do we have someone to analyze the load test results? </li> <li> Question 6: When is it acceptable to slow down one part of the application to speed up another? </li> <li> Question 7: How to detect slow performance degradation? </li> <li> Question 8: How to evaluate the effectiveness of load tests? </li> <li> Question 9: How to choose threshold alerting and avoid false positive? </li> <li> Question 10: Can we have a production-like environment for exclusive use? </li> <li> Question 11: Do we need to inject huge amounts of test data before the test? </li> <li> Question 12: Do we need to wait for someone before the test? </li> <li> Question 13: How to load test new features? </li> <li> Question 14: How to maintain a realistic workload? </li> <li> Question 15: How to handle dependencies on external systems? </li> <li> Question 16: How to reduce organisational resistance? </li> <li> Question 17: How to justify the cost? </li> </ul> </li> <li> Setting up Shift-Left strategy <ul> <li> Modification in JMeter script to implement Shift-Left strategy </li> </ul> </li> <li> Integrating JMeter in our software factory <ul> <li> Integrating with Jenkins using Maven <ul> <li> Ensuring the load tests are run on the correct nodes <ul> <li> Configuring the load test using jmeter-maven-plugin </li> <li> Fail the build if error rate of load test is over a threshold </li> <li> Configure HTML report </li> <li> Configure memory used by JMeter </li> </ul> </li> </ul> </li> <li> Enhancing integration with Jenkins using Performance Plugin </li> <li> Integrate JMeter with APM monitoring tools </li> </ul> </li> <li> Automation <ul> <li> Example 1: Non-regression testing of memory consumption with EJ JProfiler </li> <li> Example 2: Detecting a Memory leak during an endurance test with EJ JProfiler </li> <li> Example 3: Retrieving SQL queries executed during a load test with YourKit Java Profiler </li> <li> Example 4: Analysis of the Garbage Collector (GC) log file with GCViewer </li> </ul> </li> <li> Conclusion </li> </ul> </li> <li> Old Stuff <ul> <li> Introduction </li> <li> Load testing web application Java EE 6 Pet Catalog </li> <li> Load test a SOAP/XML-RPC web-service <ul> <li> WS-* web services </li> <li> In JMeter </li> <li> REST Web-Service: Discussion Forum </li> </ul> </li> <li> Load test a REST web service: Customer Database </li> <li> Example 7: Non-regression testing of Web APIs with Dynatrace APM AppMon <ul> <li> Registering to Dynatrace using setup Thread Group </li> <li> Using the testId in other Thread Group </li> </ul> </li> </ul> </li> <li> What’s new <ul> <li> 2024/11/29 release <ul> <li> Chapter “Designing a test case” </li> <li> Chapter “Load Testing web services” </li> <li> Chapter “Preparing the test environment (injectors and tested system)” </li> <li> Chapter “Quick start with JMeter” </li> <li> Chapter “Performing a load test” </li> <li> Chapter “JMeter overview” </li> <li> Chapter “Why is it still important to make load test today?” </li> <li> Chapter “Load Testing Message Oriented Middleware (MOM) via JMS” </li> <li> Chapter “Visualising, analysing and reporting the load testing results” </li> <li> Load Testing a website </li> <li> Chapter “Old Stuff” </li> </ul> </li> <li> 2020/04/28 release <ul> <li> Chapter “Designing a test case” </li> <li> Chapter “Preparing the test environment (injectors and tested system)” </li> <li> Chapter “Why is it still important to make load test today?” </li> <li> New chapter “What’s new” at the end of the book </li> </ul> </li> </ul> </li> </ul> </div></div></div></div></div></div></section><section class="about-other-books"><section class="lane--book"><div class="container--medium"><header class="lane__header--center"><h4><span>Other books by these authors</span></h4></header><div data-item-count="1" class="lane__contents--book lane__contents--center"><div class="lane-item--book "><div class="book-cover s_featured "><a tabindex="0" href="/maitriser-jmeter-du-test-de-charge-a-devops"><img src="https://d2sofvawe08yqg.cloudfront.net/maitriser-jmeter-du-test-de-charge-a-devops/s_featured?1620444366" style="width:auto;height:auto"/></a></div><div class="lane-item__text-wrapper"><div class="lane-item--book__title"><a href="/maitriser-jmeter-du-test-de-charge-a-devops">Maîtriser Apache JMeter</a></div><div class="lane-item--book__author"><div class="names"><a class="link" href="https://leanpub.com/u/antoniogomesrodrigues">Antonio Gomes Rodrigues</a><span>, </span><a class="link" href="https://leanpub.com/u/milamber">Bruno Demion (Milamber)</a><span>, and </span><a class="link" href="https://leanpub.com/u/pmouawad">Philippe Mouawad</a></div></div></div></div></div></div></section></section><div class="happiness-guarantee" id="happiness-guarantee"><div class="container--large"><h3 class="hg-title"><span>The Leanpub 60 Day 100% Happiness Guarantee</span></h3><p><span>Within <strong>60 days of purchase</strong> you can get a <strong>100% refund</strong> on any Leanpub purchase, in <strong>two clicks</strong>.<br/><br/>Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.<br/><br/><em>You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!</em><br/><br/>So, there's no reason not to click the Add to Cart button, is there?<br/><br/><a href="/refunds">See full terms...</a></span></p></div></div><div class="royalties-counter--dark section--earth-green" id="royalties-counter"><div class="container--small"><h3 class="royalties-counter-title"><span>Earn $8 on a $10 Purchase, and $16 on a $20 Purchase</span></h3><h4 class="royalties-counter__string"><span>We pay <strong>80% royalties</strong> on purchases of <strong>$7.99 or more</strong>, and <strong>80% royalties minus a 50 cent flat fee</strong> on purchases between <strong>$0.99 and $7.98</strong>. <strong>You earn $8 on a $10 sale, and $16 on a $20 sale</strong>. So, if we sell <strong>5000 non-refunded copies of your book for $20</strong>, you'll earn <strong>$80,000</strong>.<br/><br/><em>(Yes, some authors have already earned much more than that on Leanpub.)</em><br/><br/>In fact, authors have earned<span class='royalties-counter__price'><a href='/authors'>over $14 million</a></span>writing, publishing and selling on Leanpub.<br/><br/><strong><a href='/authors' class='link'>Learn more about writing on Leanpub</a></strong></span></h4></div></div><div class="free-updates"><div class="container--small"><h3 class="free-updates-title"><span>Free Updates. DRM Free.</span></h3><p><span>If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).<br/><br/>Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.<br/><br/>Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.</span></p><p><a href="https://help.leanpub.com/reader-help/what-formats-do-leanpub-books-come-in"><span>Learn more about Leanpub's ebook formats and where to read them</span></a></p></div></div><div class="become-an-author"><div class="container--small"><h3 class="baa-title"><span>Write and Publish on Leanpub</span></h3><p><span>You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!<br/><br/>Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.<br/><br/>Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.</span></p><p><a href="/authors"><span>Learn more about writing on Leanpub</span></a></p></div></div></article><div class="footer"><div class="container--small"><div><h1 class="footer-logo"><a href="/"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAACGCAYAAACL3YV2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACt5JREFUeNrsXe1x2zgQpTL+L3VgXgVmKhCvgigVWKkgugosV+CkAtkVyKlAdAViKhBdgZQKdMDdMoNoKIkA8Y33ZjiyE1kCFvv27QIgkWUAAAAAAAAAAAAAAAAAAAAAAAAAAABAXBjF2Knj8Viwlwm7SvqnW3blwlvyk99bNHSJv7+z68Cumv8+Go0az/ve9q21wdC+c1TcBqzvNQjg12C3Ts4H+45ecwtfXZGDvHFiuHIMcnbe/yn1u7TwtQ0Fg5/0WrH+H0AA+wNeWnL2vk5RESFeTTkEEX7mef8r31UyKAJQOnMvRPoQ8MquF+YIr5psMCMbzALpf02EePE9bRp56vSlMOCTgLM0rgTf2fUsGxVJ7ebs+hqBDdqAUIEA1wf83iNp14lndj1eIwLZ4YFsERt4319UAkK0BCB5/2qpgPMB34gIh478njv+IhE7cDX4ritNDIoAQjH3EGm075MWcBJ8I3ssyBaTBG3BleDR5OSBNwQgx19EkNfqjIJZQurXp176ZpMIIzg+kDIRbBFgl2iqAwxIjRgB/gqeADSPv/XAoDVFF463K+8Vtw+Enp5UQq79fuW9U3rlKu3DmstH0+sINxY6YTPlabI/l+kPOuaeKYUriAx39OpbKncgZ/9Jr7WOFILWZNr+29xuYsV3bCjAnL2sDEa3N50DLqls3DnuHUZLTnI+r17ZXHE9CQhTgyr5hfXrOWj9ZcZaHvVhx64niko+9TGnfu6O5rGj78o9s0FJY6PTBsvgKxnWiZWGAV/4NuCXFI9dGwOOvyE1DcEGOY3ZUDKsTLfVRgq0UZDIdv/Idx3SLkj2aVE7PpO+vJ0Wz7K1BKnUSkO+3FAqUCn097SY5enKP5bTJf79fPpbZV8XT+3+Dl0BdpLRfk4DqOToJMVLUp6NgfRjTdGt6Nkm/t69wnftaYW4l5NRn9c9vqt05AcTGlspf4ghBTKW8wlG5c6+PdpHW5MUPdq5lvjc9bUgwPdQUb9lyVU69gepmjB0588lB2chEe1cOPwg9aL/31+J+vMexfZ+QDtnjn1iIdnePGQClDqik+VZlqHYU1snFwjcRd7tOSWh/q80tW8Zg0+EQoC5ZGeLriL6GCbO5vAdKVFnykPve9LcLtcEKCTba3Tm64Ph/krJ1+nshHAPcIjgDv3UFdn5gh27Pmf/3yTDbw753HF/AE9VeBEY1f0BCjNQecgEGEtOfVrtvCX8txeqK/IyZ+DTm1+61IH9uM7i3Tl7MORD3hFAZotAHSkBWjxQOje5Mme+zcze/D71wBa1IR/yjgBDI1hMBMgondueqXV4rrvJsG1ctw8FowBdW5RvIxxQ7uAbkQTChsFUbhZ6M+RD0jC2HVp1NTdyBRCjGifB3zTAqwy46EumdvqaVABZ5lYJEeA3CRw4f+lB3yvDvuQFAaAAjvNb2CkgBTjd7Rj0EjggNdaxKgCiP+A9TBJAZr65AgGsFpWh1QHTEAkABQCSVgCZKJPKGgBwecx1+BIUAACcEkAhx6xBAKvwoQaoDftUUApwAAGSgxfnipkiwCAFwBpAEqgN+1Q4CtCxzwMEiBy+nCxpigB3AyMBtgiYxdSTdtSGfMo5AWQcuCsSFPBR1AE2gqIpAgy9E2wM30AdYCMo+qAAv6AAyeJXdArQ95GBAhrUANZRetKOxrBvOVGAiQYjQAHSQGPYt5wQYJACaLqVEoiTAPEpQMeJ4Yj+iUDhtPggFOB2YASAAliAR8/cbAz5ljMC5Mj/AUMEyFMgANYAQIBkCPAOBUge79EQQGEX5wE1gDP4UgMcDPuYVQWQbVwNBUgeTh+X7poAp8/ER/RPD4dkCdBxWAKif2JwfWCGbgLcDmQ+FMAeph615WDIx7xWAOT/gEod4LUCDL0RBmsAqAN0+ph1AshE8J9QAOCCL+jwMXsEUJjBQQ3gFmWgCqB1tlCnAsgyEzUAoFIDaPUTnQQYxEqsAQAu6gBnCtBxSAKif6JweWCGTgKMfWE10Ft1y0CbPvaRADKsrJD/Az18IigFAIDgoJMAMnLadTjCFMORNJwcmAEFSBtl6gbQQgCFYqrCYAADagBtBTwUAIACOJDS2gSbgaDh5MAMJwrgy+EIgJln7ofkE7oIMB3IdCiAG/i2+Fgb8jmvFADRH/DGN3QRYOiBGFgDAGQVoPCJAEMPxADcwLftJ9YPzBhMAIVDC1ADoAbQoQBaDsz44MCIqAEAXb4x8YEAgxQAawCAqgLoSOGsKwDWAPyCiXO3VKHgG14ogMxiSoP8H3WAgo/o8D0vFKCBvwEafSS4GqCrc1gDAFQJkIemAO8YX+/g21rAezAEUDisADUAagCtafLQAzNuBjY2N9k5A4ZthJ+vRZqxEB3zzMDxPIbBpxQPdF169GAVMgFoXJogCWBgDaB18jfh51rX1CtFm5xU65Zecw8cvSJC1zr7GxABwlAAhYORr6EiZ69sDDy1vxGjJj3RjhPhkyVCtA7/Q+GBUt6D25jZNBgCDD0Qo1QY/B/cAXwZfCLdK13twtI9u2YaycD7/cK/w0AQ8REHidrk1lkr2WBvjv2x6fj7ZY+/W7Nroft0QKENBU/FTHw+fe7qqIY9u54MtSs31Wcf/MrXFKhLAe50RzxKSQq6JhQh8j6K0yG9bSHZCDl20/dcK1Kpin3uI3uds+trj8jGv+uR+i772PCC+loI/Z5kF6Y6z6Qb1clkwcFyfXEw5IPamSqD5RWmtxGvkIxkM/q7DX2GLWxIwWYy5KS/6Wrnjl1zSfvP6PM2Fvu9p+97ou83oVBLmQa5cv6JpOEWHZ/BjbntO/Dk8HNKK3ZHv7Cmtk162m4lONRSwuZz+i6fsKP+zHUQglJeGUxcEKCUbGR5RrL75OhLIkooWPdRBiL0pGekXwfU/y2NWeHKt2wQYCbZSNnU5snDKK8SGZcqEUpIl2KwgVQxT0FPBjMXBNCapwnyvj3Gh31fIlypE0LHViJNHFRf9sWQvUBjTUTibF+xH3fsWmVxnhPAB/yB9/EcEVrHJzs8ZHEeGFLQGLc1g66xHrtQAOW52sijfd+0YHaSTu4StUWnKthaC7gZGNWkF2BoLnyepX0kErcDL2pf6fdZwrZoVYHXCc/s9bvCareyL42GrAFIvL3qsxAFAKr+wkgz8pkAAGAUqgS4UXT+kCJ5Q9fpvvjqQnrSTtm12wmKAFO2dvsC73t770O7taML4pjeUX9FW3gN7pMqGyRvIgoC7YC/ZZJ7dnoauN32zMkw9TCdq4S+Vwp7dqoLfRf3GE0DDQj6UiCarnvwILK3g17Z3iZMhODF6yeHRSwvovn28FfbN8HQhEYpBAPXSvHIbLC01fmlwymzhU8Pc2rJQFN5O0tTqL0WkyzboKCxcTW1vbTZ2Y0Dpw8mFzVkn00otRdtZbFNhk1MBDB2M4hlIuw0RfwyYDu0+7r2MRHA5B77eUzTcwP29eytyrodW8xNBs+QCbA+RvyUaIqCG8lAkEdsj9LE9m6bxY6uNGcV80ArTh4sE7JHTj6gKz0qbLHXyp1TkQ767MyA753sa/drFm2oKpQ2GrtQKOJWKTv9GRXdnzh/Acv8QYaVwiTCQvb7VFaCLzlxk/35ZLYqkefYSIGvULPB+sh+XNM/fYadftuGL+g90yUuuPHXaXZ5e4Z0gB0pMLSrAQ0GUC3aCYMOwA8BAAAAAAAAAAAAAAAAAAAAAAAAQA/+FWAAV/eYy/UR7lcAAAAASUVORK5CYII="/></a></h1><h3 class="footer-slogan">Publish Early, Publish Often</h3></div><div><ul class="footer-list-break"><li><h5 class="footer-headings">Path</h5></li><li><div class="footer-descriptions-top">There are many paths, but the one you're on right now on Leanpub is...</div></li><li><div> › Master-jmeter-from-load-test-to-devops</div></li></ul></div><div class="footer-links"><ul class="footer-list"><ul class="footer-columns"><li><h5 class="footer-headings">READERS</h5></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Newsletters</h5></li><li><a href="/newsletters">Weekly Sale</a></li><li><a href="/newsletters">Monthly Sale</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Store</h5></li><li><a href="/">Home</a></li><li><a href="/redeem">Redeem a Token</a></li><li><a href="/bookstore/book?search">Search</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Support</h5></li><li><a href="https://help.leanpub.com/en/articles/3788293-the-leanpub-faq">Leanpub FAQ</a></li><li><a href="https://help.leanpub.com/en/articles/4405350-leanpub-author-faq">Leanpub Author FAQ</a></li><li><a href="https://help.leanpub.com/en/">Search our Help Center</a></li><li><a href="https://help.leanpub.com/en/articles/110768-if-i-can-t-find-an-answer-to-my-question-in-this-help-center-what-should-i-do">How to Contact Us</a></li></ul><ul class="footer-columns"><li><h5 class="footer-headings">FRONTMATTER PODCAST</h5></li></ul><ul class="footer-list-break"><li><a href="/podcasts/featured">Featured Episode</a></li><li><a href="/podcasts/frontmatter">Episode List</a></li></ul><ul class="footer-columns"><li><h5 class="footer-headings">MEMBERSHIPS</h5></li></ul><ul class="footer-list-break"><li><a href="/reader_memberships">Reader Memberships</a></li><li><a href="/departmentmemberships">Department Reader Memberships</a></li><li><a href="/author_memberships">Author Memberships</a></li><li><a href="/membership">Your Membership</a></li></ul><ul class="footer-columns"><li><h5 class="footer-headings">COMPANY</h5></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">About</h5></li><li><a href="/about">About Leanpub</a></li><li><a href="/blog">Blog</a></li><li><a href="/contact">Contact</a></li><li><a href="/press">Press</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Essays</h5></li><li><a href="/ai_services">AI Services</a></li><li><a href="/imagine_a_world">Imagine a world...</a></li><li><a href="/manifesto">Manifesto</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">More</h5></li><li><a href="/partner_program">Partner Program</a></li><li><a href="/causes">Causes</a></li><li><a href="/accessibility">Accessibility</a></li></ul></ul><ul class="footer-list"><ul class="footer-columns"><li><h5 class="footer-headings">AUTHORS</h5></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Write and Publish on Leanpub</h5></li><li><a href="/create/book">Create a Book</a></li><li><a href="/create/course">Create a Course</a></li><li><a href="/course_set_admin/leanpub/course_sets/new">Create a Track</a></li><li><a href="/testimonials">Testimonials</a></li><li><a href="/authors">Why Leanpub</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Services</h5></li><li><a href="/course_ai/buy">CourseAI</a></li><li><a href="/translate_ai/buy">TranslateAI</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Author Newsletter</h5></li><li><a href="/newsletters">The Leanpub Author Update</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Author Support</h5></li><li><a href="https://help.leanpub.com/author-help">Author Help Center</a></li><li><a href="https://community.leanpub.com/c/authors">Leanpub Authors Forum</a></li><li><a href="https://leanpub.com/manual/read">The Leanpub Manual</a></li><li><a href="/help/supported_languages">Supported Languages</a></li><li><a href="https://leanpub.com/lfm/read">The LFM Manual</a></li><li><a href="https://leanpub.com/markua/read">The Markua Manual</a></li><li><a href="/help/api">API Docs</a></li></ul><ul class="footer-list-break"><li><h5 class="footer-list-title">Organizations</h5></li><li><a href="/organizations">Learn More</a></li><li><a href="/p/register">Sign Up</a></li></ul><ul class="footer-columns"><li><h5 class="footer-headings">LEGAL</h5></li></ul><ul class="footer-list-break"><li><a href="/terms">Terms of Service</a></li><li><a href="/takedown">Copyright Policy</a></li><li><a href="/privacy">Privacy Policy</a></li><li><a href="/refunds">Refund Policy</a></li></ul></ul></div><p class="footer-copyright">* * *</p><p class="footer-copyright">Leanpub is copyright © 2010-<!-- -->2024<!-- --> <a href="http://ruboss.com">Ruboss Technology Corp.</a><br/>All rights reserved.</p><p class="footer-copyright">This site is protected by reCAPTCHA<br/>and the Google <a rel="noopener noreferrer" target="_blank" href="https://policies.google.com/privacy">Privacy Policy</a> and <a rel="noopener noreferrer" target="_blank" href="https://policies.google.com/terms">Terms of Service</a> apply.</p></div></div></div></div><ul class="react-flash-container"></ul><div class="modal-wrapper"></div><span></span></div></div> <div class='cookies-banner alert alert--info' style='display: none'> Leanpub requires cookies in order to provide you the best experience. <a class='dismiss link'>Dismiss</a> </div> <script type='text/javascript'> window.addEventListener('load', function() { var shouldShowCookies = document.cookie.indexOf('should_show_cookies') !== -1 if (shouldShowCookies) { var banner = document.querySelector('.cookies-banner') // IE < 9 check if (banner.style.removeProperty) { banner.style.removeProperty('display'); } else { banner.style.removeAttribute('display'); } document.querySelector('.cookies-banner').classList.add('shown') // Note that we have to use vanilla JS here because ujs (remote links) code doesn't live in the react app, and i don't // want to have to write this shit twice. document.querySelector('.cookies-banner .dismiss').addEventListener('click', function() { document.querySelector('.cookies-banner').remove() var xhr = new XMLHttpRequest() xhr.open("POST", "/api/v1/accepted_terms/dismiss_cookies", true); xhr.send() }) } }) </script> </body> <script charSet="UTF-8" data-reactroot="">window.__data={"AdminFlag":{"all":{},"errors":{},"indexes":{},"loading":{}},"Answer":{"all":{},"errors":{},"indexes":{},"loading":{}},"Asset":{"all":{},"errors":{},"indexes":{},"loading":{}},"Author":{"all":{"32383":{"type":"Author","cause_royalty_percentage":"0.0","created_at":"2015-10-18T19:51:29.000Z","name":"Philippe Mouawad","position":2,"profile_blurb":"\u003Cp\u003EPhilippe Mouawad is a technical expert and architect in J2E and Web environments within the company \u003Ca href=\"https:\u002F\u002Fwww.ubik-ingenierie.com\u002F\" target=\"_blank\"\u003EUbik-Ingenierie\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\u003Cp\u003EHe has been using JMeter since 2009 as part of performance improvements missions, load testing of intranet or e-commerce websites and trainings on JMeter.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe has been contributing to JMeter since 2009 first through patches and then as a 'committer' and member of Project Management Committee at Apache.\u003C\u002Fp\u003E\u003Cp\u003EAmong his main contributions, the \u003Cstrong\u003ECSS selector Extractor\u003C\u002Fstrong\u003E, the \u003Cstrong\u003EBoundary Extractor\u003C\u002Fstrong\u003E, the \u003Cstrong\u003EBackend Listener\u003C\u002Fstrong\u003E (allowing to interface among others \u003Cstrong\u003EGraphite\u003C\u002Fstrong\u003E, \u003Cstrong\u003EInfluxDB\u003C\u002Fstrong\u003E or \u003Cstrong\u003EElasticSearch\u003C\u002Fstrong\u003E),\u003C\u002Fp\u003E\u003Cp\u003Epart of the Web reporting feature and the optimization of the performances of the core, its stabilization and various ergonomic improvements, to his credit more than 400 bugs\u002Fimprovements.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe also contributes to the \u003Ca href=\"https:\u002F\u002Fjmeter-plugins.org\u002F\" target=\"_blank\"\u003EJMeter-Plugins\u003C\u002Fa\u003E project, among his contributions are \u003Cstrong\u003ERedis DataSet\u003C\u002Fstrong\u003E, \u003Cstrong\u003EGraphs Generator Listener\u003C\u002Fstrong\u003E and various patches to different plugins.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe also manages the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjmeter-maven-plugin\u002Fjmeter-maven-plugin\" target=\"_blank\"\u003EJMeter Maven Plugin\u003C\u002Fa\u003E project, he has been managing it since version 2.3.0 ensuring its compatibility with last JMeter releases and improving its\u003C\u002Fp\u003E\u003Cp\u003Edependencies management and reporting mechanism.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe is currently a committer and a PMC member of the \u003Ca href=\"https:\u002F\u002Fjmeter.apache.org\u002F\" target=\"_blank\"\u003EJMeter project\u003C\u002Fa\u003E within the \u003Ca href=\"http:\u002F\u002Fwww.apache.org\u002Ffoundation\u002Fhow-it-works.html#what\" target=\"_blank\"\u003EApache Software Foundation\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\u003Cp\u003EHis Apache ID is \u003Ca href=\"http:\u002F\u002Fpeople.apache.org\u002F~pmouawad\u002F\" target=\"_blank\"\u003Epmouawad\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe is also a lead developer of the \u003Ca href=\"https:\u002F\u002Fubikloadpack.com\" target=\"_blank\"\u003EUbik Load Pack\u003C\u002Fa\u003E solution, a set of Enterprise Plugins which provides support for protocols that are not natively supported by JMeter.\u003C\u002Fp\u003E\u003Cp\u003EFinally, he contributes to the \u003Ca href=\"https:\u002F\u002Fwww.ubik-ingenierie.com\u002Fblog\u002F\" target=\"_blank\"\u003EUbik-Ingenierie blog\u003C\u002Fa\u003E.\u003C\u002Fp\u003E","state":"accepted","updated_at":"2018-10-21T19:48:00.000Z","username":"pmouawad","user_id":564680,"book_id":31092,"cause_id":null,"tiny_avatar_url":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F564680\u002Ftiny\u002Fphilmdot.png?1443126672","view_invitation_path":null,"id":32383,"user":[{"id":564680,"type":"User"}],"book":[{"id":31092,"type":"Book"}]},"32384":{"type":"Author","cause_royalty_percentage":"0.0","created_at":"2015-10-18T20:02:44.000Z","name":"Milamber","position":3,"profile_blurb":"\u003Cp\u003EBruno Demion, better known as Milamber, is a French computer scientist expatriated in Morocco since 2002, currently living in Témara (near Rabat).\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe works in a technology consulting and expertise company as a partner, senior technical expert and technical architect.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EThrough his work and passion for IT, Milamber has strong skills in performance, troubleshooting, security and technical architectures around web technologies.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003ESince December 2003, he has been working with JMeter to perform load tests in various missions and training courses.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe contributes as much as possible to the JMeter project in his spare time, in particular on the translation into French of the graphical interface, corrections of anomalies as well as some behaviors (proxy https, new results tree, icon bar, etc.).\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe is currently a committer, PMC member and the PMC Chair of the Apache JMeter project within the Apache Software Foundation - ASF. He is also an official ASF member. His Apache ID is milamber.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EMilamber also has a personal blog with many articles and tutorials on Apache JMeter, some of which inspired this book.\u003C\u002Fp\u003E","state":"accepted","updated_at":"2018-06-18T21:32:48.000Z","username":"milamber","user_id":518676,"book_id":31092,"cause_id":null,"tiny_avatar_url":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F518676\u002Ftiny\u002Favatar-milamber-petit.png?1436213901","view_invitation_path":null,"id":32384,"user":[{"id":518676,"type":"User"}],"book":[{"id":31092,"type":"Book"}]},"32385":{"type":"Author","cause_royalty_percentage":"0.0","created_at":"2015-10-18T20:03:31.000Z","name":"Antonio Gomes Rodrigues","position":1,"profile_blurb":"\u003Cp\u003EAntonio Gomes Rodrigues is an expert in the field of application performance for years.\u003C\u002Fp\u003E\u003Cp\u003EHis missions led him to work:\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003EOn the performance of high traffic websites\u003C\u002Fli\u003E\u003Cli\u003EOn the performance of an application for brokers\u003C\u002Fli\u003E\u003Cli\u003EOn the performance of rich clients, cloud applications, web applications, etc.\u003C\u002Fli\u003E\u003Cli\u003EWith various profilers: JProfiler, Yourkit, PerfView, etc.\u003C\u002Fli\u003E\u003Cli\u003EWith various APM: Dynatrace, AppDynamics, Introscope, NewRelic, etc.\u003C\u002Fli\u003E\u003Cli\u003EWith various load testing tools: JMeter, LoadRunner, etc.\u003C\u002Fli\u003E\u003Cli\u003EIn various missions: load tests, implementation of performance strategies, training, performance audits, troubleshooting, etc.\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003EHe shares his knowledge of application performance at conferences, on his \u003Ca href=\"http:\u002F\u002Farodrigues.developpez.com\u002F\" target=\"_blank\"\u003Eblog\u003C\u002Fa\u003E and during technical book reviews.\u003C\u002Fp\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003EHe is currently a committer and a PMC member of the JMeter project within the Apache Software Foundation.\u003C\u002Fp\u003E","state":"accepted","updated_at":"2024-11-22T07:16:26.000Z","username":"antoniogomesrodrigues","user_id":352045,"book_id":31092,"cause_id":null,"tiny_avatar_url":"https:\u002F\u002Fsecure.gravatar.com\u002Favatar\u002F11151972f58437babe04ebb6595e1b94?r=pg&d=mm","view_invitation_path":null,"id":32385,"user":[{"id":352045,"type":"User"}],"book":[{"id":31092,"type":"Book"}]}},"errors":{},"indexes":{},"loading":{},"stats":{}},"AuthorServicesBook":{"all":{},"errors":{},"indexes":{},"loading":{}},"Book":{"all":{"31092":{"type":"Book","about_the_book":"\u003Cp\u003EThroughout the chapters, you will understand how to create meaningful performance tests, discover the richness of JMeter and learn how to use it efficiently and effectively.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EFrom automatic recording that allows you to gain in productivity and realism in writing your scripts, through correlation that makes your test realistic and reusable across environments, the authors put you on the right track to realize your scalability testing campaigns.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EThey then explore the different protocols offered by the tool through examples drawn from their professional experiences.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EFinally, they show how to integrate the tool into the DevOps approach, create professional reports and exploit the richness of its eco-system to integrate new protocols, enrich its monitoring or leverage its power through the use of the Cloud.\u003C\u002Fp\u003E","author_count":3,"author_community_preview_short_url":null,"author_preview_short_url":null,"author_sample_preview_short_url":null,"authors_are_editors":false,"available_downloadable_epub":true,"available_downloadable_pdf":true,"categories":[{"id":16,"slug":"agile","description":"","mature_content":false,"created_at":"2012-06-11T19:12:39.000Z","updated_at":"2020-11-06T04:24:47.000Z","can_be_short":false,"parent_category_id":1,"name":"Agile","book_categories_count":672},{"id":70,"slug":"devops","description":"","mature_content":false,"created_at":"2015-09-20T01:35:32.000Z","updated_at":"2015-09-20T01:35:32.000Z","can_be_short":false,"parent_category_id":53,"name":"DevOps","book_categories_count":344},{"id":207,"slug":"resiliency","description":"","mature_content":false,"created_at":"2018-04-17T23:44:20.000Z","updated_at":"2020-11-06T04:24:52.000Z","can_be_short":false,"parent_category_id":138,"name":"Resiliency","book_categories_count":30},{"id":222,"slug":"automated_software_testing","description":"","mature_content":false,"created_at":"2018-09-27T20:12:19.000Z","updated_at":"2020-12-09T21:38:04.000Z","can_be_short":false,"parent_category_id":98,"name":"Automated Software Testing","book_categories_count":137},{"id":80,"slug":"java","description":"","mature_content":false,"created_at":"2015-09-20T01:40:41.000Z","updated_at":"2015-09-20T01:40:41.000Z","can_be_short":false,"parent_category_id":53,"name":"Java","book_categories_count":255},{"id":98,"slug":"testing","description":"","mature_content":false,"created_at":"2015-09-20T01:56:12.000Z","updated_at":"2015-09-20T01:56:12.000Z","can_be_short":false,"parent_category_id":53,"name":"Testing","book_categories_count":283},{"id":11,"slug":"software","description":"","mature_content":false,"created_at":"2012-06-11T19:12:39.000Z","updated_at":"2020-11-12T06:14:20.000Z","can_be_short":false,"parent_category_id":53,"name":"Software","book_categories_count":552},{"id":90,"slug":"networking","description":"","mature_content":false,"created_at":"2015-09-20T01:53:07.000Z","updated_at":"2015-09-20T01:53:07.000Z","can_be_short":false,"parent_category_id":53,"name":"Networking","book_categories_count":128},{"id":88,"slug":"messaging","description":"","mature_content":false,"created_at":"2015-09-20T01:52:29.000Z","updated_at":"2015-09-20T01:52:29.000Z","can_be_short":false,"parent_category_id":53,"name":"Messaging","book_categories_count":28},{"id":66,"slug":"databases","description":"","mature_content":false,"created_at":"2015-09-20T01:34:35.000Z","updated_at":"2020-11-12T06:14:20.000Z","can_be_short":false,"parent_category_id":53,"name":"Databases","book_categories_count":146},{"id":141,"slug":"oracle","description":"","mature_content":false,"created_at":"2016-03-17T02:20:59.000Z","updated_at":"2016-03-17T18:31:02.000Z","can_be_short":false,"parent_category_id":66,"name":"Oracle","book_categories_count":17}],"cc_license_text":"Creative Commons Attribution 4.0 International License","cc_slug":"by","cc_version":"4.0","clicky_analytics_code":"","community_edition_about_the_book":"","community_edition_callout_quote":"","community_edition_epub_url":"\u002Fmaster-jmeter-from-load-test-to-devops\u002Fce\u002Fepub","community_edition_pdf_url":"\u002Fmaster-jmeter-from-load-test-to-devops\u002Fce\u002Fpdf","community_edition_require_firstname":"required","community_edition_require_lastname":"required","community_edition_teaser_text":"","community_edition_whats_included":"","copyright_type":"default","contact_author_method":"email","contact_author_url":null,"created_at":"2015-10-18T19:51:29.000Z","default_package_id":36314,"meta_description":"A reference book on JMeter by three performance experts &amp; developers of JMeter Team. Learn load testing from the methodology to the integration with DevOps.","editor_read_only":false,"forum_url":null,"forced_markua":false,"free_purchase_requires_membership":true,"enabled_forums":false,"embargo":false,"name":"Master Apache JMeter From load testing to DevOps.","epub_available":true,"epub_community_edition_available":false,"epub_download_url":null,"epub_file_size":14443382,"free_purchase_only":false,"google_analytics_code":"UA-68690456-1","generate_community_edition":null,"generated_on_leanpub":true,"has_epub_sample":true,"has_pdf_sample":true,"has_sample":true,"image":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_featured?1732865322","installments_completed":13,"installments_planned":13,"input_format":"lfm","language_code3":"eng","language_id":124,"language_name":"English","last_published_at":"2024-11-29T07:29:23.000Z","last_published_sync_mode":"github","leanpub_app_available":true,"mature_content":false,"new_edition_id":null,"page_count_published":720,"pdf_available":true,"pdf_community_edition_available":false,"pre_publish_mailchimp_list_id":"leanpub","preview_generated_at":"2024-11-29T07:37:02.000Z","primary_author_id":32383,"publisher_id":1,"sample_epub_url":"https:\u002F\u002Fs3.amazonaws.com\u002Fsamples.leanpub.com\u002Fmaster-jmeter-from-load-test-to-devops-sample.epub?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=0XBXHW3Q9GGV69BT7E82%2F20241130%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241130T220316Z&X-Amz-Expires=518400&X-Amz-SignedHeaders=host&X-Amz-Signature=548f5242d0759ee6363792628549f3c7fac89f9dbfff91840901e791f0acfb0a","sample_url":"https:\u002F\u002Fs3.amazonaws.com\u002Fsamples.leanpub.com\u002Fmaster-jmeter-from-load-test-to-devops-sample.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=0XBXHW3Q9GGV69BT7E82%2F20241130%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241130T220316Z&X-Amz-Expires=518400&X-Amz-SignedHeaders=host&X-Amz-Signature=b8a0465ca779684a9a0d2bd2260046467d578e960af5339c44494d34ba800ff7","show_also_by_authors":true,"show_community_edition_on_book_page":false,"show_num_readers":true,"show_feedback_page":true,"show_full_title_for_translations":false,"show_installments":true,"show_page_count":true,"show_read_link":"none","show_word_count":true,"slug":"master-jmeter-from-load-test-to-devops","state":"published","subtitle":"Prefaced by Alexander Podelko","suggested_tweet":"I just bought Master Apache JMeter: From load testing to #Devops written by 3 committers of the project @ra0077, @milamberspace, @philmdot on https:\u002F\u002Fleanpub.com\u002Fmaster-jmeter-from-load-test-to-devops ","sync_mode":"github","tagline":"Master performance testing and JMeter with this book written by three members of Apache JMeter's team who are also experts in the performance field.You will deeply understand how to get the most out of it, be more productive and integrate it into your Agile\u002FDevOps processes.","thank_you_message":"Thank you for purchasing our book.\r\nWe wish you a good reading and hope that it will give you full satisfaction.\r\nIf this is the case, do not hesitate to let us know:-)\r\nIf this is not the case, write to us so that we can improve it, we will be grateful.\r\n\r\nHave a good reading!","title":"Master Apache JMeter From load testing to DevOps.","json_toc":"[{\"level\":2,\"title\":\"Copyright\",\"quiz_type\":null,\"path\":\"#leanpub-auto-copyright\",\"file_count\":1,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Presentation of the authors\",\"quiz_type\":null,\"path\":\"#leanpub-auto-presentation-of-the-authors\",\"file_count\":2,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Antonio Gomes Rodrigues\",\"quiz_type\":null,\"path\":\"#leanpub-auto-antonio-gomes-rodrigues\",\"file_count\":2,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Bruno Demion (Milamber)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-bruno-demion-milamber\",\"file_count\":2,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Philippe Mouawad (Philippe M.)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-philippe-mouawad-philippe-m\",\"file_count\":2,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"About the reviewers\",\"quiz_type\":null,\"path\":\"#leanpub-auto-about-the-reviewers\",\"file_count\":3,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Felix Schumacher\",\"quiz_type\":null,\"path\":\"#leanpub-auto-felix-schumacher\",\"file_count\":3,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Preface by Alexander Podelko\",\"quiz_type\":null,\"path\":\"#leanpub-auto-preface-by-alexander-podelko\",\"file_count\":4,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Alexander Podelko bio\",\"quiz_type\":null,\"path\":\"#leanpub-auto-alexander-podelko-bio\",\"file_count\":4,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"How to read this book\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how-to-read-this-book\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"I just want to discover Apache JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-i-just-want-to-discover-apache-jmeter\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"There is nothing and I have to do everything\",\"quiz_type\":null,\"path\":\"#leanpub-auto-there-is-nothing-and-i-have-to-do-everything\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"I am joining a performance team\",\"quiz_type\":null,\"path\":\"#leanpub-auto-i-am-joining-a-performance-team\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"I need to do a load test from scratch\",\"quiz_type\":null,\"path\":\"#leanpub-auto-i-need-to-do-a-load-test-from-scratch\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"I need script load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-i-need-script-load-test\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"I need to help developers to make load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-i-need-to-help-developers-to-make-load-test\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"I need to analyse and presents results from a load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-i-need-to-analyse-and-presents-results-from-a-load-test\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"I need to make shift left strategy\",\"quiz_type\":null,\"path\":\"#leanpub-auto-i-need-to-make-shift-left-strategy\",\"file_count\":5,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Quick start with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-quick-start-with-jmeter\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Our process\",\"quiz_type\":null,\"path\":\"#leanpub-auto-our-process\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Setup JMeter to record our browsing session\",\"quiz_type\":null,\"path\":\"#leanpub-auto-setup-jmeter-to-record-our-browsing-session\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Configure your browser\",\"quiz_type\":null,\"path\":\"#leanpub-auto-configure-your-browser\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Save our script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-save-our-script\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Validate our script with only one user\",\"quiz_type\":null,\"path\":\"#leanpub-auto-validate-our-script-with-only-one-user\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Setup our load test and launch it\",\"quiz_type\":null,\"path\":\"#leanpub-auto-setup-our-load-test-and-launch-it\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Run our load test and analyze it\",\"quiz_type\":null,\"path\":\"#leanpub-auto-run-our-load-test-and-analyze-it\",\"file_count\":6,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"JMeter overview\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jmeter-overview\",\"file_count\":7,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"JMeter overview\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jmeter-overview-1\",\"file_count\":7,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Types of load tests supported\",\"quiz_type\":null,\"path\":\"#leanpub-auto-types-of-load-tests-supported\",\"file_count\":7,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Supported test protocols\",\"quiz_type\":null,\"path\":\"#leanpub-auto-supported-test-protocols\",\"file_count\":7,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Reporting\",\"quiz_type\":null,\"path\":\"#leanpub-auto-reporting\",\"file_count\":7,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion\",\"file_count\":7,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Why is it still important to make load test today?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-why-is-it-still-important-to-make-load-test-today\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Why performance matters?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-why-performance-matters\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Better user experience\",\"quiz_type\":null,\"path\":\"#leanpub-auto-better-user-experience\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Better SEO (Search Engine Optimization)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-better-seo-search-engine-optimization\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Better conversion rate\",\"quiz_type\":null,\"path\":\"#leanpub-auto-better-conversion-rate\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Reduce cost\",\"quiz_type\":null,\"path\":\"#leanpub-auto-reduce-cost\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"What has changed in the last years and why it is not enough?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-what-has-changed-in-the-last-years-and-why-it-is-not-enough\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Provisioning a server is easiest with Cloud\",\"quiz_type\":null,\"path\":\"#leanpub-auto-provisioning-a-server-is-easiest-with-cloud\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"More powerful server\",\"quiz_type\":null,\"path\":\"#leanpub-auto-more-powerful-server\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Autoscaling is easy with Cloud\u002FKubernetes\",\"quiz_type\":null,\"path\":\"#leanpub-auto-autoscaling-is-easy-with-cloudkubernetes\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Canary release deployment\",\"quiz_type\":null,\"path\":\"#leanpub-auto-canary-release-deployment\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Blue\u002FGreen deployment\",\"quiz_type\":null,\"path\":\"#leanpub-auto-bluegreen-deployment\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Feature Flipping allows to quickly disable a faulty feature\",\"quiz_type\":null,\"path\":\"#leanpub-auto-feature-flipping-allows-to-quickly-disable-a-faulty-feature\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Design for failure\",\"quiz_type\":null,\"path\":\"#leanpub-auto-design-for-failure\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Other reasons why it is still important to make load test today\",\"quiz_type\":null,\"path\":\"#leanpub-auto-other-reasons-why-it-is-still-important-to-make-load-test-today\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Performance culture\",\"quiz_type\":null,\"path\":\"#leanpub-auto-performance-culture\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Don’t live with Broken Windows\",\"quiz_type\":null,\"path\":\"#leanpub-auto-dont-live-with-broken-windows\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Put into production the healthiest application\",\"quiz_type\":null,\"path\":\"#leanpub-auto-put-into-production-the-healthiest-application\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Fine tune as much as possible the architecture and application\",\"quiz_type\":null,\"path\":\"#leanpub-auto-fine-tune-as-much-as-possible-the-architecture-and-application\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Understand the weak points of the application\",\"quiz_type\":null,\"path\":\"#leanpub-auto-understand-the-weak-points-of-the-application\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Reproduce a performance or multithreading issue detected in production to fix it\",\"quiz_type\":null,\"path\":\"#leanpub-auto-reproduce-a-performance-or-multithreading-issue-detected-in-production-to-fix-it\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Give business an idea of future response times when a new application goes live\",\"quiz_type\":null,\"path\":\"#leanpub-auto-give-business-an-idea-of-future-response-times-when-a-new-application-goes-live\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Anticipate Sales period\",\"quiz_type\":null,\"path\":\"#leanpub-auto-anticipate-sales-period\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Compare two versions of the same application\",\"quiz_type\":null,\"path\":\"#leanpub-auto-compare-two-versions-of-the-same-application\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Confirm\u002Ftune the alerting system\",\"quiz_type\":null,\"path\":\"#leanpub-auto-confirmtune-the-alerting-system\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Validate\u002Fimprove monitoring (metrics, tools, dashboards, etc.)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-validateimprove-monitoring-metrics-tools-dashboards-etc\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Find the soft limits of the AWS infrastructure\",\"quiz_type\":null,\"path\":\"#leanpub-auto-find-the-soft-limits-of-the-aws-infrastructure\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-1\",\"file_count\":8,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Designing a test case\",\"quiz_type\":null,\"path\":\"#leanpub-auto-designing-a-test-case\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Introduction\",\"quiz_type\":null,\"path\":\"#leanpub-auto-introduction\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Define your goal\",\"quiz_type\":null,\"path\":\"#leanpub-auto-define-your-goal\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Type of load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-type-of-load-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Smoke Test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-smoke-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Performance\u002FLoad Test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-performanceload-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Stress Test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-stress-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Mark Tomlinson’s quote\",\"quiz_type\":null,\"path\":\"#leanpub-auto-mark-tomlinsons-quote\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Breakpoint Test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-breakpoint-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Soak\u002FEndurance Test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-soakendurance-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Failover\u002FResilience Test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-failoverresilience-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Spike Test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-spike-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Other\",\"quiz_type\":null,\"path\":\"#leanpub-auto-other\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Summary\",\"quiz_type\":null,\"path\":\"#leanpub-auto-summary\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Load model\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Closed model vs Open model\",\"quiz_type\":null,\"path\":\"#leanpub-auto-closed-model-vs-open-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Closed model\",\"quiz_type\":null,\"path\":\"#leanpub-auto-closed-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Open model\",\"quiz_type\":null,\"path\":\"#leanpub-auto-open-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Why is it important to choose the right model?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-why-is-it-important-to-choose-the-right-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Implementation in JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-implementation-in-jmeter\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Concurrency user (\\u003cem\\u003eClosed model\\u003c\u002Fem\\u003e)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-concurrency-user-closed-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Throughput (\\u003cem\\u003eOpen model\\u003c\u002Fem\\u003e)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-throughput-open-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Arrivals rate (\\u003cem\\u003eOpen model\\u003c\u002Fem\\u003e)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-arrivals-rate-open-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Arrivals rate model\",\"quiz_type\":null,\"path\":\"#leanpub-auto-arrivals-rate-model\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Poisson process with Precise Throughput Timer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-poisson-process-with-precise-throughput-timer\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Constant arrival rate with Thread Group\",\"quiz_type\":null,\"path\":\"#leanpub-auto-constant-arrival-rate-with-thread-group\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Constant arrival rate with Constant Throughput Timer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-constant-arrival-rate-with-constant-throughput-timer\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Arrival rate with Open Model Thread Group\",\"quiz_type\":null,\"path\":\"#leanpub-auto-arrival-rate-with-open-model-thread-group\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Think time\",\"quiz_type\":null,\"path\":\"#leanpub-auto-think-time\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Constant think time with Constant Timer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-constant-think-time-with-constant-timer\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Uniform distribution think time with Uniform Random Timer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-uniform-distribution-think-time-with-uniform-random-timer\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Gaussian\u002FNormal distribution think time with Gaussian Random Timer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-gaussiannormal-distribution-think-time-with-gaussian-random-timer\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Poisson distribution think time with Poisson Random Timer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-poisson-distribution-think-time-with-poisson-random-timer\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"All think time we want with JSR223 Timer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-all-think-time-we-want-with-jsr223-timer\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Structure of a test case\",\"quiz_type\":null,\"path\":\"#leanpub-auto-structure-of-a-test-case\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Ramp Up\",\"quiz_type\":null,\"path\":\"#leanpub-auto-ramp-up\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Plateau\u002FStep\",\"quiz_type\":null,\"path\":\"#leanpub-auto-plateaustep\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Ramp Down\",\"quiz_type\":null,\"path\":\"#leanpub-auto-ramp-down\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example: step load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-step-load-test\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Identify critical business scenarios to script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-identify-critical-business-scenarios-to-script\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Frequent\",\"quiz_type\":null,\"path\":\"#leanpub-auto-frequent\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Vital\u002FBusiness critical\",\"quiz_type\":null,\"path\":\"#leanpub-auto-vitalbusiness-critical\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Technically risky\",\"quiz_type\":null,\"path\":\"#leanpub-auto-technically-risky\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Legally risky\",\"quiz_type\":null,\"path\":\"#leanpub-auto-legally-risky\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Brand image risk\",\"quiz_type\":null,\"path\":\"#leanpub-auto-brand-image-risk\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Summary\",\"quiz_type\":null,\"path\":\"#leanpub-auto-summary-1\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"How many virtual users do I need?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how-many-virtual-users-do-i-need\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Identify Service Level Agreements (SLAs)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-identify-service-level-agreements-slas\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Why SLA?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-why-sla\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Identify SLAs, use case 1: SLAs already exists\",\"quiz_type\":null,\"path\":\"#leanpub-auto-identify-slas-use-case-1-slas-already-exists\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Identify SLAs, use case 2: SLAs don’t exist, but business has a clear idea of them\",\"quiz_type\":null,\"path\":\"#leanpub-auto-identify-slas-use-case-2-slas-dont-exist-but-business-has-a-clear-idea-of-them\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Identify SLAs, use case 3: SLAs don’t exist and business does not have a clear idea of them\",\"quiz_type\":null,\"path\":\"#leanpub-auto-identify-slas-use-case-3-slas-dont-exist-and-business-does-not-have-a-clear-idea-of-them\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Best practices\",\"quiz_type\":null,\"path\":\"#leanpub-auto-best-practices\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Implement them in Apache JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-implement-them-in-apache-jmeter\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Parameters to take into account when creating a scenario\",\"quiz_type\":null,\"path\":\"#leanpub-auto-parameters-to-take-into-account-when-creating-a-scenario\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Vary user input data\",\"quiz_type\":null,\"path\":\"#leanpub-auto-vary-user-input-data\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Reuse the same values\",\"quiz_type\":null,\"path\":\"#leanpub-auto-reuse-the-same-values\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Pre-calculate input data vs random input data\",\"quiz_type\":null,\"path\":\"#leanpub-auto-pre-calculate-input-data-vs-random-input-data\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Vary the type of users\",\"quiz_type\":null,\"path\":\"#leanpub-auto-vary-the-type-of-users\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Vary and adjust think times\",\"quiz_type\":null,\"path\":\"#leanpub-auto-vary-and-adjust-think-times\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Adjust the ramp up time\",\"quiz_type\":null,\"path\":\"#leanpub-auto-adjust-the-ramp-up-time\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Adjust the test duration\",\"quiz_type\":null,\"path\":\"#leanpub-auto-adjust-the-test-duration\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Error handling\",\"quiz_type\":null,\"path\":\"#leanpub-auto-error-handling\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"User connection type\",\"quiz_type\":null,\"path\":\"#leanpub-auto-user-connection-type\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Size of the scenarios\",\"quiz_type\":null,\"path\":\"#leanpub-auto-size-of-the-scenarios\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Meeting point\u002Frendez-vous\",\"quiz_type\":null,\"path\":\"#leanpub-auto-meeting-pointrendez-vous\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Cookie Management\",\"quiz_type\":null,\"path\":\"#leanpub-auto-cookie-management\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Cache Management\",\"quiz_type\":null,\"path\":\"#leanpub-auto-cache-management\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-2\",\"file_count\":9,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Important concepts in JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-important-concepts-in-jmeter\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Scoping\",\"quiz_type\":null,\"path\":\"#leanpub-auto-scoping\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Elements execution order\",\"quiz_type\":null,\"path\":\"#leanpub-auto-elements-execution-order\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"How Timers scope works\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how-timers-scope-works\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Rule 1: Timers are executed before each sampler in their scope.\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rule-1-timers-are-executed-before-each-sampler-in-their-scope\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Rule 2: If there is more than one timer in the scope, all the timers will be processed before the sampler.\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rule-2-if-there-is-more-than-one-timer-in-the-scope-all-the-timers-will-be-processed-before-the-sampler\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Control the execution order of \\u003cem\\u003eTimers\\u003c\u002Fem\\u003e\",\"quiz_type\":null,\"path\":\"#leanpub-auto-control-the-execution-order-of-timers\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"How Assertions scope works\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how-assertions-scope-works\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Rule 1: Assertions are executed after each sampler in their scope or to parent samplers\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rule-1-assertions-are-executed-after-each-sampler-in-their-scope-or-to-parent-samplers\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Rule 2: Failed assertions cause the failure of the entire Transaction Controller\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rule-2-failed-assertions-cause-the-failure-of-the-entire-transaction-controller\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Rule 3: Assertions can validate main sample and\u002For sub-samples\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rule-3-assertions-can-validate-main-sample-andor-sub-samples\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Rule 4: Be careful with low performing assertions\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rule-4-be-careful-with-low-performing-assertions\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Our advice\",\"quiz_type\":null,\"path\":\"#leanpub-auto-our-advice\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"How properties differ from variables\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how-properties-differ-from-variables\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"How properties are created\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how-properties-are-created\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"How variables are created\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how-variables-are-created\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"How ${} differs from ${_P}\",\"quiz_type\":null,\"path\":\"#leanpub-auto-how--differs-from-p\",\"file_count\":10,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Preparing the test environment (injectors and tested system)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-preparing-the-test-environment-injectors-and-tested-system\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Introduction\",\"quiz_type\":null,\"path\":\"#leanpub-auto-introduction-1\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Prepare the injectors\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prepare-the-injectors\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Never host injectors on the same servers as the tested system\",\"quiz_type\":null,\"path\":\"#leanpub-auto-never-host-injectors-on-the-same-servers-as-the-tested-system\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Calibrating your test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-calibrating-your-test\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Monitor injectors\",\"quiz_type\":null,\"path\":\"#leanpub-auto-monitor-injectors\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Prepare Apache JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prepare-apache-jmeter\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Use the latest version\",\"quiz_type\":null,\"path\":\"#leanpub-auto-use-the-latest-version\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"JMeter memory configuration\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jmeter-memory-configuration\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Prepare the network\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prepare-the-network\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"IP Spoofing\",\"quiz_type\":null,\"path\":\"#leanpub-auto-ip-spoofing\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Setting up \\u003cem\\u003eIP Spoofing\\u003c\u002Fem\\u003e:\",\"quiz_type\":null,\"path\":\"#leanpub-auto-setting-up-ip-spoofing\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Avoid load testing behind a proxy\",\"quiz_type\":null,\"path\":\"#leanpub-auto-avoid-load-testing-behind-a-proxy\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Prepare the tested system\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prepare-the-tested-system\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"A tested environment\",\"quiz_type\":null,\"path\":\"#leanpub-auto-a-tested-environment\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"An environment consistent with the target\",\"quiz_type\":null,\"path\":\"#leanpub-auto-an-environment-consistent-with-the-target\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Datasets\",\"quiz_type\":null,\"path\":\"#leanpub-auto-datasets\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Take into account calls to third party services\",\"quiz_type\":null,\"path\":\"#leanpub-auto-take-into-account-calls-to-third-party-services\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Disable protection systems\",\"quiz_type\":null,\"path\":\"#leanpub-auto-disable-protection-systems\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Isolated environment\",\"quiz_type\":null,\"path\":\"#leanpub-auto-isolated-environment\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"License Management\",\"quiz_type\":null,\"path\":\"#leanpub-auto-license-management\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Summary\",\"quiz_type\":null,\"path\":\"#leanpub-auto-summary-2\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Monitoring the tested system\",\"quiz_type\":null,\"path\":\"#leanpub-auto-monitoring-the-tested-system\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Monitoring\u002Fprofiling tools and their features\",\"quiz_type\":null,\"path\":\"#leanpub-auto-monitoringprofiling-tools-and-their-features\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Overhead\",\"quiz_type\":null,\"path\":\"#leanpub-auto-overhead\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Metrics\",\"quiz_type\":null,\"path\":\"#leanpub-auto-metrics\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Logs\",\"quiz_type\":null,\"path\":\"#leanpub-auto-logs\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Instrumentation\",\"quiz_type\":null,\"path\":\"#leanpub-auto-instrumentation\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Sampling\",\"quiz_type\":null,\"path\":\"#leanpub-auto-sampling\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Distributed tracing\",\"quiz_type\":null,\"path\":\"#leanpub-auto-distributed-tracing\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Memory monitoring\",\"quiz_type\":null,\"path\":\"#leanpub-auto-memory-monitoring\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Thread monitoring\",\"quiz_type\":null,\"path\":\"#leanpub-auto-thread-monitoring\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Exception monitoring\",\"quiz_type\":null,\"path\":\"#leanpub-auto-exception-monitoring\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Database monitoring\",\"quiz_type\":null,\"path\":\"#leanpub-auto-database-monitoring\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Continuous Profiling\u002FAPM (Application Performance Monitoring)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-continuous-profilingapm-application-performance-monitoring\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Network monitoring\",\"quiz_type\":null,\"path\":\"#leanpub-auto-network-monitoring\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Events monitoring\",\"quiz_type\":null,\"path\":\"#leanpub-auto-events-monitoring\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Monitoring methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-monitoring-methodology\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"USE method (Utilisation, Saturation \\u0026amp; Errors)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-use-method-utilisation-saturation--errors\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"RED method (Rate, Errors \\u0026amp; Duration)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-red-method-rate-errors--duration\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Four Golden Signals (Latency, Traffic, Errors \\u0026amp; Saturation) method\",\"quiz_type\":null,\"path\":\"#leanpub-auto-four-golden-signals-latency-traffic-errors--saturation-method\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Our advice\",\"quiz_type\":null,\"path\":\"#leanpub-auto-our-advice-1\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-3\",\"file_count\":11,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Being productive with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-being-productive-with-jmeter\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Introduction\",\"quiz_type\":null,\"path\":\"#leanpub-auto-introduction-2\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Before starting the recording of the script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-before-starting-the-recording-of-the-script\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Choose if static resources are important or not\",\"quiz_type\":null,\"path\":\"#leanpub-auto-choose-if-static-resources-are-important-or-not\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Solution 1: Do not take them into account\",\"quiz_type\":null,\"path\":\"#leanpub-auto-solution-1-do-not-take-them-into-account\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Solution 2: Let JMeter manage them\",\"quiz_type\":null,\"path\":\"#leanpub-auto-solution-2-let-jmeter-manage-them\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Solution 3: Manage it ourselves\",\"quiz_type\":null,\"path\":\"#leanpub-auto-solution-3-manage-it-ourselves\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Apply a naming convention for transactions\u002Frequests\",\"quiz_type\":null,\"path\":\"#leanpub-auto-apply-a-naming-convention-for-transactionsrequests\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Modify or learn keyboard shortcuts\",\"quiz_type\":null,\"path\":\"#leanpub-auto-modify-or-learn-keyboard-shortcuts\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Have a script base quickly\",\"quiz_type\":null,\"path\":\"#leanpub-auto-have-a-script-base-quickly\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Pre-populate HTTP Request Defaults before recording the script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-pre-populate-http-request-defaults-before-recording-the-script\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Use the HTTP(S) Test Script Recorder element\",\"quiz_type\":null,\"path\":\"#leanpub-auto-use-the-https-test-script-recorder-element\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"BlazeMeter Chrome Extension\",\"quiz_type\":null,\"path\":\"#leanpub-auto-blazemeter-chrome-extension\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Use Tools \u002F Import from cURL\",\"quiz_type\":null,\"path\":\"#leanpub-auto-use-tools--import-from-curl\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Import requests from HAR file\",\"quiz_type\":null,\"path\":\"#leanpub-auto-import-requests-from-har-file\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Recording HTTPS website\",\"quiz_type\":null,\"path\":\"#leanpub-auto-recording-https-website\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Save time when working on the script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-save-time-when-working-on-the-script\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Global Assertion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-global-assertion\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Re-Use script parts\",\"quiz_type\":null,\"path\":\"#leanpub-auto-re-use-script-parts\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Share an object between different Thread Groups\",\"quiz_type\":null,\"path\":\"#leanpub-auto-share-an-object-between-different-thread-groups\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Get the most out of CSV files\",\"quiz_type\":null,\"path\":\"#leanpub-auto-get-the-most-out-of-csv-files\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"The different modes\u002Foptions of CSV reader\",\"quiz_type\":null,\"path\":\"#leanpub-auto-the-different-modesoptions-of-csv-reader\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"CSV file and JSON content\",\"quiz_type\":null,\"path\":\"#leanpub-auto-csv-file-and-json-content\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Data coming from several CSV files\",\"quiz_type\":null,\"path\":\"#leanpub-auto-data-coming-from-several-csv-files\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"CSV and Groovy\",\"quiz_type\":null,\"path\":\"#leanpub-auto-csv-and-groovy\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Using Regular Expression Extractor on content with spaces and multiple lines\",\"quiz_type\":null,\"path\":\"#leanpub-auto-using-regular-expression-extractor-on-content-with-spaces-and-multiple-lines\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Add headers to our HTTP requests\",\"quiz_type\":null,\"path\":\"#leanpub-auto-add-headers-to-our-http-requests\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Waiting with While Controller\",\"quiz_type\":null,\"path\":\"#leanpub-auto-waiting-with-while-controller\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Wait for the end of execution: example 1\",\"quiz_type\":null,\"path\":\"#leanpub-auto-wait-for-the-end-of-execution-example-1\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Wait for the end of execution: example 2\",\"quiz_type\":null,\"path\":\"#leanpub-auto-wait-for-the-end-of-execution-example-2\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Wait for three products to be added to the cart.\",\"quiz_type\":null,\"path\":\"#leanpub-auto-wait-for-three-products-to-be-added-to-the-cart\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Exit from While if the last action returns an error.\",\"quiz_type\":null,\"path\":\"#leanpub-auto-exit-from-while-if-the-last-action-returns-an-error\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"The right Extractor at the right time\",\"quiz_type\":null,\"path\":\"#leanpub-auto-the-right-extractor-at-the-right-time\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Handle cookies\",\"quiz_type\":null,\"path\":\"#leanpub-auto-handle-cookies\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Set HTTP status code 404 as success in JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-set-http-status-code-404-as-success-in-jmeter\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Debugging a script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-debugging-a-script\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Using View Results Tree\",\"quiz_type\":null,\"path\":\"#leanpub-auto-using-view-results-tree\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Capture errors\",\"quiz_type\":null,\"path\":\"#leanpub-auto-capture-errors\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Debug Sampler\",\"quiz_type\":null,\"path\":\"#leanpub-auto-debug-sampler\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"jp@gc - Dummy Sampler\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jpgc---dummy-sampler\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Log Viewer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-log-viewer\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"BlazeMeter Step-by-step Debugger\",\"quiz_type\":null,\"path\":\"#leanpub-auto-blazemeter-step-by-step-debugger\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"The old-fashioned way in the console\",\"quiz_type\":null,\"path\":\"#leanpub-auto-the-old-fashioned-way-in-the-console\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Use a third-party tool\",\"quiz_type\":null,\"path\":\"#leanpub-auto-use-a-third-party-tool\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Finalise a script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-finalise-a-script\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Change the name of a transaction according to a parameter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-change-the-name-of-a-transaction-according-to-a-parameter\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Mark a response as an error\",\"quiz_type\":null,\"path\":\"#leanpub-auto-mark-a-response-as-an-error\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Execute an action based on the status of the previous one\",\"quiz_type\":null,\"path\":\"#leanpub-auto-execute-an-action-based-on-the-status-of-the-previous-one\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Use timeouts\",\"quiz_type\":null,\"path\":\"#leanpub-auto-use-timeouts\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-4\",\"file_count\":12,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Load Testing a website\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-testing-a-website\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"A bit of theory\",\"quiz_type\":null,\"path\":\"#leanpub-auto-a-bit-of-theory\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Set up with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-set-up-with-jmeter\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-methodology\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Put into practice with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-put-into-practice-with-jmeter\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 1: Find a owner in Spring PetClinic application\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-1-find-a-owner-in-spring-petclinic-application\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Our scenario to script\",\"quiz_type\":null,\"path\":\"#leanpub-auto-our-scenario-to-script\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"The recording\",\"quiz_type\":null,\"path\":\"#leanpub-auto-the-recording\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Step 1: Work on “Go to the home page”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-step-1-work-on-go-to-the-home-page\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Step 2: Work on “Do a search on the owner of a pet”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-step-2-work-on-do-a-search-on-the-owner-of-a-pet\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Step 3: Work on “View the details of the owner”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-step-3-work-on-view-the-details-of-the-owner\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 2: Add an owner\u002FDisplay last owner in Spring PetClinic application\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-2-add-an-ownerdisplay-last-owner-in-spring-petclinic-application\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Step 1: Add an owner\",\"quiz_type\":null,\"path\":\"#leanpub-auto-step-1-add-an-owner\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Step 2: Display last owner\",\"quiz_type\":null,\"path\":\"#leanpub-auto-step-2-display-last-owner\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 3: Technical tests with Byteman\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-3-technical-tests-with-byteman\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 4: Technical tests with JProfiler\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-4-technical-tests-with-jprofiler\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 5: Tricking captchas with a Java Request\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-5-tricking-captchas-with-a-java-request\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-5\",\"file_count\":13,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Load Testing web services\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-testing-web-services\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"What we will learn\",\"quiz_type\":null,\"path\":\"#leanpub-auto-what-we-will-learn\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"A few concepts\",\"quiz_type\":null,\"path\":\"#leanpub-auto-a-few-concepts\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"REST (REpresentational State Transfer) web services\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rest-representational-state-transfer-web-services\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"GraphQL (Graph Query Language)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-graphql-graph-query-language\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"REST vs GraphQL\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rest-vs-graphql\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Set up with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-set-up-with-jmeter-1\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Tips\",\"quiz_type\":null,\"path\":\"#leanpub-auto-tips\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-methodology-1\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Practice with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-practice-with-jmeter\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Load test a REST web service: Spring PetClinic REST\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-test-a-rest-web-service-spring-petclinic-rest\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Load test a GraphQL web service: Spring PetClinic GraphQL\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-test-a-graphql-web-service-spring-petclinic-graphql\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-6\",\"file_count\":14,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Load Testing a database server\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-testing-a-database-server\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"A bit of theory\",\"quiz_type\":null,\"path\":\"#leanpub-auto-a-bit-of-theory-1\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-methodology-2\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Setup with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-setup-with-jmeter\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Putting theory into practice with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-putting-theory-into-practice-with-jmeter\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 1: Load test of a database\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-1-load-test-of-a-database\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Avoiding duplication using Include Controller\",\"quiz_type\":null,\"path\":\"#leanpub-auto-avoiding-duplication-using-include-controller\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Avoiding duplication using Module Controller\",\"quiz_type\":null,\"path\":\"#leanpub-auto-avoiding-duplication-using-module-controller\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 2: Studying indexes impact on performance\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-2-studying-indexes-impact-on-performance\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 3: ETL\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-3-etl\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-7\",\"file_count\":15,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Load Testing Message Oriented Middleware (MOM) via JMS\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-testing-message-oriented-middleware-mom-via-jms\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"What we will learn\",\"quiz_type\":null,\"path\":\"#leanpub-auto-what-we-will-learn-1\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"A bit of theory\",\"quiz_type\":null,\"path\":\"#leanpub-auto-a-bit-of-theory-2\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Asynchronous messages\",\"quiz_type\":null,\"path\":\"#leanpub-auto-asynchronous-messages\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Decoupling\",\"quiz_type\":null,\"path\":\"#leanpub-auto-decoupling\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Technology decoupling\",\"quiz_type\":null,\"path\":\"#leanpub-auto-technology-decoupling\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Geographical Decoupling (\\u003cem\\u003eLocation transparency\\u003c\u002Fem\\u003e)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-geographical-decoupling-location-transparency\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Time decoupling\",\"quiz_type\":null,\"path\":\"#leanpub-auto-time-decoupling\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Back pressure\",\"quiz_type\":null,\"path\":\"#leanpub-auto-back-pressure\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Communication models\",\"quiz_type\":null,\"path\":\"#leanpub-auto-communication-models\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Types of delivery semantics\",\"quiz_type\":null,\"path\":\"#leanpub-auto-types-of-delivery-semantics\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"At Most Once\",\"quiz_type\":null,\"path\":\"#leanpub-auto-at-most-once\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"At Least Once\",\"quiz_type\":null,\"path\":\"#leanpub-auto-at-least-once\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Exactly Once\",\"quiz_type\":null,\"path\":\"#leanpub-auto-exactly-once\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Summary\",\"quiz_type\":null,\"path\":\"#leanpub-auto-summary-3\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"What is a message composed of?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-what-is-a-message-composed-of\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Set up with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-set-up-with-jmeter-2\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Installation of MOM libraries\",\"quiz_type\":null,\"path\":\"#leanpub-auto-installation-of-mom-libraries\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"JMS Point-to-Point\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jms-point-to-point\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"JMS Resources and JNDI Properties\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jms-resources-and-jndi-properties\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Communication style\",\"quiz_type\":null,\"path\":\"#leanpub-auto-communication-style\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Priority\",\"quiz_type\":null,\"path\":\"#leanpub-auto-priority\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Use non-persistent delivery mode?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-use-non-persistent-delivery-mode\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"JMS Selector\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jms-selector\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Example with Apache ActiveMQ Classic\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-with-apache-activemq-classic\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Publish\u002FSubscribe\",\"quiz_type\":null,\"path\":\"#leanpub-auto-publishsubscribe\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"JMS Publisher\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jms-publisher\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"JMS Subscriber\",\"quiz_type\":null,\"path\":\"#leanpub-auto-jms-subscriber\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-methodology-3\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Put into practice with JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-put-into-practice-with-jmeter-1\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 1: Test the configuration of a MOM server with point-to-point\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-1-test-the-configuration-of-a-mom-server-with-point-to-point\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 2: Test the performance of our consumer with JMS Publish\u002FSubscribe\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-2-test-the-performance-of-our-consumer-with-jms-publishsubscribe\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 3: Testing the configuration of a MOM server with Publish\u002FSubscribe\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-3-testing-the-configuration-of-a-mom-server-with-publishsubscribe\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 4: Test any MOM\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-4-test-any-mom\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-8\",\"file_count\":16,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Performing a load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-performing-a-load-test\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Introduction\",\"quiz_type\":null,\"path\":\"#leanpub-auto-introduction-3\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-methodology-4\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Before the execution of the load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-before-the-execution-of-the-load-test\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Testing your script\u002Fdataset with the graphical interface\",\"quiz_type\":null,\"path\":\"#leanpub-auto-testing-your-scriptdataset-with-the-graphical-interface\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Check the injectors\",\"quiz_type\":null,\"path\":\"#leanpub-auto-check-the-injectors\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Be careful with the use Extractors to avoid injection problems\",\"quiz_type\":null,\"path\":\"#leanpub-auto-be-careful-with-the-use-extractors-to-avoid-injection-problems\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Regular Expression Extractor\",\"quiz_type\":null,\"path\":\"#leanpub-auto-regular-expression-extractor\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"XPath Extractor\",\"quiz_type\":null,\"path\":\"#leanpub-auto-xpath-extractor\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Extractor performances\",\"quiz_type\":null,\"path\":\"#leanpub-auto-extractor-performances\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Be careful with the use Assertions to avoid injection problems\",\"quiz_type\":null,\"path\":\"#leanpub-auto-be-careful-with-the-use-assertions-to-avoid-injection-problems\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Be careful with the use of custom scripting to avoid injection problems\",\"quiz_type\":null,\"path\":\"#leanpub-auto-be-careful-with-the-use-of-custom-scripting-to-avoid-injection-problems\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Generate reports at the end of the test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-generate-reports-at-the-end-of-the-test\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Execute load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-execute-load-test\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Running your test from the command line\",\"quiz_type\":null,\"path\":\"#leanpub-auto-running-your-test-from-the-command-line\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Running your test on the command line with Taurus\",\"quiz_type\":null,\"path\":\"#leanpub-auto-running-your-test-on-the-command-line-with-taurus\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Running your test from Apache Maven\",\"quiz_type\":null,\"path\":\"#leanpub-auto-running-your-test-from-apache-maven\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Running your test from Jenkins\",\"quiz_type\":null,\"path\":\"#leanpub-auto-running-your-test-from-jenkins\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Running your test from Apache Ant\",\"quiz_type\":null,\"path\":\"#leanpub-auto-running-your-test-from-apache-ant\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-9\",\"file_count\":17,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Visualising, analysing and reporting the load testing results\",\"quiz_type\":null,\"path\":\"#leanpub-auto-visualising-analysing-and-reporting-the-load-testing-results\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Introduction\",\"quiz_type\":null,\"path\":\"#leanpub-auto-introduction-4\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"What we will learn\",\"quiz_type\":null,\"path\":\"#leanpub-auto-what-we-will-learn-2\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Prepare our analyse\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prepare-our-analyse\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Have data to analyse\",\"quiz_type\":null,\"path\":\"#leanpub-auto-have-data-to-analyse\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Have RAW data\",\"quiz_type\":null,\"path\":\"#leanpub-auto-have-raw-data\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Having the right granularity on the data\",\"quiz_type\":null,\"path\":\"#leanpub-auto-having-the-right-granularity-on-the-data\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Have enough data to analyse\",\"quiz_type\":null,\"path\":\"#leanpub-auto-have-enough-data-to-analyse\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Have the right definition of metrics\",\"quiz_type\":null,\"path\":\"#leanpub-auto-have-the-right-definition-of-metrics\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Visualising\",\"quiz_type\":null,\"path\":\"#leanpub-auto-visualising\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Visualising the results with listeners\",\"quiz_type\":null,\"path\":\"#leanpub-auto-visualising-the-results-with-listeners\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"View Results Tree\",\"quiz_type\":null,\"path\":\"#leanpub-auto-view-results-tree\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":6,\"title\":\"Sampler result tab\",\"quiz_type\":null,\"path\":\"#leanpub-auto-sampler-result-tab\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":6,\"title\":\"Request tab\",\"quiz_type\":null,\"path\":\"#leanpub-auto-request-tab\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":6,\"title\":\"Response data tab\",\"quiz_type\":null,\"path\":\"#leanpub-auto-response-data-tab\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Summary Report\",\"quiz_type\":null,\"path\":\"#leanpub-auto-summary-report\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Aggregate Report\",\"quiz_type\":null,\"path\":\"#leanpub-auto-aggregate-report\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Backend Listener\",\"quiz_type\":null,\"path\":\"#leanpub-auto-backend-listener\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Report Dashboard\",\"quiz_type\":null,\"path\":\"#leanpub-auto-report-dashboard\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Particularities of the visualization of results for a distributed load test before JMeter 5.0\",\"quiz_type\":null,\"path\":\"#leanpub-auto-particularities-of-the-visualization-of-results-for-a-distributed-load-test-before-jmeter-50\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Visualizing the results with PaaS load testing tools\",\"quiz_type\":null,\"path\":\"#leanpub-auto-visualizing-the-results-with-paas-load-testing-tools\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Redline13\",\"quiz_type\":null,\"path\":\"#leanpub-auto-redline13\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Blazemeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-blazemeter\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Visualizing the results with third party visualizing tools\",\"quiz_type\":null,\"path\":\"#leanpub-auto-visualizing-the-results-with-third-party-visualizing-tools\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Analyse the results\",\"quiz_type\":null,\"path\":\"#leanpub-auto-analyse-the-results\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-methodology-5\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Example 1: High response time and Low CPU\u002Fmemory\u002Fnetwork\u002Fio disk usage\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-1-high-response-time-and-low-cpumemorynetworkio-disk-usage\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Example 2: High response time and High CPU usage\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-2-high-response-time-and-high-cpu-usage\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Some tips to analyse the results\",\"quiz_type\":null,\"path\":\"#leanpub-auto-some-tips-to-analyse-the-results\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Check response time distribution\",\"quiz_type\":null,\"path\":\"#leanpub-auto-check-response-time-distribution\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Check for spurious events (errors and bad response time)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-check-for-spurious-events-errors-and-bad-response-time\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Worrying About Your Tail\",\"quiz_type\":null,\"path\":\"#leanpub-auto-worrying-about-your-tail\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Be careful with response time at beginning of the load test\",\"quiz_type\":null,\"path\":\"#leanpub-auto-be-careful-with-response-time-at-beginning-of-the-load-test\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Have separate statistics for failed and successful response times\",\"quiz_type\":null,\"path\":\"#leanpub-auto-have-separate-statistics-for-failed-and-successful-response-times\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Some examples\",\"quiz_type\":null,\"path\":\"#leanpub-auto-some-examples\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Is the application support increasing number of clients?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-is-the-application-support-increasing-number-of-clients\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Is errors having an impact in response time?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-is-errors-having-an-impact-in-response-time\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Is Garbage Collector (GC) is optimal?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-is-garbage-collector-gc-is-optimal\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Is my application is CPU bound?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-is-my-application-is-cpu-bound\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Is my application is memory bound?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-is-my-application-is-memory-bound\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Reporting\",\"quiz_type\":null,\"path\":\"#leanpub-auto-reporting-1\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Prepare the reporting\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prepare-the-reporting\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Who is the target of the report?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-who-is-the-target-of-the-report\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"What is the purpose of the report\",\"quiz_type\":null,\"path\":\"#leanpub-auto-what-is-the-purpose-of-the-report\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Don’t expose sensitive information\",\"quiz_type\":null,\"path\":\"#leanpub-auto-dont-expose-sensitive-information\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Methodology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-methodology-6\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Structure our load test report\",\"quiz_type\":null,\"path\":\"#leanpub-auto-structure-our-load-test-report\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Choose the right chart types\",\"quiz_type\":null,\"path\":\"#leanpub-auto-choose-the-right-chart-types\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Don’t use pie charts\",\"quiz_type\":null,\"path\":\"#leanpub-auto-dont-use-pie-charts\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Prefer bar graphs when we have sparse metrics\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prefer-bar-graphs-when-we-have-sparse-metrics\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Present errors with toplist\",\"quiz_type\":null,\"path\":\"#leanpub-auto-present-errors-with-toplist\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Timeseries graphs and single-value summaries\",\"quiz_type\":null,\"path\":\"#leanpub-auto-timeseries-graphs-and-single-value-summaries\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Consider box plot for response time\",\"quiz_type\":null,\"path\":\"#leanpub-auto-consider-box-plot-for-response-time\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Choose the right key metrics\",\"quiz_type\":null,\"path\":\"#leanpub-auto-choose-the-right-key-metrics\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Define the number of metrics to display in a time series line graphs\",\"quiz_type\":null,\"path\":\"#leanpub-auto-define-the-number-of-metrics-to-display-in-a-time-series-line-graphs\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Same key metrics in report and in SLAs\u002Fload model\",\"quiz_type\":null,\"path\":\"#leanpub-auto-same-key-metrics-in-report-and-in-slasload-model\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Choose the right data aggregation\",\"quiz_type\":null,\"path\":\"#leanpub-auto-choose-the-right-data-aggregation\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Prefer percentiles over average\",\"quiz_type\":null,\"path\":\"#leanpub-auto-prefer-percentiles-over-average\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"View aggregated data by phase\",\"quiz_type\":null,\"path\":\"#leanpub-auto-view-aggregated-data-by-phase\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Don’t average percentiles\",\"quiz_type\":null,\"path\":\"#leanpub-auto-dont-average-percentiles\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Define the resolution\u002Fgranularity of the measures\",\"quiz_type\":null,\"path\":\"#leanpub-auto-define-the-resolutiongranularity-of-the-measures\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Choose the correct display for the chart\",\"quiz_type\":null,\"path\":\"#leanpub-auto-choose-the-correct-display-for-the-chart\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Don’t forget to add clear labels, legends and units in graphs\",\"quiz_type\":null,\"path\":\"#leanpub-auto-dont-forget-to-add-clear-labels-legends-and-units-in-graphs\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Axis Forced 0\",\"quiz_type\":null,\"path\":\"#leanpub-auto-axis-forced-0\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Make sure data can be easily seen\",\"quiz_type\":null,\"path\":\"#leanpub-auto-make-sure-data-can-be-easily-seen\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Add annotations for important events\",\"quiz_type\":null,\"path\":\"#leanpub-auto-add-annotations-for-important-events\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Add Thresholds in graph\",\"quiz_type\":null,\"path\":\"#leanpub-auto-add-thresholds-in-graph\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-10\",\"file_count\":18,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Integration of JMeter in the DevOps tool chain\",\"quiz_type\":null,\"path\":\"#leanpub-auto-integration-of-jmeter-in-the-devops-tool-chain\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Introduction\",\"quiz_type\":null,\"path\":\"#leanpub-auto-introduction-5\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Why\",\"quiz_type\":null,\"path\":\"#leanpub-auto-why\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Organization\u002Fteam topology\",\"quiz_type\":null,\"path\":\"#leanpub-auto-organizationteam-topology\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Load testing team in its ivory tower\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-testing-team-in-its-ivory-tower\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"DevOps and load test team collaboration\",\"quiz_type\":null,\"path\":\"#leanpub-auto-devops-and-load-test-team-collaboration\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"One performance tester integrated on DevOps team\",\"quiz_type\":null,\"path\":\"#leanpub-auto-one-performance-tester-integrated-on-devops-team\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"No performance tester\",\"quiz_type\":null,\"path\":\"#leanpub-auto-no-performance-tester\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Team of evangelist’s performance testers\",\"quiz_type\":null,\"path\":\"#leanpub-auto-team-of-evangelists-performance-testers\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Questions to ask before automation and Shift-Left strategy\",\"quiz_type\":null,\"path\":\"#leanpub-auto-questions-to-ask-before-automation-and-shift-left-strategy\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 0: Which tool?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-0-which-tool\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 1: How many times do we need to create and maintain scripts?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-1-how-many-times-do-we-need-to-create-and-maintain-scripts\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 2: How can we stabilize the test environment (injectors and tested system) to allow us to compare results?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-2-how-can-we-stabilize-the-test-environment-injectors-and-tested-system-to-allow-us-to-compare-results\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 3: How long should a test take?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-3-how-long-should-a-test-take\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 4: When do we need to execute automated load test?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-4-when-do-we-need-to-execute-automated-load-test\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 5: Do we have someone to analyze the load test results?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-5-do-we-have-someone-to-analyze-the-load-test-results\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 6: When is it acceptable to slow down one part of the application to speed up another?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-6-when-is-it-acceptable-to-slow-down-one-part-of-the-application-to-speed-up-another\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 7: How to detect slow performance degradation?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-7-how-to-detect-slow-performance-degradation\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 8: How to evaluate the effectiveness of load tests?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-8-how-to-evaluate-the-effectiveness-of-load-tests\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 9: How to choose threshold alerting and avoid false positive?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-9-how-to-choose-threshold-alerting-and-avoid-false-positive\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 10: Can we have a production-like environment for exclusive use?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-10-can-we-have-a-production-like-environment-for-exclusive-use\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 11: Do we need to inject huge amounts of test data before the test?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-11-do-we-need-to-inject-huge-amounts-of-test-data-before-the-test\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 12: Do we need to wait for someone before the test?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-12-do-we-need-to-wait-for-someone-before-the-test\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 13: How to load test new features?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-13-how-to-load-test-new-features\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 14: How to maintain a realistic workload?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-14-how-to-maintain-a-realistic-workload\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 15: How to handle dependencies on external systems?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-15-how-to-handle-dependencies-on-external-systems\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 16: How to reduce organisational resistance?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-16-how-to-reduce-organisational-resistance\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Question 17: How to justify the cost?\",\"quiz_type\":null,\"path\":\"#leanpub-auto-question-17-how-to-justify-the-cost\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Setting up Shift-Left strategy\",\"quiz_type\":null,\"path\":\"#leanpub-auto-setting-up-shift-left-strategy\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Modification in JMeter script to implement Shift-Left strategy\",\"quiz_type\":null,\"path\":\"#leanpub-auto-modification-in-jmeter-script-to-implement-shift-left-strategy\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Integrating JMeter in our software factory\",\"quiz_type\":null,\"path\":\"#leanpub-auto-integrating-jmeter-in-our-software-factory\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Integrating with Jenkins using Maven\",\"quiz_type\":null,\"path\":\"#leanpub-auto-integrating-with-jenkins-using-maven\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":5,\"title\":\"Ensuring the load tests are run on the correct nodes\",\"quiz_type\":null,\"path\":\"#leanpub-auto-ensuring-the-load-tests-are-run-on-the-correct-nodes\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":6,\"title\":\"Configuring the load test using jmeter-maven-plugin\",\"quiz_type\":null,\"path\":\"#leanpub-auto-configuring-the-load-test-using-jmeter-maven-plugin\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":6,\"title\":\"Fail the build if error rate of load test is over a threshold\",\"quiz_type\":null,\"path\":\"#leanpub-auto-fail-the-build-if-error-rate-of-load-test-is-over-a-threshold\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":6,\"title\":\"Configure HTML report\",\"quiz_type\":null,\"path\":\"#leanpub-auto-configure-html-report\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":6,\"title\":\"Configure memory used by JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-configure-memory-used-by-jmeter\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Enhancing integration with Jenkins using Performance Plugin\",\"quiz_type\":null,\"path\":\"#leanpub-auto-enhancing-integration-with-jenkins-using-performance-plugin\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Integrate JMeter with APM monitoring tools\",\"quiz_type\":null,\"path\":\"#leanpub-auto-integrate-jmeter-with-apm-monitoring-tools\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Automation\",\"quiz_type\":null,\"path\":\"#leanpub-auto-automation\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 1: Non-regression testing of memory consumption with EJ JProfiler\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-1-non-regression-testing-of-memory-consumption-with-ej-jprofiler\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 2: Detecting a Memory leak during an endurance test with EJ JProfiler\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-2-detecting-a-memory-leak-during-an-endurance-test-with-ej-jprofiler\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 3: Retrieving SQL queries executed during a load test with YourKit Java Profiler\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-3-retrieving-sql-queries-executed-during-a-load-test-with-yourkit-java-profiler\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Example 4: Analysis of the Garbage Collector (GC) log file with GCViewer\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-4-analysis-of-the-garbage-collector-gc-log-file-with-gcviewer\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Conclusion\",\"quiz_type\":null,\"path\":\"#leanpub-auto-conclusion-11\",\"file_count\":19,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"Old Stuff\",\"quiz_type\":null,\"path\":\"#leanpub-auto-old-stuff\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Introduction\",\"quiz_type\":null,\"path\":\"#leanpub-auto-introduction-6\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Load testing web application Java EE 6 Pet Catalog\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-testing-web-application-java-ee-6-pet-catalog\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Vladimir Sitnikov’s quote (JMeter team member)\",\"quiz_type\":null,\"path\":\"#leanpub-auto-vladimir-sitnikovs-quote-jmeter-team-member\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Load test a SOAP\u002FXML-RPC web-service\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-test-a-soapxml-rpc-web-service\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"WS-* web services\",\"quiz_type\":null,\"path\":\"#leanpub-auto-ws--web-services\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"In JMeter\",\"quiz_type\":null,\"path\":\"#leanpub-auto-in-jmeter\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"REST Web-Service: Discussion Forum\",\"quiz_type\":null,\"path\":\"#leanpub-auto-rest-web-service-discussion-forum\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Load test a REST web service: Customer Database\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-test-a-rest-web-service-customer-database\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"Example 7: Non-regression testing of Web APIs with Dynatrace APM AppMon\",\"quiz_type\":null,\"path\":\"#leanpub-auto-example-7-non-regression-testing-of-web-apis-with-dynatrace-apm-appmon\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Registering to Dynatrace using setup Thread Group\",\"quiz_type\":null,\"path\":\"#leanpub-auto-registering-to-dynatrace-using-setup-thread-group\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Using the testId in other Thread Group\",\"quiz_type\":null,\"path\":\"#leanpub-auto-using-the-testid-in-other-thread-group\",\"file_count\":20,\"quiz_id\":null,\"section_num\":null},{\"level\":2,\"title\":\"What’s new\",\"quiz_type\":null,\"path\":\"#leanpub-auto-whats-new\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"2024\u002F11\u002F29 release\",\"quiz_type\":null,\"path\":\"#leanpub-auto-release\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Designing a test case”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-designing-a-test-case\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Load Testing web services”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-load-testing-web-services\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Preparing the test environment (injectors and tested system)”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-preparing-the-test-environment-injectors-and-tested-system\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Quick start with JMeter”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-quick-start-with-jmeter\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Performing a load test”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-performing-a-load-test\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “JMeter overview”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-jmeter-overview\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Why is it still important to make load test today?”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-why-is-it-still-important-to-make-load-test-today\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Load Testing Message Oriented Middleware (MOM) via JMS”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-load-testing-message-oriented-middleware-mom-via-jms\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Visualising, analysing and reporting the load testing results”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-visualising-analysing-and-reporting-the-load-testing-results\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Load Testing a website\",\"quiz_type\":null,\"path\":\"#leanpub-auto-load-testing-a-website-1\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Old Stuff”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-old-stuff\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":3,\"title\":\"2020\u002F04\u002F28 release\",\"quiz_type\":null,\"path\":\"#leanpub-auto-release-1\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Designing a test case”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-designing-a-test-case-1\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Preparing the test environment (injectors and tested system)”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-preparing-the-test-environment-injectors-and-tested-system-1\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"Chapter “Why is it still important to make load test today?”\",\"quiz_type\":null,\"path\":\"#leanpub-auto-chapter-why-is-it-still-important-to-make-load-test-today-1\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null},{\"level\":4,\"title\":\"New chapter “What’s new” at the end of the book\",\"quiz_type\":null,\"path\":\"#leanpub-auto-new-chapter-whats-new-at-the-end-of-the-book\",\"file_count\":21,\"quiz_id\":null,\"section_num\":null}]","title_page_url_s_mini":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_mini?1732865322","title_page_url_s_mini2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_mini2x?1732865322","title_page_url_s_list":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list?1732865322","title_page_url_s_list2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list2x?1732865322","title_page_url_s_shelf":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_shelf?1732865322","title_page_url_s_shelf2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_shelf2x?1732865322","title_page_url_s_featured":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_featured?1732865322","title_page_url_s_featured2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_featured2x?1732865322","title_page_url_s_hero":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_hero?1732865322","title_page_url_s_hero2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_hero2x?1732865322","toc":"\u003Cul class='toc no-parts'\u003E\n \u003Cli\u003E\n Copyright\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Presentation of the authors\n \u003Cul\u003E\n \u003Cli\u003E\n Antonio Gomes Rodrigues\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Bruno Demion (Milamber)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Philippe Mouawad (Philippe M.)\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n About the reviewers\n \u003Cul\u003E\n \u003Cli\u003E\n Felix Schumacher\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Preface by Alexander Podelko\n \u003Cul\u003E\n \u003Cli\u003E\n Alexander Podelko bio\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n How to read this book\n \u003Cul\u003E\n \u003Cli\u003E\n I just want to discover Apache JMeter\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n There is nothing and I have to do everything\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n I am joining a performance team\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n I need to do a load test from scratch\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n I need script load test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n I need to help developers to make load test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n I need to analyse and presents results from a load test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n I need to make shift left strategy\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Quick start with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Our process\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Setup JMeter to record our browsing session\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Configure your browser\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Save our script\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Validate our script with only one user\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Setup our load test and launch it\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Run our load test and analyze it\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n JMeter overview\n \u003Cul\u003E\n \u003Cli\u003E\n JMeter overview\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Types of load tests supported\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Supported test protocols\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Reporting\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Why is it still important to make load test today?\n \u003Cul\u003E\n \u003Cli\u003E\n Why performance matters?\n \u003Cul\u003E\n \u003Cli\u003E\n Better user experience\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Better SEO (Search Engine Optimization)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Better conversion rate\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Reduce cost\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n What has changed in the last years and why it is not enough?\n \u003Cul\u003E\n \u003Cli\u003E\n Provisioning a server is easiest with Cloud\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n More powerful server\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Autoscaling is easy with Cloud\u002FKubernetes\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Canary release deployment\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Blue\u002FGreen deployment\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Feature Flipping allows to quickly disable a faulty feature\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Design for failure\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Other reasons why it is still important to make load test today\n \u003Cul\u003E\n \u003Cli\u003E\n Performance culture\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Don’t live with Broken Windows\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Put into production the healthiest application\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Fine tune as much as possible the architecture and application\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Understand the weak points of the application\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Reproduce a performance or multithreading issue detected in production to fix it\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Give business an idea of future response times when a new application goes live\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Anticipate Sales period\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Compare two versions of the same application\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Confirm\u002Ftune the alerting system\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Validate\u002Fimprove monitoring (metrics, tools, dashboards, etc.)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Find the soft limits of the AWS infrastructure\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Designing a test case\n \u003Cul\u003E\n \u003Cli\u003E\n Introduction\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Define your goal\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Type of load test\n \u003Cul\u003E\n \u003Cli\u003E\n Smoke Test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Performance\u002FLoad Test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Stress Test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Breakpoint Test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Soak\u002FEndurance Test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Failover\u002FResilience Test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Spike Test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Other\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Summary\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load model\n \u003Cul\u003E\n \u003Cli\u003E\n Closed model vs Open model\n \u003Cul\u003E\n \u003Cli\u003E\n Closed model\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Open model\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Why is it important to choose the right model?\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Implementation in JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Concurrency user (\u003Cem\u003EClosed model\u003C\u002Fem\u003E)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Throughput (\u003Cem\u003EOpen model\u003C\u002Fem\u003E)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Arrivals rate (\u003Cem\u003EOpen model\u003C\u002Fem\u003E)\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Arrivals rate model\n \u003Cul\u003E\n \u003Cli\u003E\n Poisson process with Precise Throughput Timer\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Constant arrival rate with Thread Group\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Constant arrival rate with Constant Throughput Timer\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Arrival rate with Open Model Thread Group\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Think time\n \u003Cul\u003E\n \u003Cli\u003E\n Constant think time with Constant Timer\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Uniform distribution think time with Uniform Random Timer\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Gaussian\u002FNormal distribution think time with Gaussian Random Timer\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Poisson distribution think time with Poisson Random Timer\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n All think time we want with JSR223 Timer\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Structure of a test case\n \u003Cul\u003E\n \u003Cli\u003E\n Ramp Up\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Plateau\u002FStep\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Ramp Down\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example: step load test\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Identify critical business scenarios to script\n \u003Cul\u003E\n \u003Cli\u003E\n Frequent\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Vital\u002FBusiness critical\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Technically risky\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Legally risky\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Brand image risk\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Summary\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n How many virtual users do I need?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Identify Service Level Agreements (SLAs)\n \u003Cul\u003E\n \u003Cli\u003E\n Why SLA?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Identify SLAs, use case 1: SLAs already exists\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Identify SLAs, use case 2: SLAs don’t exist, but business has a clear idea of them\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Identify SLAs, use case 3: SLAs don’t exist and business does not have a clear idea of them\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Best practices\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Implement them in Apache JMeter\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Parameters to take into account when creating a scenario\n \u003Cul\u003E\n \u003Cli\u003E\n Vary user input data\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Reuse the same values\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Pre-calculate input data vs random input data\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Vary the type of users\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Vary and adjust think times\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Adjust the ramp up time\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Adjust the test duration\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Error handling\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n User connection type\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Size of the scenarios\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Meeting point\u002Frendez-vous\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Cookie Management\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Cache Management\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Important concepts in JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Scoping\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Elements execution order\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n How Timers scope works\n \u003Cul\u003E\n \u003Cli\u003E\n Rule 1: Timers are executed before each sampler in their scope.\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Rule 2: If there is more than one timer in the scope, all the timers will be processed before the sampler.\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Control the execution order of \u003Cem\u003ETimers\u003C\u002Fem\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n How Assertions scope works\n \u003Cul\u003E\n \u003Cli\u003E\n Rule 1: Assertions are executed after each sampler in their scope or to parent samplers\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Rule 2: Failed assertions cause the failure of the entire Transaction Controller\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Rule 3: Assertions can validate main sample and\u002For sub-samples\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Rule 4: Be careful with low performing assertions\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Our advice\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n How properties differ from variables\n \u003Cul\u003E\n \u003Cli\u003E\n How properties are created\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n How variables are created\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n How ${} differs from ${_P}\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Preparing the test environment (injectors and tested system)\n \u003Cul\u003E\n \u003Cli\u003E\n Introduction\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Prepare the injectors\n \u003Cul\u003E\n \u003Cli\u003E\n Never host injectors on the same servers as the tested system\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Calibrating your test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Monitor injectors\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Prepare Apache JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Use the latest version\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n JMeter memory configuration\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Prepare the network\n \u003Cul\u003E\n \u003Cli\u003E\n IP Spoofing\n \u003Cul\u003E\n \u003Cli\u003E\n Setting up \u003Cem\u003EIP Spoofing\u003C\u002Fem\u003E:\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Avoid load testing behind a proxy\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Prepare the tested system\n \u003Cul\u003E\n \u003Cli\u003E\n A tested environment\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n An environment consistent with the target\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Datasets\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Take into account calls to third party services\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Disable protection systems\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Isolated environment\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n License Management\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Summary\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Monitoring the tested system\n \u003Cul\u003E\n \u003Cli\u003E\n Monitoring\u002Fprofiling tools and their features\n \u003Cul\u003E\n \u003Cli\u003E\n Overhead\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Metrics\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Logs\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Instrumentation\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Sampling\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Distributed tracing\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Memory monitoring\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Thread monitoring\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Exception monitoring\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Database monitoring\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Continuous Profiling\u002FAPM (Application Performance Monitoring)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Network monitoring\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Events monitoring\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Monitoring methodology\n \u003Cul\u003E\n \u003Cli\u003E\n USE method (Utilisation, Saturation & Errors)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n RED method (Rate, Errors & Duration)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Four Golden Signals (Latency, Traffic, Errors & Saturation) method\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Our advice\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Being productive with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Introduction\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Before starting the recording of the script\n \u003Cul\u003E\n \u003Cli\u003E\n Choose if static resources are important or not\n \u003Cul\u003E\n \u003Cli\u003E\n Solution 1: Do not take them into account\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Solution 2: Let JMeter manage them\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Solution 3: Manage it ourselves\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Apply a naming convention for transactions\u002Frequests\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Modify or learn keyboard shortcuts\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Have a script base quickly\n \u003Cul\u003E\n \u003Cli\u003E\n Pre-populate HTTP Request Defaults before recording the script\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Use the HTTP(S) Test Script Recorder element\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n BlazeMeter Chrome Extension\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Use Tools \u002F Import from cURL\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Import requests from HAR file\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Recording HTTPS website\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Save time when working on the script\n \u003Cul\u003E\n \u003Cli\u003E\n Global Assertion\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Re-Use script parts\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Share an object between different Thread Groups\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Get the most out of CSV files\n \u003Cul\u003E\n \u003Cli\u003E\n The different modes\u002Foptions of CSV reader\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n CSV file and JSON content\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Data coming from several CSV files\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n CSV and Groovy\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Using Regular Expression Extractor on content with spaces and multiple lines\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Add headers to our HTTP requests\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Waiting with While Controller\n \u003Cul\u003E\n \u003Cli\u003E\n Wait for the end of execution: example 1\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Wait for the end of execution: example 2\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Wait for three products to be added to the cart.\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Exit from While if the last action returns an error.\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n The right Extractor at the right time\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Handle cookies\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Set HTTP status code 404 as success in JMeter\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Debugging a script\n \u003Cul\u003E\n \u003Cli\u003E\n Using View Results Tree\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Capture errors\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Debug Sampler\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n jp@gc - Dummy Sampler\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Log Viewer\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n BlazeMeter Step-by-step Debugger\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n The old-fashioned way in the console\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Use a third-party tool\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Finalise a script\n \u003Cul\u003E\n \u003Cli\u003E\n Change the name of a transaction according to a parameter\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Mark a response as an error\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Execute an action based on the status of the previous one\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Use timeouts\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load Testing a website\n \u003Cul\u003E\n \u003Cli\u003E\n A bit of theory\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Set up with JMeter\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Methodology\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Put into practice with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Example 1: Find a owner in Spring PetClinic application\n \u003Cul\u003E\n \u003Cli\u003E\n Our scenario to script\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n The recording\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Step 1: Work on “Go to the home page”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Step 2: Work on “Do a search on the owner of a pet”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Step 3: Work on “View the details of the owner”\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 2: Add an owner\u002FDisplay last owner in Spring PetClinic application\n \u003Cul\u003E\n \u003Cli\u003E\n Step 1: Add an owner\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Step 2: Display last owner\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 3: Technical tests with Byteman\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 4: Technical tests with JProfiler\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 5: Tricking captchas with a Java Request\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load Testing web services\n \u003Cul\u003E\n \u003Cli\u003E\n What we will learn\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n A few concepts\n \u003Cul\u003E\n \u003Cli\u003E\n REST (REpresentational State Transfer) web services\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n GraphQL (Graph Query Language)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n REST vs GraphQL\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Set up with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Tips\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Methodology\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Practice with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Load test a REST web service: Spring PetClinic REST\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load test a GraphQL web service: Spring PetClinic GraphQL\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load Testing a database server\n \u003Cul\u003E\n \u003Cli\u003E\n A bit of theory\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Methodology\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Setup with JMeter\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Putting theory into practice with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Example 1: Load test of a database\n \u003Cul\u003E\n \u003Cli\u003E\n Avoiding duplication using Include Controller\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Avoiding duplication using Module Controller\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 2: Studying indexes impact on performance\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 3: ETL\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load Testing Message Oriented Middleware (MOM) via JMS\n \u003Cul\u003E\n \u003Cli\u003E\n What we will learn\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n A bit of theory\n \u003Cul\u003E\n \u003Cli\u003E\n Asynchronous messages\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Decoupling\n \u003Cul\u003E\n \u003Cli\u003E\n Technology decoupling\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Geographical Decoupling (\u003Cem\u003ELocation transparency\u003C\u002Fem\u003E)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Time decoupling\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Back pressure\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Communication models\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Types of delivery semantics\n \u003Cul\u003E\n \u003Cli\u003E\n At Most Once\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n At Least Once\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Exactly Once\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Summary\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n What is a message composed of?\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Set up with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Installation of MOM libraries\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n JMS Point-to-Point\n \u003Cul\u003E\n \u003Cli\u003E\n JMS Resources and JNDI Properties\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Communication style\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Priority\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Use non-persistent delivery mode?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n JMS Selector\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example with Apache ActiveMQ Classic\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Publish\u002FSubscribe\n \u003Cul\u003E\n \u003Cli\u003E\n JMS Publisher\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n JMS Subscriber\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Methodology\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Put into practice with JMeter\n \u003Cul\u003E\n \u003Cli\u003E\n Example 1: Test the configuration of a MOM server with point-to-point\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 2: Test the performance of our consumer with JMS Publish\u002FSubscribe\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 3: Testing the configuration of a MOM server with Publish\u002FSubscribe\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 4: Test any MOM\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Performing a load test\n \u003Cul\u003E\n \u003Cli\u003E\n Introduction\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Methodology\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Before the execution of the load test\n \u003Cul\u003E\n \u003Cli\u003E\n Testing your script\u002Fdataset with the graphical interface\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Check the injectors\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Be careful with the use Extractors to avoid injection problems\n \u003Cul\u003E\n \u003Cli\u003E\n Regular Expression Extractor\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n XPath Extractor\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Extractor performances\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Be careful with the use Assertions to avoid injection problems\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Be careful with the use of custom scripting to avoid injection problems\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Generate reports at the end of the test\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Execute load test\n \u003Cul\u003E\n \u003Cli\u003E\n Running your test from the command line\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Running your test on the command line with Taurus\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Running your test from Apache Maven\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Running your test from Jenkins\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Running your test from Apache Ant\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Visualising, analysing and reporting the load testing results\n \u003Cul\u003E\n \u003Cli\u003E\n Introduction\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n What we will learn\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Prepare our analyse\n \u003Cul\u003E\n \u003Cli\u003E\n Have data to analyse\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Have RAW data\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Having the right granularity on the data\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Have enough data to analyse\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Have the right definition of metrics\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Visualising\n \u003Cul\u003E\n \u003Cli\u003E\n Visualising the results with listeners\n \u003Cul\u003E\n \u003Cli\u003E\n View Results Tree\n \u003Cul\u003E\n \u003Cli\u003E\n Sampler result tab\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Request tab\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Response data tab\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Summary Report\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Aggregate Report\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Backend Listener\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Report Dashboard\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Particularities of the visualization of results for a distributed load test before JMeter 5.0\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Visualizing the results with PaaS load testing tools\n \u003Cul\u003E\n \u003Cli\u003E\n Redline13\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Blazemeter\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Visualizing the results with third party visualizing tools\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Analyse the results\n \u003Cul\u003E\n \u003Cli\u003E\n Methodology\n \u003Cul\u003E\n \u003Cli\u003E\n Example 1: High response time and Low CPU\u002Fmemory\u002Fnetwork\u002Fio disk usage\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 2: High response time and High CPU usage\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Some tips to analyse the results\n \u003Cul\u003E\n \u003Cli\u003E\n Check response time distribution\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Check for spurious events (errors and bad response time)\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Worrying About Your Tail\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Be careful with response time at beginning of the load test\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Have separate statistics for failed and successful response times\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Some examples\n \u003Cul\u003E\n \u003Cli\u003E\n Is the application support increasing number of clients?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Is errors having an impact in response time?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Is Garbage Collector (GC) is optimal?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Is my application is CPU bound?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Is my application is memory bound?\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Reporting\n \u003Cul\u003E\n \u003Cli\u003E\n Prepare the reporting\n \u003Cul\u003E\n \u003Cli\u003E\n Who is the target of the report?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n What is the purpose of the report\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Don’t expose sensitive information\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Methodology\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Structure our load test report\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Choose the right chart types\n \u003Cul\u003E\n \u003Cli\u003E\n Don’t use pie charts\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Prefer bar graphs when we have sparse metrics\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Present errors with toplist\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Timeseries graphs and single-value summaries\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Consider box plot for response time\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Choose the right key metrics\n \u003Cul\u003E\n \u003Cli\u003E\n Define the number of metrics to display in a time series line graphs\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Same key metrics in report and in SLAs\u002Fload model\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Choose the right data aggregation\n \u003Cul\u003E\n \u003Cli\u003E\n Prefer percentiles over average\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n View aggregated data by phase\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Don’t average percentiles\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Define the resolution\u002Fgranularity of the measures\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Choose the correct display for the chart\n \u003Cul\u003E\n \u003Cli\u003E\n Don’t forget to add clear labels, legends and units in graphs\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Axis Forced 0\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Make sure data can be easily seen\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Add annotations for important events\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Add Thresholds in graph\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Integration of JMeter in the DevOps tool chain\n \u003Cul\u003E\n \u003Cli\u003E\n Introduction\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Why\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Organization\u002Fteam topology\n \u003Cul\u003E\n \u003Cli\u003E\n Load testing team in its ivory tower\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n DevOps and load test team collaboration\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n One performance tester integrated on DevOps team\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n No performance tester\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Team of evangelist’s performance testers\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Questions to ask before automation and Shift-Left strategy\n \u003Cul\u003E\n \u003Cli\u003E\n Question 0: Which tool?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 1: How many times do we need to create and maintain scripts?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 2: How can we stabilize the test environment (injectors and tested system) to allow us to compare results?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 3: How long should a test take?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 4: When do we need to execute automated load test?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 5: Do we have someone to analyze the load test results?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 6: When is it acceptable to slow down one part of the application to speed up another?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 7: How to detect slow performance degradation?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 8: How to evaluate the effectiveness of load tests?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 9: How to choose threshold alerting and avoid false positive?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 10: Can we have a production-like environment for exclusive use?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 11: Do we need to inject huge amounts of test data before the test?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 12: Do we need to wait for someone before the test?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 13: How to load test new features?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 14: How to maintain a realistic workload?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 15: How to handle dependencies on external systems?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 16: How to reduce organisational resistance?\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Question 17: How to justify the cost?\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Setting up Shift-Left strategy\n \u003Cul\u003E\n \u003Cli\u003E\n Modification in JMeter script to implement Shift-Left strategy\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Integrating JMeter in our software factory\n \u003Cul\u003E\n \u003Cli\u003E\n Integrating with Jenkins using Maven\n \u003Cul\u003E\n \u003Cli\u003E\n Ensuring the load tests are run on the correct nodes\n \u003Cul\u003E\n \u003Cli\u003E\n Configuring the load test using jmeter-maven-plugin\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Fail the build if error rate of load test is over a threshold\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Configure HTML report\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Configure memory used by JMeter\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Enhancing integration with Jenkins using Performance Plugin\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Integrate JMeter with APM monitoring tools\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Automation\n \u003Cul\u003E\n \u003Cli\u003E\n Example 1: Non-regression testing of memory consumption with EJ JProfiler\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 2: Detecting a Memory leak during an endurance test with EJ JProfiler\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 3: Retrieving SQL queries executed during a load test with YourKit Java Profiler\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 4: Analysis of the Garbage Collector (GC) log file with GCViewer\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Conclusion\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Old Stuff\n \u003Cul\u003E\n \u003Cli\u003E\n Introduction\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load testing web application Java EE 6 Pet Catalog\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load test a SOAP\u002FXML-RPC web-service\n \u003Cul\u003E\n \u003Cli\u003E\n WS-* web services\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n In JMeter\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n REST Web-Service: Discussion Forum\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load test a REST web service: Customer Database\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Example 7: Non-regression testing of Web APIs with Dynatrace APM AppMon\n \u003Cul\u003E\n \u003Cli\u003E\n Registering to Dynatrace using setup Thread Group\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Using the testId in other Thread Group\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n What’s new\n \u003Cul\u003E\n \u003Cli\u003E\n 2024\u002F11\u002F29 release\n \u003Cul\u003E\n \u003Cli\u003E\n Chapter “Designing a test case”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Load Testing web services”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Preparing the test environment (injectors and tested system)”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Quick start with JMeter”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Performing a load test”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “JMeter overview”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Why is it still important to make load test today?”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Load Testing Message Oriented Middleware (MOM) via JMS”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Visualising, analysing and reporting the load testing results”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Load Testing a website\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Old Stuff”\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n 2020\u002F04\u002F28 release\n \u003Cul\u003E\n \u003Cli\u003E\n Chapter “Designing a test case”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Preparing the test environment (injectors and tested system)”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n Chapter “Why is it still important to make load test today?”\n \u003C\u002Fli\u003E\n \u003Cli\u003E\n New chapter “What’s new” at the end of the book\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n \u003C\u002Ful\u003E\n \u003C\u002Fli\u003E\n\u003C\u002Ful\u003E\n","translated_from_id":null,"tweet_text":"Read Master Apache JMeter From load testing to DevOps. on Leanpub!","unpublished_sample":false,"updated_at":"2024-11-30T11:42:06.000Z","vimeo_url":"","available_web_book":true,"word_count":61425,"word_count_published":61425,"youtube_url":"JBRIwqqVPdw","team_discount_package_id":36314,"external_forum_url":null,"num_copies_sold":550,"page_count":720,"percent_complete":100,"seo_title":"Master Apache… by Philippe Mouawad et al. [PDF\u002FiPad\u002FKindle]","title_direction":"ltr","past_editions_reader_count":[],"id":31092,"past_edition":null,"new_edition":null,"default_package":[{"id":36314,"type":"Package"}],"language":[{"id":124,"type":"Language"}],"translated_from":null,"accepted_authors":[{"id":32383,"type":"Author"},{"id":32384,"type":"Author"},{"id":32385,"type":"Author"}],"positioned_accepted_authors":[{"id":32385,"type":"Author"},{"id":32383,"type":"Author"},{"id":32384,"type":"Author"}],"packages":[{"id":36314,"type":"Package"},{"id":55522,"type":"Package"}],"published_bundles":[],"positioned_testimonials":[{"id":776,"type":"Testimonial"},{"id":723,"type":"Testimonial"},{"id":726,"type":"Testimonial"},{"id":727,"type":"Testimonial"}],"past_editions":[],"translations":[],"contributors":[{"id":2017,"type":"Contributor"},{"id":2053,"type":"Contributor"}]}},"errors":{},"indexes":{"{\"landing\":true}":[31092]},"loading":{"{\"landing\":true}":false},"stats":{}},"BookPurchase":{"all":{},"errors":{},"indexes":{},"loading":{}},"Bundle":{"all":{},"errors":{},"indexes":{},"loading":{}},"BundlePackage":{"all":{},"errors":{},"indexes":{},"loading":{}},"BundlePurchase":{"all":{},"errors":{},"indexes":{},"loading":{}},"CartItem":{"all":{},"errors":{},"indexes":{},"loading":{}},"CartPurchase":{"all":{},"errors":{},"indexes":{},"loading":{}},"Category":{"all":{},"errors":{},"indexes":{},"loading":{}},"Cause":{"all":{},"errors":{},"indexes":{"{\"book_slug\":\"master-jmeter-from-load-test-to-devops\"}":[]},"loading":{"{\"book_slug\":\"master-jmeter-from-load-test-to-devops\"}":false}},"Chapter":{"all":{},"errors":{},"indexes":{},"loading":{},"dirty":false},"Choice":{"all":{},"errors":{},"indexes":{},"loading":{}},"CommunityEditionSignup":{"all":{},"errors":{},"indexes":{},"loading":{}},"Contributor":{"all":{"2017":{"type":"Contributor","avatar_url_tiny":"https:\u002F\u002Fs3.amazonaws.com\u002Favatars.leanpub.com\u002Favatars\u002F2017\u002Ftiny\u002Fpodelko_small.jpg?1542094401","avatar_url_small":"https:\u002F\u002Fs3.amazonaws.com\u002Favatars.leanpub.com\u002Favatars\u002F2017\u002Fsmall\u002Fpodelko_small.jpg?1542094401","avatar_url_medium":"https:\u002F\u002Fs3.amazonaws.com\u002Favatars.leanpub.com\u002Favatars\u002F2017\u002Fmedium\u002Fpodelko_small.jpg?1542094401","avatar_url_full":"https:\u002F\u002Fs3.amazonaws.com\u002Favatars.leanpub.com\u002Favatars\u002F2017\u002Ffull\u002Fpodelko_small.jpg?1542094401","blurb":"\u003Cp\u003EOver the last twenty years \u003Ca href=\"mailto:apodelko@yahoo.com\" target=\"_blank\"\u003EAlex Podelko\u003C\u002Fa\u003E supported major performance initiatives for \u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Fcorporate\u002Findex.html\" target=\"_blank\"\u003EOracle\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Fcorporate\u002Facquisitions\u002Fhyperion\u002Findex.html\" target=\"_blank\"\u003EHyperion\u003C\u002Fa\u003E, \u003Ca href=\"https:\u002F\u002Fwww.aetna.com\u002Fabout-us.html\" target=\"_blank\"\u003EAetna\u003C\u002Fa\u003E, and \u003Ca href=\"https:\u002F\u002Fsoftware.intel.com\u002Fen-us\u002F\" target=\"_blank\"\u003EIntel\u003C\u002Fa\u003E in different roles including performance tester, performance analyst, performance architect, and performance engineer. \u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003ECurrently he is Consulting Member of Technical Staff at \u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Findex.html\" target=\"_blank\"\u003EOracle\u003C\u002Fa\u003E, responsible for performance testing and tuning of Hyperion (a.k.a. \u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Fapplications\u002Fperformance-management\u002Findex.html\" target=\"_blank\"\u003EEnterprise Performance Management\u003C\u002Fa\u003E and \u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Fsolutions\u002Fbusiness-analytics\u002Fbusiness-intelligence\u002Findex.html\" target=\"_blank\"\u003EBusiness Intelligence\u003C\u002Fa\u003E) products. Before specializing in performance, Alex led software development for \u003Ca href=\"https:\u002F\u002Fwww.rodnik.ru\u002F\" target=\"_blank\"\u003ERodnik Software\u003C\u002Fa\u003E. \u003C\u002Fp\u003E\u003Cp\u003EHaving more than thirty years of overall experience in the software industry, he holds a PhD in Computer Science from \u003Ca href=\"http:\u002F\u002Fen.gubkin.ru\u002Facademics\u002Ffaculties-and-departments\u002Ffaculty\u002Ffaculty-of-automation-and-computer-science\u002F\" target=\"_blank\"\u003EGubkin University\u003C\u002Fa\u003E and an MBA from \u003Ca href=\"http:\u002F\u002Fwww.bellevue.edu\u002Fdegrees\u002Fmaster\u002Fbusiness-admin-mba\u002F\" target=\"_blank\"\u003EBellevue University\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\u003Cp\u003EAlex periodically talks and writes about performance-related topics, advocating tearing down silo walls between different groups of performance professionals. He currently serves as a board director for the \u003Ca href=\"https:\u002F\u002Fwww.cmg.org\u002F\" target=\"_blank\"\u003EComputer Measurement Group (CMG)\u003C\u002Fa\u003E, a worldwide organization of performance and capacity management professionals.\u003C\u002Fp\u003E","githubname":"","instagramname":"","linkedinname":"","name":"Alexander Podelko","title":"Board director for the Computer Measurement Group (CMG), a worldwide organization of performance and capacity management professionals. ","twittername":"apodelko","username":null,"user_id":null,"book_id":31092,"id":2017,"user":null},"2053":{"type":"Contributor","avatar_url_tiny":"missing_avatar.jpg","avatar_url_small":"missing_avatar.jpg","avatar_url_medium":"missing_avatar.jpg","avatar_url_full":"missing_avatar.jpg","blurb":"\u003Cp\u003ELong term committer in JMeter project and Tomcat. \u003C\u002Fp\u003E\u003Cp\u003EHe has a diploma in mathematics, but found working in IT more appealing. \u003C\u002Fp\u003E\u003Cp\u003EHe really likes to work with open source, as it gives him the ability to dive into the inner workings of those magic things.\u003C\u002Fp\u003E","githubname":"","instagramname":"","linkedinname":"","name":"Felix Schumacher","title":"Apache JMeter committer, developer and Project Management Committee member","twittername":"felschu","username":null,"user_id":null,"book_id":31092,"id":2053,"user":null}},"errors":{},"indexes":{},"loading":{}},"CorrectChoice":{"all":{},"errors":{},"indexes":{},"loading":{}},"Coupon":{"all":{},"errors":{},"indexes":{},"loading":{},"newsletterCoupons":null,"newsletterCouponsLoading":false,"newsletterCouponsErrors":null},"Course":{"all":{},"errors":{},"indexes":{},"loading":{}},"CourseAttempt":{"all":{},"errors":{},"indexes":{},"loading":{}},"CourseAuthor":{"all":{},"errors":{},"indexes":{},"loading":{}},"CoursePurchase":{"all":{},"errors":{},"indexes":{},"loading":{}},"CourseSet":{"all":{},"errors":{},"indexes":{},"loading":{}},"CourseSetAttempt":{"all":{},"errors":{},"indexes":{},"loading":{}},"CourseSetPackage":{"all":{},"errors":{},"indexes":{},"loading":{}},"CourseSetPurchase":{"all":{},"errors":{},"indexes":{},"loading":{}},"CourseVersion":{"all":{},"errors":{},"indexes":{},"loading":{}},"CurrentUser":{"all":{},"errors":{},"indexes":{},"loading":{},"id":null},"Editor":{"all":{},"errors":{},"indexes":{},"loading":{}},"EditorFile":{"all":{},"errors":{},"indexes":{},"loading":{}},"EditorResource":{"all":{},"errors":{},"indexes":{},"loading":{}},"GoogleDocsBook":{"all":{},"errors":{},"indexes":{},"loading":{}},"Invitation":{"all":{},"errors":{},"indexes":{},"loading":{}},"Language":{"all":{"124":{"type":"Language","books_count":26702,"code":"eng","created_at":"2015-04-24T03:26:30.000Z","name":"English","code2":"en","direction":"ltr","updated_at":"2024-11-30T21:57:31.000Z","id":124}},"errors":{},"indexes":{},"loading":{}},"Notification":{"all":{},"errors":{},"indexes":{},"loading":{}},"Order":{"all":{},"errors":{},"indexes":{},"loading":{}},"OrderItem":{"all":{},"errors":{},"indexes":{},"loading":{}},"Package":{"all":{"36314":{"type":"Package","created_at":"2015-10-18T19:51:29.000Z","packagable_id":31092,"packagable_type":"Book","packagable_slug":"master-jmeter-from-load-test-to-devops","allow_free_purchases":false,"description":"","free_minimum":false,"free_purchase_only":false,"free_purchase_requires_membership":true,"is_package":true,"leanpub_can_adjust_prices":false,"leanpub_can_create_team_discounts":false,"maximum_price":70,"minimum_paid_price":"24.95","name":"The Book","package":true,"quantity":1,"ratio_of_revenue_to_authors":"1.0","ratio_of_revenue_to_causes":"0.0","royalties_to_revenue_ratio":"0.8","short_about_the_book":null,"short_description":"","short_tagline":"\u003Cp\u003EMaster performance testing and JMeter with this book written by three members of Apache JMeter's...\u003C\u002Fp\u003E","show_what_author_gets":true,"show_what_cause_gets":false,"slug":"master_jmeter_book","subtitle":"Prefaced by Alexander Podelko","suggested_price":"34.95","stripe_name":"Master Apache JMeter From load testing to DevOps.","stripe_package_name":"The Book","stripe_description":"The Book","stripe_image":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list2x?1732865322","tagline":"\u003Cp\u003EMaster performance testing and JMeter with this book written by three members of Apache JMeter's team who are also experts in the performance field.\u003C\u002Fp\u003E\u003Cp\u003EYou will deeply understand how to get the most out of it, be more productive and integrate it into your Agile\u002FDevOps processes.\u003Cstrong\u003E \u003C\u002Fstrong\u003E\u003C\u002Fp\u003E","team_discount":false,"title":"Master Apache JMeter From load testing to DevOps.","title_page_url_s_list":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list?1732865322","title_page_url_s_shelf":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_shelf?1732865322","title_page_url_s_featured":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_featured?1732865322","title_page_url_s_hero":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_hero?1732865322","updated_at":"2018-12-23T09:23:57.000Z","id":36314,"packagable":[{"id":31092,"type":"Book"}],"asset_packagings":[],"assets":[]},"55522":{"type":"Package","created_at":"2018-11-04T14:26:22.000Z","packagable_id":31092,"packagable_type":"Book","packagable_slug":"master-jmeter-from-load-test-to-devops","allow_free_purchases":false,"description":"This package is for 3 copies of the \"Master JMeter : from load testing to DevOps\" at a 25% discount.","free_minimum":false,"free_purchase_only":false,"free_purchase_requires_membership":true,"is_package":true,"leanpub_can_adjust_prices":false,"leanpub_can_create_team_discounts":false,"maximum_price":160,"minimum_paid_price":"56.25","name":"25% discount - Pack of 3","package":true,"quantity":3,"ratio_of_revenue_to_authors":"1.0","ratio_of_revenue_to_causes":"0.0","royalties_to_revenue_ratio":"0.8","short_about_the_book":null,"short_description":"This package is for 3 copies of the \"Master JMeter : from load testing to DevOps\" at a 25%...","short_tagline":"\u003Cp\u003EMaster performance testing and JMeter with this book written by three members of Apache JMeter's...\u003C\u002Fp\u003E","show_what_author_gets":true,"show_what_cause_gets":false,"slug":"pack_3","subtitle":"Prefaced by Alexander Podelko","suggested_price":"78.75","stripe_name":"Master Apache JMeter From load testing to DevOps.","stripe_package_name":"25% discount - Pack of 3","stripe_description":"This package is for 3 copies of the \"Master JMeter : from load testing to DevOps\" at a 25% discount.","stripe_image":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list2x?1732865322","tagline":"\u003Cp\u003EMaster performance testing and JMeter with this book written by three members of Apache JMeter's team who are also experts in the performance field.\u003C\u002Fp\u003E\u003Cp\u003EYou will deeply understand how to get the most out of it, be more productive and integrate it into your Agile\u002FDevOps processes.\u003Cstrong\u003E \u003C\u002Fstrong\u003E\u003C\u002Fp\u003E","team_discount":false,"title":"Master Apache JMeter From load testing to DevOps.","title_page_url_s_list":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list?1732865322","title_page_url_s_shelf":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_shelf?1732865322","title_page_url_s_featured":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_featured?1732865322","title_page_url_s_hero":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_hero?1732865322","updated_at":"2018-12-23T09:22:44.000Z","id":55522,"packagable":[{"id":31092,"type":"Book"}],"asset_packagings":[],"assets":[]}},"errors":{},"indexes":{},"loading":{}},"PackageDiscount":{"all":{},"errors":{},"indexes":{},"loading":{}},"PartnerSale":{"all":{},"errors":{},"indexes":{},"loading":{}},"PendingProduct":{"all":{},"errors":{},"indexes":{},"loading":{}},"PendingServiceProduct":{"all":{},"errors":{},"indexes":{},"loading":{}},"Plan":{"all":{},"errors":{},"indexes":{},"loading":{}},"Podcast":{"all":{},"errors":{},"indexes":{},"loading":{}},"PodcastEpisode":{"all":{},"errors":{},"indexes":{},"loading":{}},"PossibleReader":{"all":{},"errors":{},"indexes":{},"loading":{},"showForm":true},"Publisher":{"all":{"1":{"links":{"self":"\u002Fp\u002Fleanpub"},"type":"Publisher","created_at":"2012-10-20T04:42:39.000Z","can_use_books_tab":true,"can_use_bundles_tab":true,"can_use_courses_tab":true,"can_use_course_sets_tab":true,"publisher_blurb":"\u003Cp\u003ELeanpub empowers authors to self-publish in-progress ebooks.\u003C\u002Fp\u003E","reversed_logo_url":"missing_avatar.jpg","logo_url":"https:\u002F\u002Fs3.amazonaws.com\u002Fpublisherlogos.leanpub.com\u002Flogos\u002F1\u002Fverso_page\u002Fleanpub_logo.png?1501739906","name":"Leanpub","slug":"leanpub","university":false,"about_university":null,"cover_url":"missing_avatar.jpg","cover_uploaded":false,"updated_at":"2017-08-03T05:58:28.000Z","has_subscription":true,"id":1,"editors":[]}},"errors":null,"indexes":{"{\"book_slug\":\"master-jmeter-from-load-test-to-devops\"}":[1]},"loading":{"{\"book_slug\":\"master-jmeter-from-load-test-to-devops\"}":false},"index":{},"slugValidity":null,"userValidity":null,"creating":false},"Purchase":{"all":{},"errors":{},"indexes":{},"loading":{},"markingAsPinged":{}},"PurchasedPackage":{"all":{},"errors":{},"indexes":{},"loading":{}},"Question":{"all":{},"errors":{},"indexes":{},"loading":{}},"QuestionAttempt":{"all":{},"errors":{},"indexes":{},"loading":{}},"QuestionWithHint":{"all":{},"errors":{},"indexes":{},"loading":{}},"Quiz":{"all":{},"errors":{},"indexes":{},"loading":{}},"QuizAttempt":{"all":{},"errors":{},"indexes":{},"loading":{}},"RetiredQuiz":{"all":{},"errors":{},"indexes":{},"loading":{}},"ServicePurchase":{"all":{},"errors":{},"indexes":{},"loading":{}},"ShelfBook":{"all":{},"errors":{},"indexes":{},"loading":{}},"ShelfSpot":{"all":{},"errors":{},"indexes":{},"loading":{},"shelfBooks":{},"full":[],"taxData":null,"options":null},"ShelfSpotOption":{"indexes":{},"globalAuthorPlansLoading":false,"all":{},"globalInstructodPlansErrors":null,"globalInstructodPlansLoading":false,"pricing":null,"globalAuthorPlansErrors":null,"errors":{},"pricingErrors":null,"pricingLoading":false,"globalInstructodPlans":null,"loading":{},"globalAuthorPlans":null},"ShoppingCart":{"cart":null,"errors":null,"loading":false},"SimpleAuthor":{"all":{"20498":{"type":"SimpleAuthor","created_at":"2014-09-23T15:53:06.000Z","name":"Antonio Gomes Rodrigues","position":1,"username":"antoniogomesrodrigues","user_id":352045,"book_id":19607,"cause_id":null,"id":20498,"user":[{"id":352045,"type":"User"}],"book":[{"id":19607,"type":"Book"}]},"29773":{"type":"SimpleAuthor","created_at":"2015-07-06T20:05:25.000Z","name":"Bruno Demion (Milamber)","position":2,"username":"milamber","user_id":518676,"book_id":19607,"cause_id":null,"id":29773,"user":[{"id":518676,"type":"User"}],"book":[{"id":19607,"type":"Book"}]},"31592":{"type":"SimpleAuthor","created_at":"2015-09-14T11:29:47.000Z","name":"Philippe Mouawad","position":3,"username":"pmouawad","user_id":564680,"book_id":19607,"cause_id":null,"id":31592,"user":[{"id":564680,"type":"User"}],"book":[{"id":19607,"type":"Book"}]},"32383":{"type":"SimpleAuthor","created_at":"2015-10-18T19:51:29.000Z","name":"Philippe Mouawad","position":2,"username":"pmouawad","user_id":564680,"book_id":31092,"cause_id":null,"id":32383,"user":[{"id":564680,"type":"User"}],"book":[{"id":31092,"type":"Book"}]},"32384":{"type":"SimpleAuthor","created_at":"2015-10-18T20:02:44.000Z","name":"Milamber","position":3,"username":"milamber","user_id":518676,"book_id":31092,"cause_id":null,"id":32384,"user":[{"id":518676,"type":"User"}],"book":[{"id":31092,"type":"Book"}]},"32385":{"type":"SimpleAuthor","created_at":"2015-10-18T20:03:31.000Z","name":"Antonio Gomes Rodrigues","position":1,"username":"antoniogomesrodrigues","user_id":352045,"book_id":31092,"cause_id":null,"id":32385,"user":[{"id":352045,"type":"User"}],"book":[{"id":31092,"type":"Book"}]}},"errors":{},"indexes":{},"loading":{}},"SimpleBook":{"all":{"19607":{"type":"SimpleBook","title":"Maîtriser Apache JMeter","slug":"maitriser-jmeter-du-test-de-charge-a-devops","tagline":"\u003Cp\u003EToute la puissance d'Apache JMeter expliquée par ses commiteurs et utilisateurs experts. De l'intégration continue en passant par le Cloud, vous découvrirez comment intégrer JMeter à vos processus \"Agile\" et Devops.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003EIf you're looking for the newer english version of this book, go to \u003C\u002Fstrong\u003E\u003Ca href=\"https:\u002F\u002Fleanpub.com\u002Fmaster-jmeter-from-load-test-to-devops\u002F\" target=\"_blank\"\u003E\u003Cstrong\u003EMaster JMeter : From load testing to DevOps\u003C\u002Fstrong\u003E\u003C\u002Fa\u003E\u003C\u002Fp\u003E","title_page_url_s_mini":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_mini?1620444366","title_page_url_s_mini2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_mini2x?1620444366","title_page_url_s_list":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_list?1620444366","title_page_url_s_list2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_list2x?1620444366","title_page_url_s_shelf":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_shelf?1620444366","title_page_url_s_shelf2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_shelf2x?1620444366","title_page_url_s_featured":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_featured?1620444366","title_page_url_s_featured2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_featured2x?1620444366","title_page_url_s_hero":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_hero?1620444366","title_page_url_s_hero2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaitriser-jmeter-du-test-de-charge-a-devops\u002Fs_hero2x?1620444366","id":19607,"accepted_authors":[{"id":20498,"type":"SimpleAuthor"},{"id":29773,"type":"SimpleAuthor"},{"id":31592,"type":"SimpleAuthor"}]},"31092":{"type":"SimpleBook","title":"Master Apache JMeter From load testing to DevOps.","slug":"master-jmeter-from-load-test-to-devops","tagline":"\u003Cp\u003EMaster performance testing and JMeter with this book written by three members of Apache JMeter's team who are also experts in the performance field.\u003C\u002Fp\u003E\u003Cp\u003EYou will deeply understand how to get the most out of it, be more productive and integrate it into your Agile\u002FDevOps processes.\u003Cstrong\u003E \u003C\u002Fstrong\u003E\u003C\u002Fp\u003E","title_page_url_s_mini":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_mini?1732865322","title_page_url_s_mini2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_mini2x?1732865322","title_page_url_s_list":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list?1732865322","title_page_url_s_list2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_list2x?1732865322","title_page_url_s_shelf":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_shelf?1732865322","title_page_url_s_shelf2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_shelf2x?1732865322","title_page_url_s_featured":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_featured?1732865322","title_page_url_s_featured2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_featured2x?1732865322","title_page_url_s_hero":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_hero?1732865322","title_page_url_s_hero2x":"https:\u002F\u002Fd2sofvawe08yqg.cloudfront.net\u002Fmaster-jmeter-from-load-test-to-devops\u002Fs_hero2x?1732865322","id":31092,"accepted_authors":[{"id":32383,"type":"SimpleAuthor"},{"id":32384,"type":"SimpleAuthor"},{"id":32385,"type":"SimpleAuthor"}]}},"errors":{},"indexes":{"{\"list\":true,\"related_book\":31092}":[31092,19607]},"loading":{"{\"list\":true,\"related_book\":31092}":false}},"SimpleBundle":{"all":{},"errors":{},"indexes":{},"loading":{}},"SimpleCourse":{"all":{},"errors":{},"indexes":{},"loading":{}},"SimpleCourseAuthor":{"all":{},"errors":{},"indexes":{},"loading":{}},"SimpleCourseSet":{"all":{},"errors":{},"indexes":{},"loading":{}},"SocialPost":{"all":{},"errors":{},"indexes":{},"loading":{}},"StepFunctionExecution":{"all":{},"errors":{},"indexes":{},"loading":{}},"StoreBook":{"all":{},"errors":{},"indexes":{},"loading":{}},"Subscription":{"all":{},"errors":{},"loading":{},"taxData":{}},"TaxInfo":{"all":{},"errors":{},"indexes":{},"loading":{}},"Testimonial":{"all":{"723":{"type":"Testimonial","avatar_url_full":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F723\u002Ffull\u002FDeepak_Shetty.png?1545910021","avatar_url_medium":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F723\u002Fmedium\u002FDeepak_Shetty.png?1545910021","avatar_url_small":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F723\u002Fsmall\u002FDeepak_Shetty.png?1545910021","avatar_url_tiny":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F723\u002Ftiny\u002FDeepak_Shetty.png?1545910021","book_id":31092,"created_at":"2018-12-27T10:19:56.000Z","leanpub":null,"name":"Deepak Shetty","position":2,"text":"This book fills in the details for many of the problems that JMeter users run into - which is practical advice on how to use the various components of the extensible JMeter ecosystem. This book is a very good resource to developers and testers who have some exposure to testing and are now looking to get into the more advanced JMeter features and using tools that JMeter integrates with. ","title":"Performance Expert and JMeter committer (http:\u002F\u002Ftheworkaholic.blogspot.com\u002F)","updated_at":"2019-03-12T11:59:44.000Z","username":null,"id":723},"726":{"type":"Testimonial","avatar_url_full":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F726\u002Ffull\u002FAnthonyGauthier.jpeg?1545981510","avatar_url_medium":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F726\u002Fmedium\u002FAnthonyGauthier.jpeg?1545981510","avatar_url_small":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F726\u002Fsmall\u002FAnthonyGauthier.jpeg?1545981510","avatar_url_tiny":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F726\u002Ftiny\u002FAnthonyGauthier.jpeg?1545981510","book_id":31092,"created_at":"2018-12-28T07:18:31.000Z","leanpub":null,"name":"Anthony Gauthier","position":3,"text":"As an active member of the community & a seasoned JMeter user, I believe this book should be a must have for any JMeter user-beginner or expert. As a beginner, it will show you all of what you need to know to successfully establish meaningful test scenarios. As an advanced user, it will be a nice reminder of what really should be in your tests as well as making you discover some JMeter features you've never really used. I highly recommend it to anyone involved in performance testing\u002Fengineering.","title":"Software Developer, Performance Engineer, ElasticSearch backend listener author (https:\u002F\u002Fwww.github.com\u002Fdelirius325)","updated_at":"2019-03-12T11:59:44.000Z","username":null,"id":726},"727":{"type":"Testimonial","avatar_url_full":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F727\u002Ffull\u002Fnaveenkumar_n.jpg?1546071593","avatar_url_medium":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F727\u002Fmedium\u002Fnaveenkumar_n.jpg?1546071593","avatar_url_small":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F727\u002Fsmall\u002Fnaveenkumar_n.jpg?1546071593","avatar_url_tiny":"https:\u002F\u002Fs3.amazonaws.com\u002Ftestimonials.leanpub.com\u002Favatars\u002F727\u002Ftiny\u002Fnaveenkumar_n.jpg?1546071593","book_id":31092,"created_at":"2018-12-29T07:58:51.000Z","leanpub":null,"name":"NaveenKumar Namachivayam","position":4,"text":"If you are getting started with JMeter, then this book is for you; if you are already experienced in JMeter, then this book is also for you; Even if you are an expert in JMeter, then also this book is for you. It teaches both: performance testing and engineering concepts clearly with examples. After reading this book, you can load test a website, database, web services, integrate your scripts with your enterprise CI\u002FCD pipeline.\r\n","title":"Performance test engineer https:\u002F\u002FQAInsights.com","updated_at":"2019-03-12T11:59:44.000Z","username":null,"id":727},"776":{"type":"Testimonial","avatar_url_full":"missing_avatar.jpg","avatar_url_medium":"missing_avatar.jpg","avatar_url_small":"missing_avatar.jpg","avatar_url_tiny":"missing_avatar.jpg","book_id":31092,"created_at":"2019-03-12T11:59:25.000Z","leanpub":null,"name":"Software Testing Magazine","position":1,"text":"The book provides an impressive amount of knowledge on how to successfully use JMeter, from your first steps with the tool to its integration in a DevOps approach.\r\n...\r\nThis book is naturally a must have for every software tester working with JMeter, but it will also provide valuable knowledge and solution to every software tester or developer concerned with the performance of her or his application.\r\n\r\nRead full review at http:\u002F\u002Fwww.softwaretestingmagazine.com\u002Fknowledge\u002Fmaster-apache-jmeter\u002F","title":"A must have for every software tester working with JMeter","updated_at":"2019-03-12T12:02:05.000Z","username":null,"id":776}},"errors":{},"indexes":{},"loading":{}},"Theme":{"all":{},"errors":{},"indexes":{},"loading":{}},"Transcript":{"all":{},"errors":{},"indexes":{},"loading":{}},"User":{"all":{"352045":{"type":"User","avatar_url_full":"https:\u002F\u002Fsecure.gravatar.com\u002Favatar\u002F11151972f58437babe04ebb6595e1b94?r=pg&d=mm","avatar_url_medium":"https:\u002F\u002Fsecure.gravatar.com\u002Favatar\u002F11151972f58437babe04ebb6595e1b94?r=pg&d=mm","avatar_url_small":"https:\u002F\u002Fsecure.gravatar.com\u002Favatar\u002F11151972f58437babe04ebb6595e1b94?r=pg&d=mm","avatar_url_tiny":"https:\u002F\u002Fsecure.gravatar.com\u002Favatar\u002F11151972f58437babe04ebb6595e1b94?r=pg&d=mm","created_at":"2014-09-23T15:53:05.000Z","facebook_url":null,"family_name_pp":"Rodrigues","githubname":"","given_names_pp":"Antonio Gomes","instagramname":null,"latest_podcast_episode":null,"linkedinname":null,"mastodon_name":null,"mastodon_url":"","name":"Antonio Gomes Rodrigues","profile_blurb":"\u003Cp\u003EAntonio Gomes Rodrigues est expert dans le domaine des performances applicatives depuis plus de 10 ans.\u003C\u002Fp\u003E\u003Cp\u003ESes missions l’ont amené à travailler :\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003ESur les performances des sites web à fort trafic\u003C\u002Fli\u003E\u003Cli\u003ESur les performances d'une application pour courtiers\u003C\u002Fli\u003E\u003Cli\u003ESur les performances de clients lourds, d'applications dans le cloud, d'application web, etc.\u003C\u002Fli\u003E\u003Cli\u003EAvec divers profilers : JProfiler, Yourkit, VisualVM, etc.\u003C\u002Fli\u003E\u003Cli\u003EAvec divers APM : Dynatrace, AppDynamics, Introscope, NewRelic, etc.\u003C\u002Fli\u003E\u003Cli\u003EAvec divers outils de test de charge : JMeter, LoadRunner, etc.\u003C\u002Fli\u003E\u003Cli\u003EDans diverses missions : tests de charge, mise en place de stratégies de performance, formations, audits de performance, diagnostics, etc.\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003EIl partage ses connaissances de la performance applicative lors de conférences, sur son \u003Ca href=\"http:\u002F\u002Farodrigues.developpez.com\u002F\" target=\"_blank\"\u003Eblog\u003C\u002Fa\u003E et lors de relectures techniques de livre.En plus de l'utiliser lors de ses missions, il contribue à JMeter.\u003C\u002Fp\u003E","twittername":"ra0077","unpaid_royalties":"59.76","updated_at":"2024-10-07T23:10:41.000Z","username":"antoniogomesrodrigues","wishlist_count":0,"wishlist_id":1729301,"youtube_name":null,"id":352045},"518676":{"type":"User","avatar_url_full":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F518676\u002Ffull\u002Favatar-milamber-petit.png?1436213901","avatar_url_medium":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F518676\u002Fmedium\u002Favatar-milamber-petit.png?1436213901","avatar_url_small":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F518676\u002Fsmall\u002Favatar-milamber-petit.png?1436213901","avatar_url_tiny":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F518676\u002Ftiny\u002Favatar-milamber-petit.png?1436213901","created_at":"2015-07-06T19:44:00.000Z","facebook_url":null,"family_name_pp":"","githubname":"milamberspace","given_names_pp":"Milamber","instagramname":null,"latest_podcast_episode":null,"linkedinname":null,"mastodon_name":null,"mastodon_url":"","name":"Milamber","profile_blurb":"\u003Cp\u003EBruno Demion, better known as Milamber, is a French computer scientist expatriated in Morocco since 2002, currently living in Témara (near Rabat).\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe works in a technology consulting and expertise company as a partner, senior technical expert and technical architect.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EThrough his work and passion for IT, Milamber has strong skills in performance, troubleshooting, security and technical architectures around web technologies.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003ESince December 2003, he has been working with JMeter to perform load tests in various missions and training courses.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe contributes as much as possible to the JMeter project in his spare time, in particular on the translation into French of the graphical interface, corrections of anomalies as well as some behaviors (proxy https, new results tree, icon bar, etc.).\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe is currently a committer, PMC member and the PMC Chair of the Apache JMeter project within the Apache Software Foundation - ASF. He is also an official ASF member. His Apache ID is milamber.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EMilamber also has a personal blog with many articles and tutorials on Apache JMeter, some of which inspired this book.\u003C\u002Fp\u003E","twittername":"milamberspace","unpaid_royalties":"58.0","updated_at":"2024-10-07T23:10:45.000Z","username":"milamber","wishlist_count":0,"wishlist_id":1335457,"youtube_name":null,"id":518676},"564680":{"type":"User","avatar_url_full":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F564680\u002Ffull\u002Fphilmdot.png?1443126672","avatar_url_medium":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F564680\u002Fmedium\u002Fphilmdot.png?1443126672","avatar_url_small":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F564680\u002Fsmall\u002Fphilmdot.png?1443126672","avatar_url_tiny":"https:\u002F\u002Fd39qdlcrvnra4b.cloudfront.net\u002Favatars\u002F564680\u002Ftiny\u002Fphilmdot.png?1443126672","created_at":"2015-09-09T14:22:57.000Z","facebook_url":null,"family_name_pp":"Mouawad","githubname":"pmouawad","given_names_pp":"Philippe","instagramname":null,"latest_podcast_episode":null,"linkedinname":null,"mastodon_name":null,"mastodon_url":"","name":"Philippe Mouawad","profile_blurb":"\u003Cp\u003EPhilippe Mouawad is a technical expert and architect in J2E and Web environments within the company \u003Ca href=\"https:\u002F\u002Fwww.ubik-ingenierie.com\u002F\" target=\"_blank\"\u003EUbik-Ingenierie\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\u003Cp\u003EHe has been using JMeter since 2009 as part of performance improvements missions, load testing of intranet or e-commerce websites and trainings on JMeter.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe has been contributing to JMeter since 2009 first through patches and then as a 'committer' and member of Project Management Committee at Apache.\u003C\u002Fp\u003E\u003Cp\u003EAmong his main contributions, the \u003Cstrong\u003ECSS selector Extractor\u003C\u002Fstrong\u003E, the \u003Cstrong\u003EBoundary Extractor\u003C\u002Fstrong\u003E, the \u003Cstrong\u003EBackend Listener\u003C\u002Fstrong\u003E (allowing to interface among others \u003Cstrong\u003EGraphite\u003C\u002Fstrong\u003E, \u003Cstrong\u003EInfluxDB\u003C\u002Fstrong\u003E or \u003Cstrong\u003EElasticSearch\u003C\u002Fstrong\u003E),\u003C\u002Fp\u003E\u003Cp\u003Epart of the Web reporting feature and the optimization of the performances of the core, its stabilization and various ergonomic improvements, to his credit more than 400 bugs\u002Fimprovements.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe also contributes to the \u003Ca href=\"https:\u002F\u002Fjmeter-plugins.org\u002F\" target=\"_blank\"\u003EJMeter-Plugins\u003C\u002Fa\u003E project, among his contributions are \u003Cstrong\u003ERedis DataSet\u003C\u002Fstrong\u003E, \u003Cstrong\u003EGraphs Generator Listener\u003C\u002Fstrong\u003E and various patches to different plugins.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe also manages the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjmeter-maven-plugin\u002Fjmeter-maven-plugin\" target=\"_blank\"\u003EJMeter Maven Plugin\u003C\u002Fa\u003E project, he has been managing it since version 2.3.0 ensuring its compatibility with last JMeter releases and improving its\u003C\u002Fp\u003E\u003Cp\u003Edependencies management and reporting mechanism.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe is currently a committer and a PMC member of the \u003Ca href=\"https:\u002F\u002Fjmeter.apache.org\u002F\" target=\"_blank\"\u003EJMeter project\u003C\u002Fa\u003E within the \u003Ca href=\"http:\u002F\u002Fwww.apache.org\u002Ffoundation\u002Fhow-it-works.html#what\" target=\"_blank\"\u003EApache Software Foundation\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\u003Cp\u003EHis Apache ID is \u003Ca href=\"http:\u002F\u002Fpeople.apache.org\u002F~pmouawad\u002F\" target=\"_blank\"\u003Epmouawad\u003C\u002Fa\u003E.\u003C\u002Fp\u003E\u003Cp\u003E \u003C\u002Fp\u003E\u003Cp\u003EHe is also a lead developer of the \u003Ca href=\"https:\u002F\u002Fubikloadpack.com\" target=\"_blank\"\u003EUbik Load Pack\u003C\u002Fa\u003E solution, a set of Enterprise Plugins which provides support for protocols that are not natively supported by JMeter.\u003C\u002Fp\u003E\u003Cp\u003EFinally, he contributes to the \u003Ca href=\"https:\u002F\u002Fwww.ubik-ingenierie.com\u002Fblog\u002F\" target=\"_blank\"\u003EUbik-Ingenierie blog\u003C\u002Fa\u003E.\u003C\u002Fp\u003E","twittername":"philmdot","unpaid_royalties":"58.0","updated_at":"2024-10-07T23:10:46.000Z","username":"pmouawad","wishlist_count":0,"wishlist_id":1108135,"youtube_name":null,"id":564680}},"errors":null,"indexes":{},"loading":{},"sessionErrors":null,"errorMap":{},"gdpr_status":null},"UserDropdownData":{"all":{},"errors":{},"indexes":{},"loading":{}},"Wishlist":{"all":{},"errors":{},"indexes":{},"loading":{}},"WishlistItem":{"all":{},"errors":{},"indexes":{},"loading":{}},"WritingPurchase":{"all":{},"errors":null,"loading":{},"slugValidity":null,"userValidity":null,"creating":false},"AuthorRoyalty":{"royalties":null},"AuthorPlan":{"plan":null},"Audio":{"src":null,"isPaused":true,"isMuted":false,"isLoaded":false,"currentTime":0,"duration":0},"CoursePage":{"all":{},"loading":{},"errors":{}},"Flash":{"all":{}},"Geoip":{"country_code":"US"},"Mailchimp":{"errors":{},"loading":{},"subscriptionStatus":{}},"MetricsEntry":{"all":{},"errors":{},"indexes":{},"loading":{}},"NumReader":{"all":{},"errors":{},"loading":{}},"PublishWord":{"indexes":{},"all":{},"upload":null,"aiUsageOptions":null,"errors":{},"uploadErrors":null,"aiUsageOptionsErrors":null,"aiUsageOptionsLoading":false,"uploadLoading":false,"loading":{}},"Portion":{"all":{},"errors":{},"indexes":{},"loading":{}},"ReadUrl":{"all":{},"loading":{},"errors":{}},"Request":{"requests":{"https:\u002F\u002Fleanpub.com\u002Fapi\u002Fv1\u002Fcache\u002Fbooks\u002Fmaster-jmeter-from-load-test-to-devops.json?landing=true&preset_include=book_show":false,"https:\u002F\u002Fleanpub.com\u002Fapi\u002Fv1\u002Fcache\u002Fcauses.json?book_slug=master-jmeter-from-load-test-to-devops":false,"https:\u002F\u002Fleanpub.com\u002Fapi\u002Fv1\u002Fcache\u002Fpublishers.json?book_slug=master-jmeter-from-load-test-to-devops&include=editors":false,"https:\u002F\u002Fleanpub.com\u002Fapi\u002Fv1\u002Fcache\u002Fsimple_books.json?include=accepted_authors&list=true&related_book=31092":false},"wait":0,"statusCode":200},"router":{"location":{"pathname":"\u002F","search":"","hash":"","key":"axxp7t"},"action":"POP"},"TranslateWord":{"indexes":{},"all":{},"upload":null,"languageOptions":null,"pricing":null,"errors":{},"uploadErrors":null,"pricingErrors":null,"languageOptionsErrors":null,"languageOptionsLoading":false,"pricingLoading":false,"uploadLoading":false,"loading":{}},"Translation":{"loadedTranslations":{},"loadingTranslation":false,"currentLocale":"en","errors":{}},"UI":{"syntax":"color","minimap":false,"showHeader":true,"gutterActionsPosition":{},"settingsOpen":false,"currentBookSlug":null,"courseSidebarClosed":false,"visualEditorFocusMode":false,"currentEditorTab":"manuscript","fontSize":16,"packagableType":null,"gutterActionsMenuVisibility":false,"currentFilenames":{"manuscript":null,"resources":null,"images":null,"code":null},"gutterActionsVisibility":false,"bodyIsLocked":false,"showFooter":true,"headerHTML":"\u003Cspan\u003EEarn \u003Cb\u003E80% Royalties\u003C\u002Fb\u003E publishing \u003Cb\u003Eebooks\u003C\u002Fb\u003E and \u003Cb\u003Ecourses\u003C\u002Fb\u003E on Leanpub\u003C\u002Fspan\u003E","darkMode":false,"focusMode":false}}</script> <script src="https://leanpub.com/assets/polyfill-bundle-f2bf261e3f0b57d19161.js"></script> <script src="https://leanpub.com/assets/app-bundle-3737be649a5454e3a415.js"></script> <!-- Twitter universal website tag code --> <script> !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='//static.ads-twitter.com/uwt.js', a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); // Insert Twitter Pixel ID and Standard Event data below twq('init','nw0pa'); twq('track','PageView'); </script> <!-- End Twitter universal website tag code --> </html>