{"id":935,"date":"2010-06-16T07:56:54","date_gmt":"2010-06-16T14:56:54","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=935"},"modified":"2017-07-03T19:22:12","modified_gmt":"2017-07-03T23:22:12","slug":"agile-testing-is-different","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/","title":{"rendered":"Agile Testing is Different"},"content":{"rendered":"<p>I come from a QA background.<\/p>\n<p>I started off my career doing testing.\u00a0 I learned about testing the same way I learned about development\u2026 reading lots of books and applying what I learned.<\/p>\n<p>This is how you are <em>supposed<\/em> to do QA:<\/p>\n<ol>\n<li>Write a test plan for the project.<\/li>\n<li>Gather requirements.\u00a0 Put them into a repository and give them cold hard labels like REQ1.2.5.<\/li>\n<li>Create test cases from the requirements.\u00a0 Store those test cases into a tracking system which can map them back to individual requirements.<\/li>\n<li>Execute test cases, each test step should either pass or fail.\u00a0 Record the results.\u00a0 File any bugs found into the bug tracking system which maps the bug to the test that failed and the associated requirement.<\/li>\n<\/ol>\n<p>There is more to it, but that is the basic outline.<\/p>\n<h2>But it doesn\u2019t work in Agile!<\/h2>\n<p>Heck, it doesn\u2019t work anywhere.\u00a0 At least not the requirements part.\u00a0 That is the part that is always missing, or woefully inadequate.<\/p>\n<p>Don\u2019t panic though.\u00a0 It makes sense.\u00a0 Let\u2019s think this through.\u00a0 The reason we all started jumping off the waterfall ship and into Agile is because we realized that it is almost impossible and certainly worthless to try and define requirements up front.<\/p>\n<p>With that idea in mind, how do we test?\u00a0 How can we test in an Agile environment?<\/p>\n<h2>First goal is automation<\/h2>\n<p>Let me explain to you why this is the most important part.\u00a0 It may seem a little out of order, but bear with me.<\/p>\n<p>When you are doing iterative development, you are building things little by little.\u00a0 You&#8217;re not waiting until the end to test things, so there is a really good chance something you do in any iteration will break something you did earlier.<\/p>\n<p>How do you deal with this?\u00a0 It\u2019s called \u201cregression.\u201d\u00a0 Yes, you probably need it in waterfall, but in Agile it is an absolute must, otherwise you\u2019ll find that for every step forward you take, you take a step backward as you fix something that you broke.<\/p>\n<p>Running an Agile project without automation is like walking the tight-rope without a safety net, except the tight-rope is on fire, someone is strumming it like a banjo, and you&#8217;re wearing two left shoes.<\/p>\n<p>People groan when I say this, but I firmly believe it and I have done it several times.<\/p>\n<blockquote><p>Part of every backlog\u2019s done criteria should be that it has automated tests!<\/p><\/blockquote>\n<p>Unless you have automated tests for each piece of functionality you build (or at least the ones you care if they stay working), or an army of manual testers running your regression suite every iteration, your software will break in your customer\u2019s hands.<\/p>\n<p><a href=\"http:\/\/www.slideshare.net\/jsonmez\/internal-ds-ls-for-automated-functional-testing\">How to build an Internal DSL for Automated Functional Testing<\/a><\/p>\n<p><a href=\"https:\/\/simpleprogrammer.com\/2010\/01\/05\/automated-ui-testing-framework-a-real-example\/\">Automated UI Testing Framework\u2026 A Real Example<\/a><\/p>\n<h2>Next goal is change the focus<\/h2>\n<p>Testing is traditionally an activity that happens at the end of development and is the gate-keeping for software.\u00a0 It has to go through QA before it gets released.<\/p>\n<p>That is not a good model for Agile, because what happens when there is a bug?\u00a0 If the testing happens at the end of the iteration and there is a bug found, there is no time to fix it.<\/p>\n<p>What if we change the order of things, change the focus?<\/p>\n<p>When you write your code, you write unit tests first, right?\u00a0 (Or if you like BDD, you write the specifications, or behaviors.)\u00a0 And you run them continuously as you&#8217;re working on your code to make sure you don\u2019t break them, right?<\/p>\n<p>We can apply the same thing at the higher level.<\/p>\n<ul>\n<li>We can focus on creating a failing automated test before implementing the software.<\/li>\n<li>We can iteratively build more failing automated tests and make each one pass by building the software.<\/li>\n<li>We can run those tests as we build the software.<\/li>\n<\/ul>\n<p><strong>How many times have you built a feature only to have it tested and find out the test cases were not at all testing what you built?<\/strong> (I\u2019ll raise my hand.)<\/p>\n<p>That happens when we try to independently create the test cases from the development of the software.<\/p>\n<p>What we want to do is blur the lines between testing and development.\u00a0 We want to get close to continuous testing.\u00a0 Just like we do when we are running unit tests as we are writing code.\u00a0 Short feedback cycles are the key.<\/p>\n<h2>Sounds good, but how do we do it?<\/h2>\n<p>Here is a walk through of what your workflow might be when doing Agile testing.<\/p>\n<ol>\n<li>Backlog item is pulled into iteration.<\/li>\n<li>Team members talk to backlog owner about the backlog.\u00a0 The goal of this conversation is not to get all the details of the backlog, but to get enough information to understand the bigger picture of the backlog and get enough information to get started.<\/li>\n<li>Team members talk about what is the basic, first, automated test to write for this backlog.<\/li>\n<li>Team starts writing the automated test.<\/li>\n<li>Team starts writing the code to make the automated test pass.<\/li>\n<li>Team goes back to backlog owner to demonstrate completed parts, get feedback, and ask for more clarification.<\/li>\n<li>Team continues to write automated tests, make them pass, and have conversations and demonstrations with backlog owner.<\/li>\n<li>When backlog owner is happy and backlog is complete, and everyone considers it well-tested, the backlog is done.<\/li>\n<\/ol>\n<p>Observations about that process:<\/p>\n<ul>\n<li>Steps can happen parallel or out of order, steps can overlap.<\/li>\n<li>Steps can be split among team members.<\/li>\n<li>I erased the words \u201cQA person\u201d and \u201cDeveloper\u201d and replaced them with \u201cTeam,&#8221; we don\u2019t care so much about roles, we want to blur those lines as much as possible.<\/li>\n<li>There aren\u2019t really phases, for development, QA, etc.\u00a0 Development involves testing as you go, when the backlog is done being \u201cdeveloped,\u201d it is done.<\/li>\n<li>Focus is on making customer happy, not passing an arbitrary set of requirements the customer gave you upfront, or you tried to interpret.\u00a0 Take a look at my post on <a href=\"https:\/\/simpleprogrammer.com\/2010\/03\/02\/how-to-hang-a-picture-agile-user-stories\/\">comparing user stories requirements gathering to hanging a picture<\/a> for more on this.<\/li>\n<li>There is no useless documentation.\u00a0 All documentation is executable.<\/li>\n<li>There is no \u201cgate-keeper,\u201d quality is being built as we go, we are not trying to \u201ctest it in\u201d at the end of the iteration.<\/li>\n<\/ul>\n<h2>What is the role of the QA person?<\/h2>\n<p>It might seem that we have eliminated that role by this process, or diminished the value, but nothing could be further from the truth.<\/p>\n<p>What we have actually done here is elevated the role from writing documentation and manually executing tests to being the expert on quality and the representative of the customer on the team.<\/p>\n<p>You can think of the QA person as the \u201cquality coach\u201d for the team.\u00a0 They might not always be the one creating the automated tests or running them, but they are one of the main forces guiding the direction of the creation of those tests, and making sure the customer\u2019s interests are represented.<\/p>\n<p>The QA team members will also occasionally manually test things that cannot be automated, and exploratory test as needed, but the focus should shift towards being the \u201cquality coach\u201d for the team instead of doing all of the quality work.<\/p>\n<p>I found this <a href=\"http:\/\/testobsessed.com\/wp-content\/uploads\/2011\/04\/AgileTestingOverview.pdf\" target=\"_blank\" rel=\"noopener\">excellent presentation<\/a> on Agile Testing by Elisabeth Hendrickson from Quality Tree Software if you are interested in further reading on the topic.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I come from a QA background. I started off my career doing testing.\u00a0 I learned about testing the same way I learned about development\u2026 reading lots of books and applying what I learned. This is how you are supposed to do QA: Write a test plan for the project. Gather requirements.\u00a0 Put them into a&#8230;<\/p>\n","protected":false},"author":2,"featured_media":24385,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[11287,44070,2185,188921,12,303624],"tags":[],"class_list":["post-935","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile","category-automation","category-best-practices","category-functional","category-testing","category-user-stories"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Agile Testing is Different<\/title>\n<meta name=\"description\" content=\"A step-by-step example of what Agile testing looks like and how it differs from the traditional testing approach of waterfall. A discussion of QA&#039;s role.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agile Testing is Different\" \/>\n<meta property=\"og:description\" content=\"A step-by-step example of what Agile testing looks like and how it differs from the traditional testing approach of waterfall. A discussion of QA&#039;s role.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2010-06-16T14:56:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-07-03T23:22:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/06\/Agile-Testing-Is-Different.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"John Sonmez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John Sonmez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/\"},\"author\":{\"name\":\"John Sonmez\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"headline\":\"Agile Testing is Different\",\"datePublished\":\"2010-06-16T14:56:54+00:00\",\"dateModified\":\"2017-07-03T23:22:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/\"},\"wordCount\":1238,\"commentCount\":15,\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/06\\\/Agile-Testing-Is-Different.png\",\"articleSection\":[\"Agile\",\"Automation\",\"Best Practices\",\"Functional\",\"Testing\",\"User Stories\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/\",\"name\":\"Agile Testing is Different\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/06\\\/Agile-Testing-Is-Different.png\",\"datePublished\":\"2010-06-16T14:56:54+00:00\",\"dateModified\":\"2017-07-03T23:22:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"description\":\"A step-by-step example of what Agile testing looks like and how it differs from the traditional testing approach of waterfall. A discussion of QA's role.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#primaryimage\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/06\\\/Agile-Testing-Is-Different.png\",\"contentUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/06\\\/Agile-Testing-Is-Different.png\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/agile-testing-is-different\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agile Testing is Different\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/\",\"name\":\"Simple Programmer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/simpleprogrammer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\",\"name\":\"John Sonmez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"caption\":\"John Sonmez\"},\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/author\\\/jsonmez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agile Testing is Different","description":"A step-by-step example of what Agile testing looks like and how it differs from the traditional testing approach of waterfall. A discussion of QA's role.","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:\/\/simpleprogrammer.com\/agile-testing-is-different\/","og_locale":"en_US","og_type":"article","og_title":"Agile Testing is Different","og_description":"A step-by-step example of what Agile testing looks like and how it differs from the traditional testing approach of waterfall. A discussion of QA's role.","og_url":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/","og_site_name":"Simple Programmer","article_published_time":"2010-06-16T14:56:54+00:00","article_modified_time":"2017-07-03T23:22:12+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/06\/Agile-Testing-Is-Different.png","type":"image\/png"}],"author":"John Sonmez","twitter_card":"summary_large_image","twitter_misc":{"Written by":"John Sonmez","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/"},"author":{"name":"John Sonmez","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"headline":"Agile Testing is Different","datePublished":"2010-06-16T14:56:54+00:00","dateModified":"2017-07-03T23:22:12+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/"},"wordCount":1238,"commentCount":15,"image":{"@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/06\/Agile-Testing-Is-Different.png","articleSection":["Agile","Automation","Best Practices","Functional","Testing","User Stories"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/","url":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/","name":"Agile Testing is Different","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#primaryimage"},"image":{"@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/06\/Agile-Testing-Is-Different.png","datePublished":"2010-06-16T14:56:54+00:00","dateModified":"2017-07-03T23:22:12+00:00","author":{"@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"description":"A step-by-step example of what Agile testing looks like and how it differs from the traditional testing approach of waterfall. A discussion of QA's role.","breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/agile-testing-is-different\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#primaryimage","url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/06\/Agile-Testing-Is-Different.png","contentUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/06\/Agile-Testing-Is-Different.png","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/agile-testing-is-different\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"Agile Testing is Different"}]},{"@type":"WebSite","@id":"https:\/\/simpleprogrammer.com\/#website","url":"https:\/\/simpleprogrammer.com\/","name":"Simple Programmer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simpleprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67","name":"John Sonmez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","caption":"John Sonmez"},"url":"https:\/\/simpleprogrammer.com\/author\/jsonmez\/"}]}},"_links":{"self":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/comments?post=935"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/935\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media\/24385"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}