{"id":1287,"date":"2019-07-16T18:10:13","date_gmt":"2019-07-16T15:10:13","guid":{"rendered":"https:\/\/djangostars.com\/blog\/?p=1287"},"modified":"2025-10-21T09:27:54","modified_gmt":"2025-10-21T09:27:54","slug":"ace-project-use-specification-by-example","status":"publish","type":"post","link":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/","title":{"rendered":"How to Ace Project Planning with Specification by Example (SbE)"},"content":{"rendered":"<p>In software development, almost everyone you work with understands the importance of <a href=\"https:\/\/djangostars.com\/services\/#quality-assurance\" target=\"_blank\" rel=\"noopener\">Quality Assurance<\/a> (QA), but rarely understands the value of engaging QA engineers \u2014 especially during early project planning stages. The end result is that a lot of value QA engineers could have provided is simply wasted.<\/p>\n<p>In my experience working as a part of SCRUM development teams with little to no technical specifications of the projects and communicating with a non-technical product owner, the role of my QA team has proven to be an essential part of the product development process. Here I\u2019d like to share an effective way to bridge the gap between software development, software quality assurance, and the business with a method called Specifications by Example.<\/p>\n<p>In this article, we aim to focus on the value of QA engineers, especially during a critical project stage: planning. We will also touch in detail on the SbE approach, which is more commonly referred to as specification by example.<\/p>\n<p>Let\u2019s dig deeper into how exactly this is done, but before, a few QA fundamentals.<\/p>\n<h2 id=\"header0\">Why Start Early with Quality Assurance<\/h2>\n<p>Quality Assurance (QA) is the process of identifying whether a product meets all the requirements in terms of (including, but not limited to):<\/p>\n<ul>\n<li>Functionality<\/li>\n<li>Security<\/li>\n<li>Compatibility<\/li>\n<li>Usability<\/li>\n<li>Performance<\/li>\n<li>Reliability<\/li>\n<\/ul>\n<p>Ideally, it allows to avoid errors in late QA project delivery stages, saves time and unexpected expenses, decreases the cost of defects (bugs).<br \/>\n<!-- [related-post id=\"120\"] --><br \/>\nThe cost of defects depends on the impact they have and when they are found. Usually, the earlier you find one, the less time and effort it takes to fix it. Any error is easier to fix and costs less when you\u2019re still in the requirements or design stage. On the other hand, if you find a defect after the product goes live, error correction may cost much more in terms of both the fixes and the users&#8217; reaction.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1300\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/cost-of-defects.png\" alt=\"qa-development-cost-of-defects\" width=\"1679\" height=\"1325\" \/><br \/>\nTypically, the Requirements Gathering and Analysis stage (also sometimes called Planning) doesn\u2019t get enough credit within the <a href=\"https:\/\/djangostars.com\/blog\/roles-in-the-sdlc\/\">software development (SDLC) process<\/a>, even though it can significantly impact a QA project.<\/p>\n<p>In my view, a QA specialist must be present at all stages (based on Scrum criteria), yet, the requirements for testing and detailed grooming that involve QA engineers aren\u2019t usually handled within early spirits, keeping only to the letter of good Scrum standards but not its spirit.<\/p>\n<h3 id=\"header1\">Maximizing QA Impact During Requirements Gathering and Analysis<\/h3>\n<p>When only product owners, business analysts, and software developers work with the requirements, defects due to poor planning are easier to miss. The importance of the right QA process for software development is illustrated in the cartoon below.<br \/>\n<a href=\"https:\/\/xkcd.com\/1425\/\"><img decoding=\"async\" class=\"alignnone size-full wp-image-1291\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/the-importance-of-the-right-qa-process.png\" alt=\"\" width=\"1364\" height=\"1003\" \/><\/a><br \/>\nDuring the first and most critical in terms of impact stage, quality assurance engineers can:<\/p>\n<ul>\n<li><strong>Expand product knowledge<\/strong>. By exploring user stories, skeleton models, and papers, QA engineers can get an idea of the work process, figure out the goals of the interested parties, and prepare questions.<\/li>\n<li><strong>Reveal logical contradictions<\/strong>. As soon as QA engineers dive deep into the documentation, their understanding of the project grows and they can spot logical contradictions early in the development process.<\/li>\n<li><strong>Address unaddressed elements<\/strong>. They start noticing flaws in the business process, authorization, and user roles. Poorly defined things like user and input validations and text-field requirements typically become visible to QA engineers early on.<\/li>\n<li><strong>Provide user stories feedback<\/strong>. User stories are brief descriptions of what a product should do for a user, for each of the functions. If the stories are too dense, complicated, or incomplete, they lead to difficulties in coding and preparing test cases. Relying on experience, QA engineers can leave their feedback and suggestions on user stories to make them more accurate<\/li>\n<li><strong>Pose questions<\/strong>. To help address issues, they post questions or point out the flaws they\u2019ve noticed.<\/li>\n<\/ul>\n<p>Including QA engineers early in the software development process prevents many defects and decreases the negative impact on the timeline, budget, and risk.<br \/>\n<div class=\"article-linking \">\n    <div class=\"article-linking-background\" style=\"background-image: url(https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/05\/8_1_bg.png)\">\n\n    <\/div>\n    <div class=\"article-linking-content \">\n        <img decoding=\"async\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/themes\/ds-new-blog\/assets\/img\/ds-logo-white.svg\" alt=\"logo\" class=\"article-linking-logo\">\n        <h3 class=\"article-linking-caption\">\n\t\t\tMake sure your product is <u>perfect.<\/u>\t\t\t                <p class=\"article-linking-caption--small\">\n                    Hire an experienced QA team.                <\/p>\n                    <\/h3>\n\t\t            <div class=\"article-link-wrapper\">\n                <a href=\"https:\/\/djangostars.com\/services\/#quality-assurance\" target=\"_blank\">Learn more<\/a>\n            <\/div>\n\t\t    <\/div>\n<\/div>\n<\/p>\n<h3 id=\"header2\">QA Engineers and Their Role in Communication and Collaboration<\/h3>\n<p>The success of effective collaboration in a software development project lies in clear communication and can be easily achieved by focusing on meeting business goals. Even though QA engineers and software developers each have their own focus, they are still bound by a common objective: to manufacture a reliable, quality product. That\u2019s why we can use a concept called &#8220;Three Amigos&#8221;.<\/p>\n<p>In simple terms, the Three Amigos is a meeting of product owner or business analysts, software developers, and quality assurance engineers to discuss a new feature and refine the specification. From various perspectives, the parties collaborate to determine what they have to do and how they will know that it\u2019s been done correctly (the \u201cDefinition of Done\u201d is clear and precise).<\/p>\n<p>The quality assurance engineers have the following role in this process:<\/p>\n<ul>\n<li>Ask questions while communicating with the business.<\/li>\n<li>Analyze the requirements and create test documentation that will prevent ambiguous interpretations during the development stage. Accurate test preparation helps developers avoid bugs and deliver a high-quality product without delays.<\/li>\n<li>Suggest that clients review block schemes before sending them to developers.<\/li>\n<\/ul>\n<p>There are many approaches that aim to make planning and requirements gathering more effective for all stakeholders. Behavior-Driven Development (BDD) is one such method worth exploring.<\/p>\n<h3 id=\"header3\">Quality Assurance in Behavior-Driven Development<\/h3>\n<p>Behavior-Driven Development (BDD) implies example-based communication between developers, the QA engineers, and business analysts, or non-technical parties (usually presented by business participants). Ultimately, BDD is meant to improve communication among stakeholders.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1302\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/behavior-driven-development.png\" alt=\"qa-for-software-development-behavior-driven\" width=\"1966\" height=\"1345\" \/><br \/>\nThe outcome of behavior-driven development example would demonstrate test cases written in a common technical-jargon-free language, which leads to effective collaboration between interested parties. The team may prefer the BDD approach to TDD (test-driven development) for several reasons:<\/p>\n<ul>\n<li>BDD provides more accurate instructions on how to better arrange conversations between stakeholders.<\/li>\n<li>BDD applies \u201c<a href=\"https:\/\/en.wikipedia.org\/wiki\/5_Whys\">Five Whys<\/a>\u201d \u2014 the famous technique used to discover the causal relationships in a specific problem \u2014\u00a0to each user story so that its purpose becomes definitely related to the business result.<\/li>\n<li>BDD comes with a \u201c<a href=\"https:\/\/en.wikipedia.org\/wiki\/Given-When-Then\">Given-When-Then<\/a>\u201d approach, which refers to a style of writing down test cases for user stories in simple language.<\/li>\n<li>BDD contains a variety of tools that address the automatic creation of the technical and end-user documents.<\/li>\n<\/ul>\n<p>Behavior-Driven Development is inevitably linked to another technique called Specification by Example. Both of them use examples to determine how the system should behave. Next, the examples are expressed in a common language that any of the participants can understand, including non-technical members. In some cases, it comes down to Gherkin language that\u2019s intended to help interpret the requirements from the client\u2019s perspective.<\/p>\n<p>Here\u2019s how Specification by Example and Gherkin work.<\/p>\n<h2 id=\"header4\">Specification by Example and Gherkin<\/h2>\n<p>Specification by Example (SbE) is a collaborative technique. This methodology helps determine requirements and functional tests suitable for the needs of a business. The needs are based on recording and illustrating requirements, with explicit examples instead of abstract statements. SbE is applied in terms of Behavior-Driven Development and is especially important for large-scale projects (because it allows managing requirements and functional tests).<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1293\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/specification-by-example.png\" alt=\"qa-development -specification-by-example\" width=\"1450\" height=\"1144\" \/><br \/>\nMeanwhile, Gherkin refers to DSL (or domain-specific language), which provides a platform for business analysis and end-user testing.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1292\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/template-comparison.png\" alt=\"qa-development-template-comparison\" width=\"1450\" height=\"1144\" \/><br \/>\nBy giving an idea of how the client sees the requirements, it clarifies a user\u2019s working process and creates explicit conditions that the software must satisfy to meet a user story.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1296\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/requirements-comparison.png\" alt=\"qa-development-process-requirements-comparison\" width=\"1450\" height=\"1144\" \/><\/p>\n<h3 id=\"header5\">How Does Specification by Example Work?<\/h3>\n<p>When diving deeper into SbE and considering it in the context of Quality Assurance, it\u2019s important to mention the process patterns that make adjusting software products easy and guarantee that the necessary product is delivered.<\/p>\n<p>Now let\u2019s take a closer look at each of the process patterns and their goals.<\/p>\n<p><strong>Collaborative Specification<\/strong><\/p>\n<p>The objectives of this pattern include:<\/p>\n<ol>\n<li>getting all necessary roles into the team so that everyone can share their views and contribute to the general understanding;<\/li>\n<li>shared responsibility for the project&#8217;s features and project specifications.<\/li>\n<\/ol>\n<p><strong>Illustrating the Specification Using Examples<\/strong><br \/>\nHere\u2019s when a Given-When-Then formula is used for creating testable specs. Upon this pattern, the participants in the development process \u2013 including developers, QAs, and a product owner \u2013 keep considering the examples until they correspond to the expected behavior of the feature.<br \/>\n<strong>Refining the Specification<\/strong><br \/>\nBased on the raw examples and collaborative specification, the product owner creates refined requirements, which are easy for all the stakeholders to understand.<br \/>\n<strong>Automating the Examples<\/strong><br \/>\nUsing DSL, you can automate testing by displaying clear links between inputs and outputs. While performing test automation, make sure you emphasize specification rather than a scenario. Besides that, the tests should be accurate and easy to understand, hence testable.<br \/>\n<strong>Validating Frequently<\/strong><br \/>\nIn the deployment pipeline, you can also validate examples every time changes are applied. Additionally, you can expect to have a great number of tools and techniques you can use to ensure product quality. By performing testing as often as possible, you have a chance to reveal weak links at the early stages.<br \/>\n<strong>Living Documentation<\/strong><br \/>\nThe principle of this pattern is to keep specs easy and precise, evolve them as work progresses, and allow everyone to access the documentation.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1294\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/specification-by-example-process.png\" alt=\"specification-by-example-process\" width=\"1663\" height=\"1571\" \/><\/p>\n<h2 id=\"header6\">SbE Examples<\/h2>\n<p>The product owner writes the acceptance criteria if they have a clear understanding and experience in software development and know how to write a project paper. But in most cases, it\u2019s a task for the development team.<br \/>\n<div class=\"article-linking \">\n    <div class=\"article-linking-background\" style=\"background-image: url(https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/05\/2_bg.png)\">\n\n    <\/div>\n    <div class=\"article-linking-content \">\n        <img decoding=\"async\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/themes\/ds-new-blog\/assets\/img\/ds-logo-white.svg\" alt=\"logo\" class=\"article-linking-logo\">\n        <h3 class=\"article-linking-caption\">\n\t\t\t<u>Python &amp; Django<\/u> development\t\t\t                <p class=\"article-linking-caption--small\">\n                    Your chance to enter the market faster                <\/p>\n                    <\/h3>\n\t\t            <div class=\"article-link-wrapper\">\n                <a href=\"https:\/\/djangostars.com\/services\/python-django-development\/\" target=\"_blank\">Learn more<\/a>\n            <\/div>\n\t\t    <\/div>\n<\/div>\n<br \/>\nFor more effective communication, the developers must collaborate with business analysts, the product owner, and a QA engineer. After gathering the whole team, they start working on creating the acceptance criteria.<\/p>\n<p>Let\u2019s consider what steps specification by example process requires:<\/p>\n<h3 id=\"header7\">1. Discussion the acceptance criteria<\/h3>\n<p>Product owner, developers, and quality assurance engineers initially each see acceptance criteria differently. This can lead to miscommunication and defects further on.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1316\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/discussion-of-acceptance-criteria_1024.png\" alt=\"qa-development-discussion-of-acceptance-criteria\" width=\"1024\" height=\"708\" \/><\/p>\n<h3 id=\"header8\">2. Illustrating acceptance criteria with examples<\/h3>\n<p>To minimize differences in understanding, a common language format can be used during requirements analysis.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1297\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/illustrating-acceptance-criteria-with-examples.png\" alt=\"acceptance-criteria-with-examples\" width=\"1654\" height=\"1144\" \/><\/p>\n<h3 id=\"header9\">3. Discovering hidden assumptions<\/h3>\n<p>To avoid each team member filling in missing data with their own undocumented assumptions the team discusses edge cases, exceptions, and alternative business process and user flows.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1299\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/discovering-hidden-assumptions.png\" alt=\"QA-for-development-discovering-hidden-assumptions\" width=\"1654\" height=\"1144\" \/><\/p>\n<h3 id=\"header10\">4. Writing abstract acceptance criteria<\/h3>\n<p>The goal is to arrive at common acceptance criteria that elicit additional clarification questions for non-obvious scenarios.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1289\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/writing-abstract-acceptance-criteria.png\" alt=\"qa-development-writing-abstract-acceptance-criteria\" width=\"1654\" height=\"1144\" \/><\/p>\n<h3 id=\"header11\">5. Working on examples of acceptance criteria<\/h3>\n<p>Augment the abstract criteria with real-life examples and clear acceptance criteria that anyone can understand.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1315\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/07\/working-on-examples-of-acceptance-criteria_1024.png\" alt=\"qa-development-working-on-examples-of-acceptance-criteria\" width=\"1024\" height=\"708\" \/><\/p>\n<h2 id=\"header12\">The Benefits of Acceptance Criteria<\/h2>\n<p>Different kinds of methodologies and approaches aim to bridge the communication gap in the project lifecycle. Using Specifications by Example, each party involved in the development process can significantly benefit from using any of them. And by adding acceptance criteria into the mix, all participants win. Here\u2019s exactly how each party benefits from writing them:<br \/>\n<strong>Product Owner:<\/strong><\/p>\n<ul>\n<li>Expands and validates the requirements<\/li>\n<li>Clarifies negative cases<\/li>\n<li>Has a clear understanding of business goals and provides the team with early feedback (resulting in a better alternative decision than the developers would have chosen)<\/li>\n<\/ul>\n<p><strong>Software Developers:<\/strong><\/p>\n<ul>\n<li>Ensure the requirements are explicit and lack functional gaps<\/li>\n<li>Keep up with the business goal, which allows them to stay motivated to find the proper solution<\/li>\n<li>Write better code due to their clear understanding of test case dependencies, which allows them to offer better alternative architectural designs<\/li>\n<\/ul>\n<p><strong>QA Engineers:<\/strong><\/p>\n<ul>\n<li>Build quality early on in the development process and help create a better-quality product as a result<\/li>\n<li>Provide ready test scripts for user acceptance testing<\/li>\n<li>Offer formalized testing formats that are perfectly suited for automated testing<\/li>\n<li>Prevent development errors, as long as the developers clearly understand which specific criteria their code will be tested against<\/li>\n<\/ul>\n<h2 id=\"header13\">Closing Thoughts on Specifications by Example<\/h2>\n<p>Including QA engineers from the very beginning of a project has a lot of benefits, from saved time and money to fewer bugs in the final stages. All of this leads to one major advantage \u2014 the ability to deliver a high-quality product that meets all the client\u2019s requirements and business needs.<br \/>\nBesides, QA engineers play a significant role in communication and collaboration with all the stakeholders who participate in software development. It is important for them to communicate throughout the software development process, especially when many approaches and techniques are or might be used to improve communication (e.g., Three Amigos, Specification by Example, etc.).<br \/>\nWhile seeking to build a high-quality product that will meet business needs, I suggest you give Specification by Example a try. It accentuates shared understanding and allows the team to determine a single source of truth. Using this collaborative approach, the stakeholders can automate the writing of acceptance criteria and focus on preventing defects.<br \/>\nIf you apply QA testing to the Requirements Gathering and Analysis stage, you\u2019ll be able to prevent defects in design from being coded into the software. At this stage, QA deeply learns the documentation along with the requirements, monitors whether they are met and not skipped over by developers, ensures business problems are resolved, and reveals contradictions and unaddressed elements. Hence, QA is an essential part of requirements management.<br \/>\nAnd finally, if you\u2019re a part of the development team, keep in mind the following:<\/p>\n<ol>\n<li>A formulaic approach to planning without working through goals and aims doesn\u2019t lead to great product results.<\/li>\n<li>There is no magic pill \u2014 try different methods in your specific process; don\u2019t cling on to a single one.<\/li>\n<li>Each team has its own optimal blend of approaches. If one doesn\u2019t work for you, go for another methodology.<\/li>\n<li>It is important to experiment and modify the elements until they work for you.<\/li>\n<li>All team members with different competencies should take part in the planning process to create a fuller picture of the requirements.<\/li>\n<\/ol>\n<div class=\"lead-form-wrapper lets_disqus\">\n    <div class=\"lead-form transparent-footer\">\n        <p class=\"discuss-title paragraph-discuss col-md-12\">Have an idea? Let&#039;s discuss!<\/p>\n\n        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f2589-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"2589\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/blog\/wp-json\/wp\/v2\/posts\/1287#wpcf7-f2589-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" enctype=\"multipart\/form-data\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"2589\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.0.6\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f2589-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<input type=\"hidden\" name=\"form_start_time\" value=\"1775843619\" \/>\n<input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/div>\n<div class=\"form_holder\">\n    <div class=\"input_section input_row\">\n        <div class=\"input_holder\">\n                            <span class=\"input_label\">\n                               Your name *\n                            <\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" id=\"your-name\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"text-898\" \/>\n\n            <input class=\"wpcf7-form-control wpcf7-hidden\" id=\"uniq_ga_id\" value=\"\" type=\"hidden\" name=\"uniq_ga_id\" \/>\n        <\/div>\n        <div class=\"input_holder\">\n                            <span class=\"input_label\">\n                                Your email *\n                            <\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" id=\"your-email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"email-882\" \/>\n        <\/div>\n    <\/div>\n    <div class=\"input_section single_input_row\">\n        <div class=\"input_holder\">\n            <span class=\"input_label\">How can we help you? *<\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"message\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"message\" \/>\n        <\/div>\n    <\/div>\n    <div class=\"file_attach\">\n        <input size=\"40\" class=\"wpcf7-form-control wpcf7-file\" accept=\"audio\/*,video\/*,image\/*\" aria-invalid=\"false\" type=\"file\" name=\"file-930\" \/>\n        <div class=\"file_placeholder\">\ud83d\udcce <span>Attach File<\/span>\n            <span class=\"file_formats\">Formats: pdf, doc, docx, rtf, ppt, pptx.<\/span><\/div>\n    <\/div>\n    <div class=\"checkbox_row\">\n        <div class=\"single_checkbox\"><div class=\"checkbox_indicator\"><div class=\"checked_indicator\"><svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.66804 12L0 7.26951L1.22426 6.05269L4.54927 9.40456L12.6737 0L14 1.10613L4.66804 12Z\" fill=\"#1E232C\"\/><\/svg><\/div><\/div><input type=\"checkbox\" name=\"agree\" id=\"privacy\" value=\"agree privacy\"><label for=\"privacy\" class=\"\">I have read and accepted <a href=\"https:\/\/djangostars.com\/privacy-policy\/\" style=\"margin-left: 6px;\"> Privacy Policy*<\/a><\/label><\/div>\n        <div class=\"single_checkbox\"><div class=\"checkbox_indicator\"><div class=\"checked_indicator\"><svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.66804 12L0 7.26951L1.22426 6.05269L4.54927 9.40456L12.6737 0L14 1.10613L4.66804 12Z\" fill=\"#1E232C\"\/><\/svg><\/div><\/div><input type=\"checkbox\" name=\"agree\" id=\"marketing\" value=\"agree for marketing\"><label for=\"marketing\" class=\"\">I agree to receive marketing content from Django Stars<\/label><\/div>\n    <\/div>\n    <div class=\"submit\"><button type=\"submit\"><span>send message<\/span><\/button><div class=\"safeguard\">We safeguard your privacy<\/div><\/div>\n<\/div>\n<div style=\"position: absolute; left: -5000px;\" aria-hidden=\"true\">\n    <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"website_url\" \/>\n<\/div><script type='text\/javascript'>\n\n\t\t\t\t\t\tif(contactform === undefined){\n\t\t\t\t\t\t\tvar contactform = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar innerVal = [2589,'mail_sent_ok','Thank you for your message. It has been sent.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'mail_sent_ng','There was an error trying to send your message. Please try again later.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'validation_error','One or more fields have an error. Please check and try again.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'spam','There was an error trying to send your message. Please try again later.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'accept_terms','You must accept the terms and conditions before sending your message.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_required','The field is required.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_too_long','The field is too long.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_too_short','The field is too short.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_failed','There was an unknown error uploading the file.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_file_type_invalid','You are not allowed to upload files of this type.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_file_too_large','The file is too big.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_failed_php_error','There was an error uploading the file.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_date','The date format is incorrect.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'date_too_early','The date is before the earliest one allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'date_too_late','The date is after the latest one allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_number','The number format is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'number_too_small','The number is smaller than the minimum allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'number_too_large','The number is larger than the maximum allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'quiz_answer_not_correct','The answer to the quiz is incorrect.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_email','The e-mail address entered is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_url','The URL is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_tel','The telephone number is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'gdpr',''];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\t<\/script><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n    <\/div>\n\n    <div class=\"success_disqus\">\n        Thank you for your message.\n        <span>We\u2019ll contact you shortly<\/span>.\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ (function ($) {\n    function click_input() {\n        jQuery('.file_placeholder').on('click', function () {\n            jQuery(this).parent().find('input').click();\n        })\n    }\n\n    document.addEventListener(\"DOMContentLoaded\", click_input);\n\n    \/\/ })(jQuery)\n<\/script>\n\n\n\n<div id=\"chromeExtensionIsInstalled\" style=\"display: none;\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In software development, almost everyone you work with understands the importance of Quality Assurance (QA), but rarely understands the value of engaging QA engineers \u2014 especially during early project planning stages. The end result is that a lot of value QA engineers could have provided is simply wasted. In my experience working as a part [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3593,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[79,40],"tags":[62],"class_list":["post-1287","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-project-management","category-tech-consultation","tag-it-processes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Software Development Blog &amp; IT Tech Insights | Django Stars<\/title>\n<meta name=\"description\" content=\"QA plays a crucial role in the planning stage of the SDLC. Discover how involving QA engineers early can benefit your business throughout the development process.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1287\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Ace Project Planning with Specifications by Example Approach\" \/>\n<meta property=\"og:description\" content=\"Quality Assurance has a critical role during the planning stage of the software development life cycle (SDLC). How can a business benefit from involving QA engineers from the beginning of the development process?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Development Blog &amp; IT Tech Insights | Django Stars\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/djangostars\/\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/profile.php?id=100000782607809\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-16T15:10:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-21T09:27:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/djangostars.com\/blog\/uploads\/2019\/07\/specification-by-example-post-cover.png\" \/>\n<meta name=\"author\" content=\"Iryna Meshchankina\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"How to Ace Project Planning with Specifications by Example Approach\" \/>\n<meta name=\"twitter:description\" content=\"Quality Assurance has a critical role during the planning stage of the software development life cycle (SDLC). How can a business benefit from involving QA engineers from the beginning of the development process?\" \/>\n<meta name=\"twitter:creator\" content=\"@djangostars\" \/>\n<meta name=\"twitter:site\" content=\"@djangostars\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Iryna Meshchankina\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/\"},\"author\":{\"name\":\"Iryna Meshchankina\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/5fc19c60d45b28d6f3345e67cd75a404\"},\"headline\":\"How to Ace Project Planning with Specification by Example (SbE)\",\"datePublished\":\"2019-07-16T15:10:13+00:00\",\"dateModified\":\"2025-10-21T09:27:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/\"},\"wordCount\":2335,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg\",\"keywords\":[\"IT Processes\"],\"articleSection\":[\"Project Management Tips &amp; Dev Insights for Scalable Software\",\"Tech Consultation\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/\",\"url\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/\",\"name\":\"Specification by Example (SbE): All You Should Know\",\"isPartOf\":{\"@id\":\"https:\/\/djangostars.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg\",\"datePublished\":\"2019-07-16T15:10:13+00:00\",\"dateModified\":\"2025-10-21T09:27:54+00:00\",\"author\":{\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/5fc19c60d45b28d6f3345e67cd75a404\"},\"description\":\"QA plays a crucial role in the planning stage of the SDLC. Discover how involving QA engineers early can benefit your business throughout the development process.\",\"breadcrumb\":{\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage\",\"url\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg\",\"contentUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg\",\"width\":1440,\"height\":620,\"caption\":\"How to Ace Project Planning with Specification by Example Approach\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/djangostars.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Ace Project Planning with Specification by Example (SbE)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/djangostars.com\/blog\/#website\",\"url\":\"https:\/\/djangostars.com\/blog\/\",\"name\":\"Software Development Blog &amp; IT Tech Insights | Django Stars\",\"description\":\"Welcome behind the scenes of software product development. We share our best practices, tech solutions, management tips, and every useful insight we\u2018ve got while working on our projects.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/djangostars.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/5fc19c60d45b28d6f3345e67cd75a404\",\"name\":\"Iryna Meshchankina\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/91e7ee894e413bae2051a2f78f37dee0210b642a04d3ff9e6d4733d2b83697d8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/91e7ee894e413bae2051a2f78f37dee0210b642a04d3ff9e6d4733d2b83697d8?s=96&d=mm&r=g\",\"caption\":\"Iryna Meshchankina\"},\"sameAs\":[\"https:\/\/www.facebook.com\/profile.php?id=100000782607809\",\"https:\/\/www.linkedin.com\/in\/iryna-meshchankina\/\"],\"url\":\"https:\/\/djangostars.com\/blog\/author\/iryna-meshchankina\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software Development Blog &amp; IT Tech Insights | Django Stars","description":"QA plays a crucial role in the planning stage of the SDLC. Discover how involving QA engineers early can benefit your business throughout the development process.","canonical":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1287","og_locale":"en_US","og_type":"article","og_title":"How to Ace Project Planning with Specifications by Example Approach","og_description":"Quality Assurance has a critical role during the planning stage of the software development life cycle (SDLC). How can a business benefit from involving QA engineers from the beginning of the development process?","og_url":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/","og_site_name":"Software Development Blog &amp; IT Tech Insights | Django Stars","article_publisher":"https:\/\/www.facebook.com\/djangostars\/","article_author":"https:\/\/www.facebook.com\/profile.php?id=100000782607809","article_published_time":"2019-07-16T15:10:13+00:00","article_modified_time":"2025-10-21T09:27:54+00:00","og_image":[{"url":"https:\/\/djangostars.com\/blog\/uploads\/2019\/07\/specification-by-example-post-cover.png","type":"","width":"","height":""}],"author":"Iryna Meshchankina","twitter_card":"summary_large_image","twitter_title":"How to Ace Project Planning with Specifications by Example Approach","twitter_description":"Quality Assurance has a critical role during the planning stage of the software development life cycle (SDLC). How can a business benefit from involving QA engineers from the beginning of the development process?","twitter_creator":"@djangostars","twitter_site":"@djangostars","twitter_misc":{"Written by":"Iryna Meshchankina","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#article","isPartOf":{"@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/"},"author":{"name":"Iryna Meshchankina","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/5fc19c60d45b28d6f3345e67cd75a404"},"headline":"How to Ace Project Planning with Specification by Example (SbE)","datePublished":"2019-07-16T15:10:13+00:00","dateModified":"2025-10-21T09:27:54+00:00","mainEntityOfPage":{"@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/"},"wordCount":2335,"commentCount":0,"image":{"@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage"},"thumbnailUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg","keywords":["IT Processes"],"articleSection":["Project Management Tips &amp; Dev Insights for Scalable Software","Tech Consultation"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/","url":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/","name":"Specification by Example (SbE): All You Should Know","isPartOf":{"@id":"https:\/\/djangostars.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage"},"image":{"@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage"},"thumbnailUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg","datePublished":"2019-07-16T15:10:13+00:00","dateModified":"2025-10-21T09:27:54+00:00","author":{"@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/5fc19c60d45b28d6f3345e67cd75a404"},"description":"QA plays a crucial role in the planning stage of the SDLC. Discover how involving QA engineers early can benefit your business throughout the development process.","breadcrumb":{"@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#primaryimage","url":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg","contentUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/INS_How-to-Ace-Project-Planning-with-Specification-by-Example-Approach.jpg","width":1440,"height":620,"caption":"How to Ace Project Planning with Specification by Example Approach"},{"@type":"BreadcrumbList","@id":"https:\/\/djangostars.com\/blog\/ace-project-use-specification-by-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/djangostars.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Ace Project Planning with Specification by Example (SbE)"}]},{"@type":"WebSite","@id":"https:\/\/djangostars.com\/blog\/#website","url":"https:\/\/djangostars.com\/blog\/","name":"Software Development Blog &amp; IT Tech Insights | Django Stars","description":"Welcome behind the scenes of software product development. We share our best practices, tech solutions, management tips, and every useful insight we\u2018ve got while working on our projects.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/djangostars.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/5fc19c60d45b28d6f3345e67cd75a404","name":"Iryna Meshchankina","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/91e7ee894e413bae2051a2f78f37dee0210b642a04d3ff9e6d4733d2b83697d8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/91e7ee894e413bae2051a2f78f37dee0210b642a04d3ff9e6d4733d2b83697d8?s=96&d=mm&r=g","caption":"Iryna Meshchankina"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=100000782607809","https:\/\/www.linkedin.com\/in\/iryna-meshchankina\/"],"url":"https:\/\/djangostars.com\/blog\/author\/iryna-meshchankina\/"}]}},"_links":{"self":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/comments?post=1287"}],"version-history":[{"count":12,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1287\/revisions"}],"predecessor-version":[{"id":9886,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1287\/revisions\/9886"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/media\/3593"}],"wp:attachment":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/media?parent=1287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/categories?post=1287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/tags?post=1287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}