{"id":3709,"date":"2015-10-26T18:06:32","date_gmt":"2015-10-26T18:06:32","guid":{"rendered":"http:\/\/www.abstracta.us\/?p=3709"},"modified":"2025-05-05T21:21:31","modified_gmt":"2025-05-05T21:21:31","slug":"best-testing-practices-agile-teams-automation-pyramid","status":"publish","type":"post","link":"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/","title":{"rendered":"Best Testing Practices for Agile Teams: The Automation Pyramid"},"content":{"rendered":"<p><!-- Go to www.addthis.com\/dashboard to customize your tools --><script src=\"\/\/s7.addthis.com\/js\/300\/addthis_widget.js#pubid=ra-58d80a50fc4f926d\" type=\"text\/javascript\"><\/script><\/p>\n<h1><span style=\"font-weight: 400; color: #333333;\">How to apply test automation efficiently and effectively with the automation pyramid<\/span><\/h1>\n<p><span style=\"font-weight: 400; color: #333333;\">Test automation and agile software development go hand in hand, but automating is often easier said than done. Most developers recognize the benefits of test automation: it speeds up testing, lowers costs, increases coverage, etcetera, but, many never get past the initial investment required to get it started. Like the cavemen in this cartoon, a lot of teams get stuck using less efficient testing methods because they think they don\u2019t have the time to implement changes, when really, they are doing themselves a disservice. Don&#8217;t fall into this bad habit!\u00a0<\/span><\/p>\n<p><a href=\"http:\/\/www.abstracta.us\/wp-content\/uploads\/2015\/10\/Agile-Pyramid-comic.png\" rel=\"attachment wp-att-4400\"><img decoding=\"async\" class=\" wp-image-4400 aligncenter\" src=\"http:\/\/www.abstracta.us\/wp-content\/uploads\/2015\/10\/Agile-Pyramid-comic-300x159.png\" alt=\"Agile Pyramid comic\" width=\"473\" height=\"251\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400; color: #333333;\">Today we will share with you one of our best testing practices for agile teams.<\/span><\/p>\n<p><span style=\"font-weight: 400; color: #333333;\">How do we get started? How do we know on which areas to focus? Which test cases should be automated? In non-agile software development, many people end up inadvertently falling into the \u201cice cream cone anti-pattern\u201d for testing by putting more emphasis on automating at the UI level. At Abstracta, we\u2019re more fond of the approach that flips that ice cream cone upside down. We agree with the approach made popular by <\/span><a href=\"http:\/\/www.amazon.com\/gp\/product\/0321579364?ie=UTF8&amp;tag=martinfowlerc-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321579364\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Mike Cohn<\/span><\/a><span style=\"font-weight: 400;\"><span style=\"color: #333333;\">, the agile test automation pyramid, that gives you the most bang for your automation buck, improving the<\/span> <\/span><span style=\"color: #00b674;\"><a href=\"http:\/\/abstracta.us\/blog\/test-automation\/true-roi-test-automation\/\"><span style=\"font-weight: 400;\">ROI of automation<\/span><\/a><\/span><span style=\"font-weight: 400; color: #333333;\"> and guaranteeing that you will receive the most benefits from automation.<\/span><\/p>\n<p><span style=\"color: #333333;\"><strong>When most of our efforts are focused on automation at the UI level, the focus is on finding bugs,\u00a0whereas, with the agile pyramid, the idea is to prevent them.<\/strong><\/span><\/p>\n<p>In the figure\u00a0below, you can see how the two approaches differ.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-11320\" src=\"http:\/\/abstracta.us\/wp-content\/uploads\/2015\/10\/Automation_pyramid-EN-300x165.png\" alt=\"automation pyramid best agile testing practices\" width=\"800\" height=\"439\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Base_Layer_Unit_Tests\"><\/span>Base Layer: Unit Tests<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400; color: #333333;\">Clearly in the pyramid, (as a part of\u00a0the\u00a0best testing practices for agile teams), most of the testing should take place in the development stage, <strong>running unit tests after every build.<\/strong> These tests are the easiest, cheapest, and fastest to complete and are an important aspect of test-driven development. Running more tests at a lower level allows us to \u201ccheck our work\u201d as we go, getting feedback immediately and allowing us to know exactly where the bugs are when it is much harder for them to hide. Here, the bugs will also have a shorter lifespan, having been born and removed in less than a minute, perhaps. During the UI tests, bugs will have lived for much longer and will put up a greater fight because they have lived there very comfortably for a longer period of time (perhaps even a couple of days). <\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Mid-layer_API_Integration_Component_Tests\"><\/span>Mid-layer: API\/ Integration\/ Component Tests<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400; color: #333333;\">After we run all of the unit tests and they pass, we can move onto the API\/ integration\/ component testing phase. Integration tests are run to make sure that all the components work together properly. This is where we can test most of the logic and business processes without going through the UI. <strong>It is best to automate here as much as possible.<\/strong> If you have to decide whether to automate at this level or at the UI level, here you\u2019ll have fewer problems, easier maintenance, faster test execution (meaning finding bugs sooner and decreasing their lifespans) and you get to test the logic of your system. These tests are slower and more complex than unit tests, but they are still faster and less brittle than UI tests. <\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Top_Layer_UI_Tests\"><\/span>Top Layer: UI Tests<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400; color: #333333;\">Last and run least are UI tests. It\u2019s best to run <strong>as few as possible<\/strong> as they are costly, more difficult to prepare and maintain, and take a long time. Here you just want to make sure that the user interface itself works properly, knowing that all the other aspects of the system should have already been tested. Automate only the most critical tests, end to end, with a flow starting from the user login and ending with their final action, like the transaction success message. It\u2019s also helpful to focus on things related to the browsers or the UI. Be careful with these tests as they are more likely to provide false negatives and false positives. After running the UI tests, manual and exploratory testing can be conducted (as shown in the sphere shape above the pyramid).\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400; color: #333333;\">As you can see, the pyramid approach is a stronger, more beneficial and cost-effective way to implement test automation than putting the focus on automated GUI tests and inadvertently following the \u201cice cream cone anti-pattern.\u201d The pyramid provides a strong base in the unit testing phase from which to build upon further testing in the integration and UI phases, whereas the ice cream cone approach is more \u201ctop heavy\u201d and less stable. <\/span><\/p>\n<p><span style=\"font-weight: 400; color: #333333;\">To excel in the agile development world, it is imperative to follow the automation testing pyramid in order to produce the best quality software possible. <\/span><\/p>\n<p><strong><span style=\"font-weight: 400; color: #333333;\">Don\u2019t take just our word for it! <\/span><\/strong><span style=\"color: #333333;\">Even<\/span> <span style=\"color: #00b674;\"><a href=\"http:\/\/googletesting.blogspot.com.uy\/2015\/04\/just-say-no-to-more-end-to-end-tests.html\" target=\"_blank\" rel=\"noopener\">Google\u2019s testers<\/a><\/span> <span style=\"color: #333333;\">say this is the best method. <\/span><\/p>\n<p><span style=\"color: #333333;\">Have you tried it before? Let us know in the comments!<\/span><\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"Recommended_for_You\"><\/span>Recommended for You<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"http:\/\/abstracta.us\/blog\/test-automation\/4-common-test-automation-challenges-overcome\/\">The 4 Most Common Challenges of Test Automation (And How to Overcome Them)<br \/>\n<\/a><a href=\"http:\/\/abstracta.us\/blog\/test-automation\/avoid-false-positives-false-negatives-test-automation\/\">How to Avoid False Positives and False Negatives in Test Automation<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to apply test automation efficiently and effectively with the automation pyramid Test automation and agile software development go hand in hand, but automating is often easier said than done. Most developers recognize the benefits of test automation: it speeds up testing, lowers costs, increases&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[60],"tags":[68,647],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v14.0.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Best Testing Practices for Agile Teams: The Automation Pyramid | Abstracta<\/title>\n<meta name=\"description\" content=\"Today we will share with you one of our best testing practices for agile teams: the test automation pyramid that gives you the most bang for your buck and\" \/>\n<meta name=\"robots\" content=\"index, follow\" \/>\n<meta name=\"googlebot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta name=\"bingbot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Best Testing Practices for Agile Teams: The Automation Pyramid | Abstracta\" \/>\n<meta property=\"og:description\" content=\"Today we will share with you one of our best testing practices for agile teams: the test automation pyramid that gives you the most bang for your buck and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog about AI-powered quality engineering for teams building complex software | Abstracta\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AbstractaQA\/\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-26T18:06:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-05T21:21:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/abstracta.us\/wp-content\/uploads\/2015\/10\/Automation_pyramid-min.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"420\" \/>\n\t<meta property=\"og:image:height\" content=\"236\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AbstractaUS\" \/>\n<meta name=\"twitter:site\" content=\"@AbstractaUS\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/abstracta.us\/blog\/#website\",\"url\":\"https:\/\/abstracta.us\/blog\/\",\"name\":\"Blog about AI-powered quality engineering for teams building complex software | Abstracta\",\"description\":\"AI-powered quality engineering\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/abstracta.us\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"http:\/\/www.abstracta.us\/wp-content\/uploads\/2015\/10\/Agile-Pyramid-comic-300x159.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/#webpage\",\"url\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/\",\"name\":\"Best Testing Practices for Agile Teams: The Automation Pyramid | Abstracta\",\"isPartOf\":{\"@id\":\"https:\/\/abstracta.us\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/#primaryimage\"},\"datePublished\":\"2015-10-26T18:06:32+00:00\",\"dateModified\":\"2025-05-05T21:21:31+00:00\",\"author\":{\"@id\":\"https:\/\/abstracta.us\/blog\/#\/schema\/person\/78cd0dcae50ce820b25e86d3330e9762\"},\"description\":\"Today we will share with you one of our best testing practices for agile teams: the test automation pyramid that gives you the most bang for your buck and\",\"breadcrumb\":{\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/\",\"url\":\"https:\/\/abstracta.us\/blog\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/\",\"url\":\"https:\/\/abstracta.us\/blog\/test-automation\/\",\"name\":\"Test Automation\"}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/\",\"url\":\"https:\/\/abstracta.us\/blog\/test-automation\/best-testing-practices-agile-teams-automation-pyramid\/\",\"name\":\"Best Testing Practices for Agile Teams: The Automation Pyramid\"}}]},{\"@type\":[\"Person\"],\"@id\":\"https:\/\/abstracta.us\/blog\/#\/schema\/person\/78cd0dcae50ce820b25e86d3330e9762\",\"name\":\"Sof\\u00eda Palamarchuk, Co-CEO at Abstracta\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/abstracta.us\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/222e8b1136482564fe25acc4de2b9b7a?s=96&d=blank&r=g\",\"caption\":\"Sof\\u00eda Palamarchuk, Co-CEO at Abstracta\"},\"description\":\"Co-Chief Executive Officer at Abstracta\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/3709"}],"collection":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/comments?post=3709"}],"version-history":[{"count":22,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/3709\/revisions"}],"predecessor-version":[{"id":16038,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/posts\/3709\/revisions\/16038"}],"wp:attachment":[{"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/media?parent=3709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/categories?post=3709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abstracta.us\/blog\/wp-json\/wp\/v2\/tags?post=3709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}