{"id":3557,"date":"2021-10-25T15:40:29","date_gmt":"2021-10-25T15:40:29","guid":{"rendered":"https:\/\/devexperts.com\/blog\/?p=3557"},"modified":"2022-07-28T15:08:11","modified_gmt":"2022-07-28T15:08:11","slug":"qaops-practices-with-dmitry-gorbunov","status":"publish","type":"post","link":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/","title":{"rendered":"QAOps Practices with Dmitry Gorbunov"},"content":{"rendered":"\n<div class=\"wp-block-devexperts-custom-thumbnail\"><figure><picture><source media=\"(max-width: 639px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/1148x1148-574x574.png 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/1148x1148-300x300.png 1x\"\/><source media=\"(min-width: 640px) and (max-width: 767px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-1168x657.png 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-600x338.png 1x\"\/><source media=\"(min-width: 768px) and (max-width: 1023px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-1168x657.png 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-728x410.png 1x\"\/><source media=\"(min-width: 1024px) and (max-width: 1279px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-1168x657.png 1x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-690x388.png 1x\"\/><source media=\"(min-width: 1280px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-1752x986.png 2x,\n\t\t\t\thttps:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-1752x986.png 1.5x,\n\t\t\t\thttps:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-870x489.png 1x\"\/><img decoding=\"async\" class=\"singleThumbnail lazyload\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-1024x576.png\" data-src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/2336x1314-870x489.png\"\/><\/picture><\/figure><\/div>\n\n\n\n<p>On October 5<sup>th<\/sup>,&nbsp;Devexperts&nbsp;held an online&nbsp;dxTechTalk&nbsp;focused on the topics of Automation and Operations. Dmitry Gorbunov,&nbsp;QA Automation Team Lead, presented a talk on QAOps&nbsp;practices&nbsp;while Kirill Kozlov, Software Engineer, spoke about the&nbsp;parallel execution of desktop tests.&nbsp;<\/p>\n\n\n\n<p>You can now watch the recording of the QAOps practices presentation.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"QA Tech Talk. QAOps Practices (ENG)\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/TAu6Cp2SKSY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>As a follow-up to the meetup, we took the opportunity to explore the topic of QAOps and had a quick interview with Dmitry!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-is-the-difference-in-specializations-qa-automation-engineer-qaops-software-development-engineer-in-test\">What is the difference in specializations &#8211; QA Automation Engineer &#8211; QAOps &#8211; Software Development Engineer in Test?&nbsp;<\/h2>\n\n\n\n<p>First and foremost: QAOps is a framework, not a specialization. QAOps is a set of practices&nbsp;that&nbsp;helps&nbsp;test engineers&nbsp;(including automation engineers and SDETs)&nbsp;improve software delivery processes.&nbsp;I believe QAOps may eventually grow into a specialization as DevOps did. Right now, it\u2019s a methodology.&nbsp;&nbsp;<\/p>\n\n\n\n<p>While&nbsp;<em>old-school<\/em>&nbsp;test automation can&nbsp;perfectly live&nbsp;even in waterfall-like processes, QAOps-driven automation aims to integrate testing practices throughout the whole delivery pipeline.&nbsp;<\/p>\n\n\n\n<p>QAOps&nbsp;is a major practice within the popular&nbsp;<em>shift-left<\/em>&nbsp;paradigm, an&nbsp;approach in which testing is performed earlier in the lifecycle.&nbsp;As we\u2019re moving test practices to early stages, we&nbsp;have to&nbsp;focus on:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>test decomposition for multiple layers&nbsp;<\/li><li>test and&nbsp;environment&nbsp;scalability&nbsp;<\/li><li>environment readiness, including virtualization, initialization and mocking&nbsp;<\/li><li>test parallelism, safety and performance&nbsp;<\/li><li>effective&nbsp;test data management, both static and dynamic&nbsp;<\/li><li>scalable and meaningful reporting&nbsp;&nbsp;<\/li><\/ul>\n\n\n\n<p>In a modern world, these areas might not always be a direct responsibility of a classic test engineer, but rather interdisciplinary tasks, each with a unique skill&nbsp;set required.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><strong>Classic Test Engineer<\/strong><\/th><th><strong>QAOps Test Engineer<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Designs and implements extensive functional scenarios&nbsp;<\/td><td>Designs concise yet effective test&nbsp;suites for&nbsp;all SDLC stages&nbsp;<\/td><\/tr><tr><td>Works within QA tasks&nbsp;<\/td><td>Goes beyond classic QA tasks&nbsp;<\/td><\/tr><tr><td>Creates test coverage&nbsp;<\/td><td>Makes&nbsp;sure testing is done as early, fast and stable as possible&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-many-people-do-you-need-for-this-practice\">How many people do you need for this practice?&nbsp;<\/h2>\n\n\n\n<p>It all depends on the project structure and needs.&nbsp;We have a project team of 9 people, out of which 3 are constantly involved in different kinds of&nbsp;QAOps&nbsp;activities, such as improving data management tools, designing execution management solutions, etc.&nbsp;<\/p>\n\n\n\n<p>In the future, I believe every good engineer will&nbsp;need&nbsp;to have some&nbsp;QAOps&nbsp;skills \u2013&nbsp;such as&nbsp;the ability to deploy a required version using an orchestration tool or quickly integrate a no-code solution to automate the critical routine.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-to-understand-that-the-time-has-come-for-the-company-to-implement-this-practice\">How to understand that the time has come for the company to implement this practice?&nbsp;<\/h2>\n\n\n\n<p>I believe&nbsp;this is something that&nbsp;grows organically. Shifting left and migrating to faster delivery models constantly sets newer, higher standards for test stability and performance. To avoid&nbsp;turning into&nbsp;a bottleneck and continue providing meaningful results, testing shall transform and start solving these new challenges.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-can-you-professionally-grow-to-the-qaops-level\">How can you professionally grow to the QAOps level?&nbsp;<\/h2>\n\n\n\n<p>Again, it\u2019s not a level, but a way of organizing your work and paying attention to specific routines. To be effective when the time comes, you may want to spend some time with:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>scripting languages (such as Unix shell or Python)&nbsp;<\/li><li>virtualization and containerization technologies (such as docker or k8s)&nbsp;<\/li><li>CI\/CD practices and real-world tools<\/li><\/ul>\n\n\n\n<p>In other words, think beyond classic test design. Assume you have a test suite. Maybe it\u2019s not even your test suite. How can you make it run 100 times an hour, in 10 parallel threads, each in its own sandbox? What if you have 100 test suites written by somebody else, how can you run them effectively and get only meaningful results?&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-do-we-offer-this-expertise-to-our-customers\">Do we offer this expertise to our customers?&nbsp;<\/h2>\n\n\n\n<p>Absolutely.&nbsp;All of&nbsp;our QAOps expertise is used in the field, daily!&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On October 5th,&nbsp;Devexperts&nbsp;held an online&nbsp;dxTechTalk&nbsp;focused on the topics of Automation and Operations. Dmitry Gorbunov,&nbsp;QA Automation Team Lead, presented a talk &hellip; <\/p>\n","protected":false},"author":7,"featured_media":3590,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2022],"tags":[25],"class_list":["post-3557","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-career","tag-qa"],"acf":{"nifty_post_card_image":4390,"nifty_post_card_index_big":4393,"nifty_post_inner_image":4392,"nifty_post_card_banner":4391},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>QAOps Practices with Dmitry Gorbunov - Devexperts Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"QAOps Practices with Dmitry Gorbunov\" \/>\n<meta property=\"og:description\" content=\"On October 5th,&nbsp;Devexperts&nbsp;held an online&nbsp;dxTechTalk&nbsp;focused on the topics of Automation and Operations. Dmitry Gorbunov,&nbsp;QA Automation Team Lead, presented a talk &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/\" \/>\n<meta property=\"og:site_name\" content=\"Devexperts Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/devexperts\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-25T15:40:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-28T15:08:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/dxSpotlight-newsletter-thumbnail-11.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/dxSpotlight-newsletter-thumbnail-11.png\" \/>\n<meta name=\"twitter:creator\" content=\"@devexperts\" \/>\n<meta name=\"twitter:site\" content=\"@devexperts\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/\"},\"headline\":\"QAOps Practices with Dmitry Gorbunov\",\"datePublished\":\"2021-10-25T15:40:29+00:00\",\"dateModified\":\"2022-07-28T15:08:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/\"},\"wordCount\":694,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png\",\"keywords\":[\"QA\"],\"articleSection\":[\"Career\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/\",\"url\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/\",\"name\":\"QAOps Practices with Dmitry Gorbunov - Devexperts Blog\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png\",\"datePublished\":\"2021-10-25T15:40:29+00:00\",\"dateModified\":\"2022-07-28T15:08:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png\",\"width\":3840,\"height\":700},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devexperts.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"QAOps Practices with Dmitry Gorbunov\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devexperts.com\/blog\/#website\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"name\":\"Devexperts Blog\",\"description\":\"We make complex finance ideas on technology, innovation and business simple\",\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devexperts.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\",\"name\":\"Devexperts LLC\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"width\":167,\"height\":30,\"caption\":\"Devexperts LLC\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/devexperts\/\",\"https:\/\/x.com\/devexperts\",\"https:\/\/www.linkedin.com\/company\/devexperts\",\"https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"QAOps Practices with Dmitry Gorbunov - Devexperts Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/","og_locale":"en_US","og_type":"article","og_title":"QAOps Practices with Dmitry Gorbunov","og_description":"On October 5th,&nbsp;Devexperts&nbsp;held an online&nbsp;dxTechTalk&nbsp;focused on the topics of Automation and Operations. Dmitry Gorbunov,&nbsp;QA Automation Team Lead, presented a talk &hellip;","og_url":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/","og_site_name":"Devexperts Blog","article_publisher":"https:\/\/www.facebook.com\/devexperts\/","article_published_time":"2021-10-25T15:40:29+00:00","article_modified_time":"2022-07-28T15:08:11+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/dxSpotlight-newsletter-thumbnail-11.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_image":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/dxSpotlight-newsletter-thumbnail-11.png","twitter_creator":"@devexperts","twitter_site":"@devexperts","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#article","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/"},"headline":"QAOps Practices with Dmitry Gorbunov","datePublished":"2021-10-25T15:40:29+00:00","dateModified":"2022-07-28T15:08:11+00:00","mainEntityOfPage":{"@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/"},"wordCount":694,"commentCount":0,"publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"image":{"@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png","keywords":["QA"],"articleSection":["Career"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/","url":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/","name":"QAOps Practices with Dmitry Gorbunov - Devexperts Blog","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage"},"image":{"@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png","datePublished":"2021-10-25T15:40:29+00:00","dateModified":"2022-07-28T15:08:11+00:00","breadcrumb":{"@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#primaryimage","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/10\/External-Blog-Cover-3840-x-700px.png","width":3840,"height":700},{"@type":"BreadcrumbList","@id":"https:\/\/devexperts.com\/blog\/qaops-practices-with-dmitry-gorbunov\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devexperts.com\/blog\/"},{"@type":"ListItem","position":2,"name":"QAOps Practices with Dmitry Gorbunov"}]},{"@type":"WebSite","@id":"https:\/\/devexperts.com\/blog\/#website","url":"https:\/\/devexperts.com\/blog\/","name":"Devexperts Blog","description":"We make complex finance ideas on technology, innovation and business simple","publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devexperts.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/devexperts.com\/blog\/#organization","name":"Devexperts LLC","url":"https:\/\/devexperts.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","width":167,"height":30,"caption":"Devexperts LLC"},"image":{"@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/devexperts\/","https:\/\/x.com\/devexperts","https:\/\/www.linkedin.com\/company\/devexperts","https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured"]}]}},"_links":{"self":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/3557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/comments?post=3557"}],"version-history":[{"count":12,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/3557\/revisions"}],"predecessor-version":[{"id":4704,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/3557\/revisions\/4704"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media\/3590"}],"wp:attachment":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media?parent=3557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/categories?post=3557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/tags?post=3557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}