{"data":{"allMarkdownRemark":{"edges":[{"node":{"id":"458b814a-9266-529b-a538-b64d05af8cc6","frontmatter":{"category":"QA","title":"How to O(1) your test preparation","date":"2019-01-29","summary":"Are you sure your tests are fast enough?","thumbnail":null,"authorName":"Alexander Gyulai","authorDescription":"Head of Quality Assurance at AUTO1 Group","authorAvatar":{"relativePath":"pages/faster-automation-tests/avatar.png","childImageSharp":{"resolutions":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAACyElEQVQ4y4VUO2gUURR9mZmN8YcItoKVjeXuzsxu9jOzm92NkBBTqDEmjZAEgtqIpSgI1gp+uhS6kEI7wc7GQsFCLERiISGCaGHhF02yu+M5s/cujyC4cJY379573r3n3XdNvV51xsYiJ4rKbqlUyBj8wjAYyWazp4BVYB3YAraBDeAhMBcE/l76lkrFTLVachuNyCGXEbJMrVbx6ADnaWAtn88nvu8nWBMdQcJ9Auv3wCxjWq2aC9IMSF3DzCyyG1YAs9pSYkL2melmLpfT71tKGkUlz2iZJAuCgA5dEjGAwPoV0AbuAy+tfR7YkZjb5CiXR1OutEw5jWQdCfgCnEiSxNg/7LWAj+KTSiHSzBvrAtascrriPCmnDkP4AYQ0Em3TGPHf8P38ARpP/4PsHQ7aU69Hqdi4OJeI47JXLg9IX1tVbUuWCzSsygcJO+L0goGNRpySoB1colarerhEvcCn4tuxCB/TsC5ZdS3Ct2Ho75uZmRoigWbIbgCxt7Q0O8TLsgg17o2R2+JHzzJcV/1IoBlybel42SLsCcc3I6UqoaZ+lUHFYjjCzJSQa+4J4UVLKiX8ScOGVXJXDN+xd7SfZXFYS65U+n2Wz+cOw+ezHadSkfCRdVJiZdlmMG9ZtHMpgWR3Z0eMSvWExjmrbXoCbZ951dIim7Yk6u1IYtlwavChW51Pp01tXOwf01eC9RHs/Rbbnx2Hf4IUh/Q5zdol8H3KG22Pj9edOK54LF1876pd37TELhqdZ+J4MwxDHUvXgDOFQrB7YqLpjI4WdhG8GLYNbCeBK/1+TWNWRG+Pfy5Hj5Dek3IXzX9+8DkL/AIeLC/PDU1NHXdSQk5altNsDkjPAT+ArzKyFnK5bB2IxbYik4hanmfM5GTL6Q/Y2DUc25y0HLToubR8TI39cL4APJOxr/35AXgOXEJnHKQvepP6eiQj119kDrZjqLo8HAAAAABJRU5ErkJggg==","width":50,"height":50,"src":"/static/26a7a327ccc4b335712e5a7086f2b26d/45876/avatar.png","srcSet":"/static/26a7a327ccc4b335712e5a7086f2b26d/45876/avatar.png 1x,\n/static/26a7a327ccc4b335712e5a7086f2b26d/eb85b/avatar.png 1.5x,\n/static/26a7a327ccc4b335712e5a7086f2b26d/4f71c/avatar.png 2x,\n/static/26a7a327ccc4b335712e5a7086f2b26d/9ec3e/avatar.png 3x"}}},"headerImage":{"relativePath":"pages/faster-automation-tests/header.png","childImageSharp":{"resolutions":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsSAAALEgHS3X78AAABtklEQVQY0wGrAVT+AAACBAAEBwAECAQECA0ECRoECCwFCEEFCVYECGsECHkECYYECZUGDKIKEKEMEaMLEqcQHK4aJKo5PjghPwBTAwdiAgRvAQOBAQONAAORAQWOAweFBAmCCA18Cw9zDhFlEhRMEhI4ERdGHC5XOlZyXHx9hqiGosqfkLcAXQEEUwIFSgkNNgsQJA0SHxMWGBMVERUVCBMSARAPAA8SAQ0VAAsjHy1Rd36i0NTk9Pv//f3+/8zj14CnAAcSFgUTFgcQEAoQDgsODAYICAUGCQUFCwQIEwQIGwIJLBAbRz9Md5CevNje7f/q8PvT4c6Yu21CexENPgAIBQEHAwMBAAUAAAgABBQCCRkDDB0CDB8LEy8tN1xub465qb/uwdb3r8zdi7i4cKZ5VYsgJlkABSkBAhYAAAIQAAUTAwobBxAgBA4ZCBAfISY4WFtznZau0rTI76rD5YGoxlaSkzyAVS9xGiRcABM+AQklBQkXAQQLAAYOGAsVHw4ZIBUaJ0dDWJGOoM3Azty0xtGIqbZXiaA7fY0qdUwkZREbUgAQPQAGJAMEFQMGEgACBwAAAMagbU9WOO54AAAAAElFTkSuQmCC","width":1280,"height":445,"src":"/static/34ed0cae6856ac71c7fea1ac46b6a5a9/26421/header.png","srcSet":"/static/34ed0cae6856ac71c7fea1ac46b6a5a9/26421/header.png 1x"}}}},"html":"<p><em>(*) If your career as a QA - like the author’s - started without a computer science degree, you will hopefully love\nto hear and learn about the different theories and notations of runtime analysis.\nCheck wikipedia’s page about O-notation</em> <a href=\"https://en.wikipedia.org/wiki/Big_O_notation\">here</a></p>\n<p>Speed… Did you ever think how you can make your tests faster and more reliable? If you're anything like me or my colleagues at AUTO1,\nyou face this challenge all the time. Here at AUTO1 we are constantly looking for new ways to improve our tools and\nto make testing fast and efficient. In this article, I’m going to take test suite that takes ~70 min and reduce the execution time to 1 min!!!\nInteresting, right? :)</p>\n<h2>Intro</h2>\n<p>Let’s imagine we are testing some Web Shop Scenario. We need to test that users can do some actions with items they purchased\n(submit feedback, return, submit claim, etc.). And imagine that in this case we have exactly 20 scenarios that go like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Steps:\n- Create item, put item in certain state\n- Create user\n- Create user delivery address\n- Create user billing address\n- Create user payment details\n- Sell item to user\n- User does something with an item</code></pre></div>\n<h2>Back in times…</h2>\n<p>Let’s look at the timeline of our test</p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/53febc88a158cff2aeae3979e1d5f8c6/dfeb3/scenario-v1.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 28.77164056059357%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABDUlEQVQY04WQWU/CQBSF+6/d8AG3P+ECcemLPrglmvgAsS7RB5cIWIwJUKzGmCiVYkvbmc8ZsAkYiZPcnHPuPXcycww/SEgSicb3doyUEq+TqIoRQvLmxYSR6PHXVkQUC9rK2/L7c72jtd7TZfDPkSP4qGNM5qpk8g/Mmo8Kq2g9bypcLjGdrzC3cc/4Uonsmk12tcKE4jPrNplcmamVMgumzdjindqxCboJxlaxzt6pQ+HK7eHR5ROHF002CzWOr122rQY7Vh3rxkV7D84disq7e9JQPof9s6bq17BuX/pffv4QdLrDzw5j8AJQcal8wP+Zfyr+FQ17/RDEQBaGvlWnk4aa6t812P/Lm+pvrbW8il8UgXMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:inset 0px 0px 0px 400px white;\"\n        alt=\"ScenarioV1\"\n        title=\"ScenarioV1\"\n        src=\"/static/53febc88a158cff2aeae3979e1d5f8c6/40fad/scenario-v1.png\"\n        srcset=\"/static/53febc88a158cff2aeae3979e1d5f8c6/707e9/scenario-v1.png 148w,\n/static/53febc88a158cff2aeae3979e1d5f8c6/649e0/scenario-v1.png 295w,\n/static/53febc88a158cff2aeae3979e1d5f8c6/40fad/scenario-v1.png 590w,\n/static/53febc88a158cff2aeae3979e1d5f8c6/b3fef/scenario-v1.png 885w,\n/static/53febc88a158cff2aeae3979e1d5f8c6/301c0/scenario-v1.png 1180w,\n/static/53febc88a158cff2aeae3979e1d5f8c6/dfeb3/scenario-v1.png 1213w\"\n        sizes=\"(max-width: 590px) 100vw, 590px\"\n      />\n  </span>\n  </a></p>\n<p>In this case, if you have twenty tests and you run them sequentially, it will take ~73 min.</p>\n<h2>Time to Improve!</h2>\n<p>What we can improve here? Of course everybody will say “Pffff, let’s run in parallel!”.\nThis is everyone’s first call, but for parallel execution you must always consider multiple aspects:</p>\n<ul>\n<li>Your test should neither rely nor be affected by tests running in parallel. It should be completely isolated.</li>\n<li>You must consider the application under tests. Is it capable of handling parallel execution? Do you have any external\ndependencies that can prevent you from this? Will your application behave in the same way if you run 20 tests concurrently?\nYou can run 20, 50 or 1000 parallel tests on your application, nevertheless under some circumstances you might want to\nreduce number of parallel threads.</li>\n</ul>\n<p>Let’s imagine we would like to keep ten threads for start. </p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/d2f1d79c60cd7407462532ce51d3d964/df03a/suite-v1.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 62.589928057553955%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAABYlAAAWJQFJUiTwAAABHklEQVQ4y61U20rDQBDNXyso+C9F9Au0+u5zqiiCFQULNsYHY7Dd7sxejrOXYDF9SrNwmJPsZDhnZkhhrYVzDt47QBD4UHjvUQQilUDGYaUTDxdDUQjiea4Y17cqcuvyywGnYDZR1dO7xmW5ipyN3cdyUjNfMqazdVJo97Dssudg+Wo2hmUzsuXtoYyi0Mgeph4SpmXqobG7FVjbx7a6qDAV9KlgHoox/WJh6UNeH/8sd1LnS4OLMlne5XjDwMOCcZ9x95aior+cWJBIMj3jtVK4efwRTlirDbTWICKJBG8Zi1rh5PwTR6c1DicVDiYfOD6r8SLfecfQRLmHMuUAK3Biv21bNE0TY3fXQSpLHqH9/oJhnZ8NwqaEf0IQ8Qu8S/jkKbPmpwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:inset 0px 0px 0px 400px white;\"\n        alt=\"SuiteV1\"\n        title=\"SuiteV1\"\n        src=\"/static/d2f1d79c60cd7407462532ce51d3d964/40fad/suite-v1.png\"\n        srcset=\"/static/d2f1d79c60cd7407462532ce51d3d964/707e9/suite-v1.png 148w,\n/static/d2f1d79c60cd7407462532ce51d3d964/649e0/suite-v1.png 295w,\n/static/d2f1d79c60cd7407462532ce51d3d964/40fad/suite-v1.png 590w,\n/static/d2f1d79c60cd7407462532ce51d3d964/b3fef/suite-v1.png 885w,\n/static/d2f1d79c60cd7407462532ce51d3d964/df03a/suite-v1.png 1112w\"\n        sizes=\"(max-width: 590px) 100vw, 590px\"\n      />\n  </span>\n  </a></p>\n<p>We significantly increased the speed. From ~73 to ~8 minutes. This already looks like a game changer! But can we do more? Spoiler: Yes we can!</p>\n<h2>Removing dependencies</h2>\n<p>If we check our test scenario again, we can clearly see that the actual validation of our test scenario happens only\nafter the third minute! And everything we have up until then it’s just creating preconditions.\nWhat we actually want to test is: <em><strong>“User can do certain action with item purchased on our platform”</strong>.</em>\nWe should not care <strong>HOW</strong> we got this item, we should have another test, testing that user should be able to purchase.\nThis just creates dependency for us that makes our tests:</p>\n<ol>\n<li>Slower</li>\n<li>Less stable. It becomes less stable because we have to go through multiple steps (in some cases maybe through multiple\napplications) with creating item, creating user, adding user info and so on. If something will fail in the middle (which can happen easily)\nit doesn’t really mean that user couldn't leave a feedback on the item.</li>\n</ol>\n<p>   <em>P.S. While writing this article I tried to re-create all these conditions and I didn’t have any successful build.\nAnd it was always something related to other dependencies.</em> </p>\n<p><strong>Solution?</strong> There are many possible answers, the one I chose for this example is to move all logic with test data preparation to the API layer.\nLet’s try this and review our timeline again</p>\n<p> <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/df680a4cadba8a015fb5727b6e47a554/68371/scenario-v2.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 31.275385865150284%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAAA9ElEQVQY061QTU/CQBDtX8cU9UDgR2gR5CN4UtBAkAtcvNOybYFoNJ6Mabttd/c5uysETlzY5GXevHkz2RlHKYU0lyiERF5IZMSFtFpeSpSkJ1xACAV+UM+IF6XNU10nTc9ycObnhJ8pLluhQa0bw20yVDXvrHBxuzTxquXD9XzDXW9JeYDrdoAK1Rt9Znz1HjMbOB/fCZrPDP1pjOFii940wuN8g84kwv04xBPxmyGjuMbgNcbdC8NosTH8YRZhMFvDG60weXu3Kydc4etHIRfHX+clkBEU8V9uNToZ0uLYp/vk4cp6qm2zR91hp+1xwif/8z8Hu78KDjTTEgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:inset 0px 0px 0px 400px white;\"\n        alt=\"ScenarioV2\"\n        title=\"ScenarioV2\"\n        src=\"/static/df680a4cadba8a015fb5727b6e47a554/40fad/scenario-v2.png\"\n        srcset=\"/static/df680a4cadba8a015fb5727b6e47a554/707e9/scenario-v2.png 148w,\n/static/df680a4cadba8a015fb5727b6e47a554/649e0/scenario-v2.png 295w,\n/static/df680a4cadba8a015fb5727b6e47a554/40fad/scenario-v2.png 590w,\n/static/df680a4cadba8a015fb5727b6e47a554/b3fef/scenario-v2.png 885w,\n/static/df680a4cadba8a015fb5727b6e47a554/301c0/scenario-v2.png 1180w,\n/static/df680a4cadba8a015fb5727b6e47a554/68371/scenario-v2.png 1231w\"\n        sizes=\"(max-width: 590px) 100vw, 590px\"\n      />\n  </span>\n  </a></p>\n<p> Amazing, this is how our test looks now! two minutes just gone.</p>\n<p> And this is how our suite looks now comparing to other runs.\n<a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/85c2500e17e9f80939393028938cff4d/a7e37/suite-v2.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 54.833040421792624%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAABB0lEQVQoz62TTU7DMBCFe3WQuAtCHINuaBddsaFlU7Gomjauyzi2Y8/DM+4fC4qUMtJL4rH15nM8HuWcEWNEZgaQwZwhuSHi4jGShwwkNvuEmMSYdXKI1DClavj67mFd/R5sKHQhRDWZzrtimJTwxi1zNVx47P+D0IegJhMhpBsJKw3OhF0lvAyZP+qvuCBkJdxRr+1zqqodcNaxreQgT/rtH07mHl/+J4Y0gKGMnWN9p3wdUw37Pmn12YdDaz36GA4nn7FcB9w/Nbh7XOHhudExOJW1hPGbxUvRZ+M1J5SHPkx6W0LZujFGRUSlUMmVvOs8NtsW5DpdJzKWsFq3aFqr83rbiuE3AelfXfVuxx0AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:inset 0px 0px 0px 400px white;\"\n        alt=\"SuiteV2\"\n        title=\"SuiteV2\"\n        src=\"/static/85c2500e17e9f80939393028938cff4d/40fad/suite-v2.png\"\n        srcset=\"/static/85c2500e17e9f80939393028938cff4d/707e9/suite-v2.png 148w,\n/static/85c2500e17e9f80939393028938cff4d/649e0/suite-v2.png 295w,\n/static/85c2500e17e9f80939393028938cff4d/40fad/suite-v2.png 590w,\n/static/85c2500e17e9f80939393028938cff4d/b3fef/suite-v2.png 885w,\n/static/85c2500e17e9f80939393028938cff4d/a7e37/suite-v2.png 1138w\"\n        sizes=\"(max-width: 590px) 100vw, 590px\"\n      />\n  </span>\n  </a></p>\n<p> Again we manage to halve the test execution time! Considering that it was already pretty fast, it's a great improvement.\nSo at this point you might think we are done here, it’s time to go to bar, grab a beer and celebrate.\nBut then you come back the next day and think \"there must be more\"...</p>\n<p>Having test preparation using API is a great step here, but does it scale from 20 tests to 1000 without having side-effects?\nAt the end, your test data preparation might look like this:</p>\n<p><img src=\"/static/machingun-f6e9bbc355090a0e8c6db2e891dfb64a.gif\" alt=\"machingun\" title=\"Suitemachingun\"></p>\n<p>Assuming you have around 40 calls with a reasonable fan-out for every scenario and you usually run tests in multiple threads,\nyou might involuntary start a load test there. Aaaaand it’s time to look for a solution again!</p>\n<h2>Introducing Q-Service</h2>\n<p>What if we have our test data waiting for us somewhere? Wouldn’t be amazing?!\nOur solution for this problem was to create a Web Service that would keep the data in a queue for us.\nIt provides couple of huge benefits for us:</p>\n<ol>\n<li>Instead of doing all these calls in runtime, we do 1 single call to our API to get test data. And instead of 1 min in test preparation we got &#x3C;1 sec!</li>\n<li>We don’t overload the system while executing tests. Which also means for us we can run more tests in parallel!</li>\n<li>Tests are way more stable. Now we just need to take our test data and check that user can do certain action with that item.</li>\n</ol>\n<p>Let’s look at our timeline again. This is how our test scenario changed:</p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/7756153b5c3b401f4d48add89a0b22f0/e1bf1/scenario-v3.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 44.48160535117057%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/klEQVQoz61STUvDQBDNn7OgHnvqyZ+hNKdePPQPVPyoF6GXtpoexJ8QQTdFz/4BD2LFNDHZ2efOLkm2aQgU+uCx82aGt8zOetBQSqEAx4V28y7qebffK0SaEZI/2jBtoySF34RATo5RGrLZTyyRGlPFrrapRtvPhoTvOMc6ldVFbGiL1QhSk7AbpKpG9zhY6ZtOhkt0zkIc9p/RHbygdy6MPtKac3we+/r0rS7I+uA0xPJjZUc246YZ7h7fMJq+4nIuMHl6N7y+FxgHkeGVjrl+MRO4eYjK/DgQuF1E+PyKN99wHyhHNluTZJg3Mbc1Isumnq0tq9r623TbP/0H4QWmFav5swkAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:inset 0px 0px 0px 400px white;\"\n        alt=\"ScenarioV3\"\n        title=\"ScenarioV3\"\n        src=\"/static/7756153b5c3b401f4d48add89a0b22f0/40fad/scenario-v3.png\"\n        srcset=\"/static/7756153b5c3b401f4d48add89a0b22f0/707e9/scenario-v3.png 148w,\n/static/7756153b5c3b401f4d48add89a0b22f0/649e0/scenario-v3.png 295w,\n/static/7756153b5c3b401f4d48add89a0b22f0/40fad/scenario-v3.png 590w,\n/static/7756153b5c3b401f4d48add89a0b22f0/b3fef/scenario-v3.png 885w,\n/static/7756153b5c3b401f4d48add89a0b22f0/301c0/scenario-v3.png 1180w,\n/static/7756153b5c3b401f4d48add89a0b22f0/e1bf1/scenario-v3.png 1196w\"\n        sizes=\"(max-width: 590px) 100vw, 590px\"\n      />\n  </span>\n  </a></p>\n<p> And our test suite looks like this right now:</p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/74d130f14924155f9097ed923d184939/6f904/suite-v3.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 590px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 55.95854922279793%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAABAElEQVQoz62SUU7DMBBEc3KuwDE4AP8coh8IUSpUELSB2I7jxIntXQ+2MfCDhEhraSTvrjR6O9qGmeGcA2JMYuR6rWLyaGIxinAhwsyMVJTBWjWcDcEQhrA9eOTHfIphRuUAmQwfDq4QEp20coGCHBm7Yyj/r96a1xQa8mXlMxF+4uSVd8eaYTxDhsKEPwlzPxB/z6nqV0KVM2xrhjWPelH4T6T1Dgnv/YLti020HhQ8Ou1wed3h4uoNNxuDkHq3+wmbxwmvYkbwHr1ZoJIm69I8/BASEZxPp6M0tNaw1sIHwnM74v5JQo8ei/Plf7dXaMWIYRjQySRlIGSPZZkL4QfC8mBOKQFpMgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:inset 0px 0px 0px 400px white;\"\n        alt=\"SuiteV3\"\n        title=\"SuiteV3\"\n        src=\"/static/74d130f14924155f9097ed923d184939/40fad/suite-v3.png\"\n        srcset=\"/static/74d130f14924155f9097ed923d184939/707e9/suite-v3.png 148w,\n/static/74d130f14924155f9097ed923d184939/649e0/suite-v3.png 295w,\n/static/74d130f14924155f9097ed923d184939/40fad/suite-v3.png 590w,\n/static/74d130f14924155f9097ed923d184939/b3fef/suite-v3.png 885w,\n/static/74d130f14924155f9097ed923d184939/6f904/suite-v3.png 1158w\"\n        sizes=\"(max-width: 590px) 100vw, 590px\"\n      />\n  </span>\n  </a></p>\n<p>We barely can see it on our timeline :)</p>\n<ul>\n<li>1 test now takes ~30s to run (instead of 3m 40s). And it’s “slow” and “unstable”(as it’s usually called) UI end-to-end test. </li>\n<li>Entire suite takes ~1m</li>\n<li>We can easily double the number, if we need, since these tests are producing a very little amount of our resources</li>\n</ul>\n<h2>How does it work?</h2>\n<p>Stay tuned! We will open-source it soon!</p>\n<h2>Summary</h2>\n<p>In AUTO1 Group, every day we are looking for smarter ways to do software development and testing.\nAnd the main point in this article is that you should never stop innovating and looking for new solutions to existing problems.\nSomething that works for us, is not necessarily going to work for you,\nbut maybe you will ask yourself: <em><strong>“Where is our next level? Can we do something better?”</strong></em></p>","fields":{"slug":"/faster-automation-tests/","tags":["testing","automation"]}}}]}},"pageContext":{"slug":"/tags/automation","tag":"automation","categories":["Architecture","Coding","DevOps","Engineering","ProjectManagement","QA","Social","TechRadar"]}}