{"id":3342,"date":"2025-07-02T16:27:39","date_gmt":"2025-07-02T20:27:39","guid":{"rendered":"https:\/\/blogs.mathworks.com\/developer\/?p=3342"},"modified":"2025-07-02T16:27:39","modified_gmt":"2025-07-02T20:27:39","slug":"test-impact-analysis-intro","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/developer\/2025\/07\/02\/test-impact-analysis-intro\/","title":{"rendered":"TL;DR: Too Long; Didn&#8217;t Run"},"content":{"rendered":"<p>\r\nIn the fast-paced world of software development, <em>speed<\/em> and <em>quality<\/em> often feel like they're pulling us in opposite directions. On the one hand, we\u2019re racing to deliver new features and fixes. On the other, every change we make adds a little more complexity to the codebase \u2014 and with complexity comes risk. Bugs slip in. Dependencies tangle up. Suddenly, what once felt agile starts to feel... fragile. Finding the right balance between moving fast and maintaining reliable, high-quality software isn\u2019t easy. It\u2019s a real, everyday challenge for teams everywhere.\r\n<\/p>\r\n\r\n<h2>One of the biggest hurdles?... <em>Testing.<\/em><\/h2>\r\n<p>\r\n  <a href=\"https:\/\/blogs.mathworks.com\/developer\/files\/testing_bottleneck-1.png\">\r\n    <img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/developer\/files\/testing_bottleneck-1-300x300.png\" alt=\"Testing Bottleneck\" width=\"240\" align=\"right\" \/>\r\n  <\/a>\r\nAs applications grow, so does the burden of making sure they still work after every small change. Running <em>all<\/em> the tests every time you tweak a piece of code can be painfully inefficient. It drags down developer productivity, introduces bottlenecks in CI pipelines, and turns quick feedback loops into long, frustrating waits. \r\n<\/p>\r\n<p>Imagine fixing a minor issue in a single function \u2014 only to sit there while an entire suite of unrelated tests run. Not only is it a waste of time, but most of those tests may have nothing to do with the change you just made. It\u2019s easy to see how this adds up over time, leading to diminishing returns and growing developer frustration.\r\n<\/p>\r\n\r\n<p>\r\nWaste from running unrelated tests is not limited to development iterations. It slows down CI throughput. While it is a good practice to run all the tests at a meaningful cadence to ensure the entire application is always in a deployable state, running them all for every incremental job can be an overkill and hinders CI efficiency. It is counterproductive and makes an organization arguably less agile.\r\n<\/p>\r\n\r\n<h2>We can be smarter. Let's see how!<\/h2>\r\n<p>\r\n  <a href=\"https:\/\/blogs.mathworks.com\/developer\/files\/happy_developer_incremental_testing-1.png\">\r\n    <img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/developer\/files\/happy_developer_incremental_testing-1-300x300.png\" alt=\"Happy Developer Incremental Testing\" width=\"240\" align=\"right\" \/>\r\n  <\/a>\r\n<strong>R2025a<\/strong> release of <strong>MATLAB Test<\/strong> introduced a set of new features designed to ease some of these pain points \u2014 both during everyday development and when running automated builds locally or in CI. \r\n<\/p>\r\n\r\n<p>We'll dive into these capabilities in this blog series. I am planning a 4-part series at the moment, but we'll add more if we get carried away!\r\n<\/p>\r\n\r\nHere's what's coming:\r\n<p>\r\n<ul>\r\n \t<li><strong>Part 1:<\/strong> We\u2019ll start with local development workflow, looking at a feature that helps you make changes to your source code with more confidence.<\/li>\r\n \t<li><strong>Part 2:<\/strong> We\u2019ll talk about how to ensure commit integrity using MATLAB Test Manager.<\/li>\r\n \t<li><strong>Part 3:<\/strong> We'll explore how the MATLAB Build Tool can help you leverage incremental testing for faster local builds as part of your pre-qualification workflow.<\/li>\r\n \t<li><strong>Part 4:<\/strong> Finally, we\u2019ll walk through a CI workflow, how you can take advantage of incremental testing and boost your CI throughput.<\/li>\r\n<\/ul>\r\n<\/p>\r\n\r\n<p>\r\n<em>What\u2019s your testing experience been like? Have you ever felt stuck waiting on test runs that didn\u2019t need to happen? Or maybe you\u2019ve found creative ways to speed up your workflows? We\u2019d love to hear your stories \u2014 drop them in the comments below.<\/em>\r\n<\/p>\r\n\r\n<p>\r\nWe\u2019ll kick things off with Part 1 next week. Stay tuned!\r\n<\/p>\r\n","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/developer\/files\/tia.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><p>\r\nIn the fast-paced world of software development, speed and quality often feel like they're pulling us in opposite directions. On the one hand, we\u2019re racing to deliver new features and fixes. On the... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/developer\/2025\/07\/02\/test-impact-analysis-intro\/\">read more >><\/a><\/p>","protected":false},"author":222,"featured_media":3648,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[39,4,44,13,57,7],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts\/3342"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/users\/222"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/comments?post=3342"}],"version-history":[{"count":56,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts\/3342\/revisions"}],"predecessor-version":[{"id":3716,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts\/3342\/revisions\/3716"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/media\/3648"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/media?parent=3342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/categories?post=3342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/tags?post=3342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}