<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Spring Builders: Marcus Keenton</title>
    <description>The latest articles on Spring Builders by Marcus Keenton (@marcus_keenton_aab026f42d).</description>
    <link>https://springbuilders.dev/marcus_keenton_aab026f42d</link>
    <image>
      <url>https://springbuilders.dev/images/hdF_32Z2887PJc1956YobQ2oSgaoMhCFHfDJqqDTKFQ/rs:fill:90:90/g:sm/mb:500000/ar:1/aHR0cHM6Ly9zcHJp/bmdidWlsZGVycy5k/ZXYvdXBsb2Fkcy91/c2VyL3Byb2ZpbGVf/aW1hZ2UvNTQ4OC9i/ZTA2Y2Y4Zi1iYjUx/LTRiMGEtOTkxNS0w/ZDc2YTA3OTg5ZTAu/anBn</url>
      <title>Spring Builders: Marcus Keenton</title>
      <link>https://springbuilders.dev/marcus_keenton_aab026f42d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://springbuilders.dev/feed/marcus_keenton_aab026f42d"/>
    <language>en</language>
    <item>
      <title>How to implement behavior driven development: a step-by-step guide for Agile teams</title>
      <dc:creator>Marcus Keenton</dc:creator>
      <pubDate>Thu, 01 Oct 2026 04:54:46 +0000</pubDate>
      <link>https://springbuilders.dev/marcus_keenton_aab026f42d/how-to-implement-behavior-driven-development-a-step-by-step-guide-for-agile-teams-5c66</link>
      <guid>https://springbuilders.dev/marcus_keenton_aab026f42d/how-to-implement-behavior-driven-development-a-step-by-step-guide-for-agile-teams-5c66</guid>
      <description>&lt;p&gt;&lt;a href="https://springbuilders.dev/images/KO_DN3oK10aye0KTeX5LIceKkZearcSIT-UFXWof1Dc/rt:fit/w:800/g:sm/q:0/mb:500000/ar:1/aHR0cHM6Ly9zcHJp/bmdidWlsZGVycy5k/ZXYvdXBsb2Fkcy9h/cnRpY2xlcy8zOGg5/Z2R0c3p2bm15OHhz/dDBmMy5wbmc" class="article-body-image-wrapper"&gt;&lt;img src="https://springbuilders.dev/images/KO_DN3oK10aye0KTeX5LIceKkZearcSIT-UFXWof1Dc/rt:fit/w:800/g:sm/q:0/mb:500000/ar:1/aHR0cHM6Ly9zcHJp/bmdidWlsZGVycy5k/ZXYvdXBsb2Fkcy9h/cnRpY2xlcy8zOGg5/Z2R0c3p2bm15OHhz/dDBmMy5wbmc" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adopting behavior driven development (BDD) sounds simple on paper. Write scenarios in plain language, automate them, and ship software everyone agreed on. In practice, many teams install Cucumber, write a few feature files, and quietly give up three sprints later.&lt;/p&gt;

&lt;p&gt;The problem is rarely the tooling. It is the rollout. BDD changes how product owners, developers and testers work together, and that change needs a plan.&lt;/p&gt;

&lt;p&gt;This guide walks through how to introduce BDD to an Agile team one step at a time. If you are new to the concepts, Gherkin syntax or the tools involved, read this overview of the &lt;a href="https://keploy.io/docs/concepts/reference/glossary/behaviour-driven-development/"&gt;behavior driven development framework&lt;/a&gt; first, then come back here to put it into practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: start with one team and one feature
&lt;/h2&gt;

&lt;p&gt;Do not roll BDD out across the whole organization at once. Pick one team, ideally one with an engaged product owner, and one upcoming feature with clear business rules.&lt;/p&gt;

&lt;p&gt;Good first candidates include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Checkout or payment flows&lt;/strong&gt;, where rules about totals, discounts and failures are easy to express as examples.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account and login features&lt;/strong&gt;, where success and failure cases are well understood.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing or eligibility logic&lt;/strong&gt;, where the business already thinks in "if this, then that" terms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid starting with infrastructure work, internal libraries or prototypes. They have little business-facing behavior, so BDD adds overhead without much payoff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: write the user story the BDD way
&lt;/h2&gt;

&lt;p&gt;Every BDD cycle begins with a user story in the familiar format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;As a returning customer
I want to apply a discount code at checkout
So that I pay the promotional price
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The "so that" line matters more than it looks. It tells the team why the feature exists, which helps everyone judge edge cases later. If nobody can fill it in, the story is not ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: run your first Three Amigos session
&lt;/h2&gt;

&lt;p&gt;Bring together three perspectives: business (a product owner or analyst), development and testing. Spend 25 to 30 minutes on the story using example mapping.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put the story on one card at the top.&lt;/li&gt;
&lt;li&gt;Write each business rule on its own card underneath.&lt;/li&gt;
&lt;li&gt;Add at least one concrete example under every rule.&lt;/li&gt;
&lt;li&gt;Park anything nobody can answer on a separate question card.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the discount code story, the rules might look like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A valid code reduces the order total by its percentage.&lt;/li&gt;
&lt;li&gt;An expired code is rejected with a clear message.&lt;/li&gt;
&lt;li&gt;Only one code can be applied per order.&lt;/li&gt;
&lt;li&gt;Codes cannot reduce the total below zero.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each rule now has examples the whole team agreed on, before a single line of code exists. That alone prevents most of the rework BDD is known for removing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: formulate the examples as Gherkin scenarios
&lt;/h2&gt;

&lt;p&gt;After the session, a developer or tester turns the examples into a &lt;code&gt;.feature&lt;/code&gt; file. Keep the steps declarative, describing what happens rather than which buttons get clicked.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gherkin"&gt;&lt;code&gt;&lt;span class="kd"&gt;Feature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; Discount codes at checkout
  As a returning customer
  I want to apply a discount code at checkout
  So that I pay the promotional price

  &lt;span class="kn"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;Given &lt;/span&gt;a cart with a subtotal of 100.00

  &lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; Valid code reduces the total
    &lt;span class="nf"&gt;When &lt;/span&gt;the customer applies the code &lt;span class="s"&gt;"SAVE20"&lt;/span&gt;
    &lt;span class="nf"&gt;Then &lt;/span&gt;the order total should be 80.00

  &lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; Expired code is rejected
    &lt;span class="nf"&gt;When &lt;/span&gt;the customer applies the code &lt;span class="s"&gt;"SUMMER23"&lt;/span&gt;
    &lt;span class="nf"&gt;Then &lt;/span&gt;the customer should see the error &lt;span class="s"&gt;"This code has expired"&lt;/span&gt;
    &lt;span class="nf"&gt;And &lt;/span&gt;the order total should be 100.00

  &lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; Only one code per order
    &lt;span class="nf"&gt;Given &lt;/span&gt;the code &lt;span class="s"&gt;"SAVE20"&lt;/span&gt; is already applied
    &lt;span class="nf"&gt;When &lt;/span&gt;the customer applies the code &lt;span class="s"&gt;"WELCOME10"&lt;/span&gt;
    &lt;span class="nf"&gt;Then &lt;/span&gt;the customer should see the error &lt;span class="s"&gt;"Only one code can be used per order"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Share the file with the product owner before automating it. If they cannot read it and confirm it matches the conversation, rewrite it until they can.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: automate the scenarios
&lt;/h2&gt;

&lt;p&gt;Developers now write step definitions that connect each Gherkin step to code. The usual flow follows a red, green, refactor rhythm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run the scenario and watch it fail, because the feature does not exist yet.&lt;/li&gt;
&lt;li&gt;Write just enough application code to make it pass.&lt;/li&gt;
&lt;li&gt;Refactor the code and the steps while the scenario stays green.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Where possible, automate at the API level rather than through the browser. API scenarios run faster, fail less often for unrelated reasons, and test the same business rules. Save browser automation for a small set of critical end-to-end journeys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: run scenarios in CI and treat them as documentation
&lt;/h2&gt;

&lt;p&gt;Add the BDD suite to your CI pipeline so it runs on every build. Use tags to keep feedback fast:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;@smoke&lt;/code&gt; scenarios on every commit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@regression&lt;/code&gt; scenarios on every merge to the main branch&lt;/li&gt;
&lt;li&gt;The full suite before each release&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a business rule changes, update the scenario first, then the code. This keeps the feature files accurate, which is what makes them living documentation instead of another stale spec.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: review, measure and expand
&lt;/h2&gt;

&lt;p&gt;After two or three sprints, hold a short retrospective on the BDD pilot. Useful questions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the Three Amigos sessions surface issues earlier than before?&lt;/li&gt;
&lt;li&gt;Did fewer bugs come back from QA or production for these features?&lt;/li&gt;
&lt;li&gt;Can the product owner read and trust the feature files?&lt;/li&gt;
&lt;li&gt;Are the scenarios slow, flaky or duplicated anywhere?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answers are mostly positive, expand BDD to the next team and share the scenarios you wrote as examples. If not, the most common fix is more business involvement in discovery, not more automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes to avoid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skipping discovery.&lt;/strong&gt; Writing Gherkin without the conversation turns BDD into extra syntax on top of ordinary tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Imperative steps.&lt;/strong&gt; Scenarios full of clicks and field names break with every UI change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One giant scenario.&lt;/strong&gt; If a scenario has several &lt;code&gt;When&lt;/code&gt; steps, split it into one behavior per scenario.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trying to cover everything.&lt;/strong&gt; BDD covers key business behaviors. It does not replace unit, integration or regression tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Filling the regression gap BDD leaves behind
&lt;/h2&gt;

&lt;p&gt;BDD is designed to define and verify intended behavior. It is not designed to capture every request, payload and dependency interaction your real users generate in production. Writing scenarios for all of that by hand would make your suite slow and impossible to maintain.&lt;/p&gt;

&lt;p&gt;Keploy handles that part for APIs. It records real API traffic and turns it into test cases, with mocks for databases and downstream services, so you get regression coverage based on actual usage without writing test code. Your team keeps BDD for new behavior and lets Keploy protect what already works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How long does it take to adopt BDD?
&lt;/h3&gt;

&lt;p&gt;Most teams see the benefits of discovery within the first sprint. Getting comfortable writing good scenarios and maintaining an automated suite usually takes two to three months.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who should write the Gherkin scenarios?
&lt;/h3&gt;

&lt;p&gt;Developers or testers usually write them after the Three Amigos session. The product owner reviews them to confirm they match what was agreed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do we need a specific tool to start BDD?
&lt;/h3&gt;

&lt;p&gt;No. You can run discovery sessions with index cards or a whiteboard. Tools like Cucumber, Behave, pytest-bdd or Reqnroll come in when you automate the scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can we use BDD and TDD together?
&lt;/h3&gt;

&lt;p&gt;Yes. Many teams use BDD scenarios to define features at the acceptance level and TDD to build the code underneath them.&lt;/p&gt;

&lt;h3&gt;
  
  
  What if our product owner does not have time for discovery sessions?
&lt;/h3&gt;

&lt;p&gt;Start with short sessions on the highest-risk stories only. If business stakeholders cannot commit any time, BDD will deliver limited value, and that is worth raising early.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Implementing BDD well is mostly about sequence. Start small, have the conversations first, write declarative scenarios, automate them at the API level, and keep them running in CI. Expand only once the pilot team sees fewer misunderstandings and fewer surprises.&lt;/p&gt;

&lt;p&gt;Want regression coverage to sit alongside your BDD suite? &lt;a href="https://keploy.io/api-testing"&gt;See how Keploy generates API tests from real traffic&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>bdd</category>
      <category>testing</category>
      <category>software</category>
    </item>
    <item>
      <title>The Real Cost of a Free API Testing Tool Is Never the License</title>
      <dc:creator>Marcus Keenton</dc:creator>
      <pubDate>Tue, 11 Aug 2026 04:39:34 +0000</pubDate>
      <link>https://springbuilders.dev/marcus_keenton_aab026f42d/the-real-cost-of-a-free-api-testing-tool-is-never-the-license-2m73</link>
      <guid>https://springbuilders.dev/marcus_keenton_aab026f42d/the-real-cost-of-a-free-api-testing-tool-is-never-the-license-2m73</guid>
      <description>&lt;h2&gt;
  
  
  The Real Cost of a Free API Testing Tool Is Never the License
&lt;/h2&gt;

&lt;p&gt;Free is a powerful word when you are choosing tooling, and API testing has a lot of free options competing for attention. The instinct is to treat free as the obvious win and move on. In practice, the license fee is almost never the real cost of a tool. The real cost is what it does to your time, your test suite, and your team over the next two years, and that cost is invisible on the day you install it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free rarely means no cost
&lt;/h3&gt;

&lt;p&gt;Every tool you adopt carries a cost beyond its price tag. Someone has to learn it, integrate it into CI, maintain the tests written in it, and eventually migrate off it if it stops fitting. A free tool with a steep learning curve, thin documentation, and an awkward CI story can easily cost more in engineer hours than a paid one that just works. The money you saved on the license is trivial next to a senior engineer spending afternoons fighting the tool instead of writing tests. Free changes where the cost lands, from a budget line to your team's time, but it does not remove it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to actually evaluate
&lt;/h3&gt;

&lt;p&gt;When I look at &lt;a href="https://keploy.io/blog/community/api-testing-tools"&gt;free api testing tools&lt;/a&gt;, the license is the last thing I care about. The first questions are how quickly the team can become productive in it, how cleanly it fits into the pipeline they already run, and how much manual effort it takes to keep tests current as the API changes. A tool that captures real traffic and generates tests earns its keep differently than one that expects every case to be hand authored, and that difference matters far more than whether either one costs money. The right question is not what does it cost, it is what does it demand of us over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  The maintenance question is the real one
&lt;/h3&gt;

&lt;p&gt;Most of the lifetime cost of any testing tool is maintenance, not setup. A tool that makes writing the first test easy but keeping a hundred tests current painful is a bad deal at any price, free included. This is where a lot of free tools quietly fail. They demo beautifully, you write ten tests in an afternoon, and then six months later those tests are a maintenance burden nobody wants to own because every API change means a manual rewrite. The tools worth using are the ones where the suite stays cheap to maintain as the system evolves, and that property has nothing to do with the price.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open source is free in a different way
&lt;/h3&gt;

&lt;p&gt;It is worth separating two things people both call free. There is free as in no license fee, and there is open source, which is free in a deeper sense because you can see how it works, extend it, and are not at the mercy of a vendor's roadmap. For infrastructure as central as your testing tooling, that second kind of free carries real weight. An open source tool that fits your workflow gives you control that a closed free tier never will, and it removes the risk of a vendor deciding tomorrow that the feature you depend on now lives behind a paywall. Not all free is equal, and this distinction is often the one that matters most in the long run.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where the free tier trap hides
&lt;/h3&gt;

&lt;p&gt;The other thing to watch with anything labeled free is what happens at the boundary. A free tier that covers small projects but meters the things you will need at scale, more runs, more environments, team features, is not really a free tool. It is a trial with a generous limit, and the moment you have built your workflow around it, the cost arrives with your negotiating position already weakened. This is not automatically a bad deal, but you should walk in knowing which kind of free you are choosing, because the switching cost once your suite depends on the tool is exactly what that pricing model is counting on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where this leaves me
&lt;/h3&gt;

&lt;p&gt;Free is a fine place to start and a terrible place to stop thinking. The tools worth adopting are the ones that stay cheap in the currency that actually matters, which is your team's time, as your test suite grows and your API changes underneath it. Evaluate a free tool exactly as critically as a paid one. Ask how fast people get productive, how it fits your pipeline, how much upkeep it demands, and whether free means genuinely open or just unpriced for now. Answer those honestly and the price tag becomes what it should always have been, the least interesting fact about the tool.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>api</category>
      <category>qa</category>
      <category>devops</category>
    </item>
    <item>
      <title>When Generative AI Testing Tools Make Things Worse: An Honest Assessment</title>
      <dc:creator>Marcus Keenton</dc:creator>
      <pubDate>Mon, 29 Jun 2026 11:38:17 +0000</pubDate>
      <link>https://springbuilders.dev/marcus_keenton_aab026f42d/when-generative-ai-testing-tools-make-things-worse-an-honest-assessment-4had</link>
      <guid>https://springbuilders.dev/marcus_keenton_aab026f42d/when-generative-ai-testing-tools-make-things-worse-an-honest-assessment-4had</guid>
      <description>&lt;p&gt;The adoption enthusiasm around generative AI testing tools has produced an unusual &lt;br&gt;
amount of uncritical coverage. Every tool in the category is described as &lt;br&gt;
revolutionary, transformative, or at minimum dramatically better than the &lt;br&gt;
alternative. The realistic picture is more nuanced: these tools produce genuine &lt;br&gt;
value in specific contexts and create specific problems in contexts they're not &lt;br&gt;
suited for.&lt;/p&gt;

&lt;p&gt;Understanding when generative AI testing tools make things worse is as practically &lt;br&gt;
useful as understanding when they make things better, because adopting a tool in the &lt;br&gt;
wrong context creates technical debt that costs more to unwind than the tool saved &lt;br&gt;
in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The False Confidence Problem
&lt;/h2&gt;

&lt;p&gt;The most consequential failure mode for &lt;a href="https://keploy.io/blog/community/generative-ai-testing-tools"&gt;generative AI testing tools&lt;/a&gt; is generating tests that pass confidently while asserting on incorrect expectations. A language model &lt;br&gt;
that infers the wrong behavior generates tests that validate the wrong thing. The &lt;br&gt;
tests pass, the CI pipeline goes green, and the team gains confidence in an &lt;br&gt;
assertion that was incorrect from the beginning.&lt;/p&gt;

&lt;p&gt;This failure mode is worse than having no tests, because no tests produce no &lt;br&gt;
confidence signals and teams compensate by being more careful. False confidence &lt;br&gt;
tests produce incorrect confidence signals that lead teams to be less careful than &lt;br&gt;
the situation warrants. A production incident that follows from this failure is more &lt;br&gt;
damaging than one following from acknowledged coverage gaps.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Maintenance Illusion
&lt;/h2&gt;

&lt;p&gt;Generative tools that produce test code, rather than tests that run continuously &lt;br&gt;
from recordings, create a maintenance illusion. The tests look like they're being &lt;br&gt;
maintained because new tests are being generated. But the generated tests reflect &lt;br&gt;
the state of the code at generation time. When the code changes, the generated tests &lt;br&gt;
don't automatically update.&lt;/p&gt;

&lt;p&gt;Teams that adopt AI testing tools (&lt;a href="https://keploy.io/blog/community/ai-testing-tools"&gt;https://keploy.io/blog/community/ai-testing-tools&lt;/a&gt;) &lt;br&gt;
for code generation without building a deliberate review and update process end up &lt;br&gt;
with a growing collection of tests, some current and some stale, with no reliable &lt;br&gt;
way to distinguish between them. The larger the collection gets, the less &lt;br&gt;
trustworthy any individual test becomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Coverage Metric Distortion
&lt;/h2&gt;

&lt;p&gt;Generation tools can produce a large number of tests quickly, which inflates &lt;br&gt;
coverage metrics in ways that don't reflect actual protection. A test suite with a &lt;br&gt;
thousand generated tests covering common patterns has a higher line coverage &lt;br&gt;
percentage than a suite with a hundred carefully written tests covering critical &lt;br&gt;
paths and edge cases, but provides less protection against the failures that &lt;br&gt;
actually matter.&lt;/p&gt;

&lt;p&gt;Teams that use coverage percentage as a proxy for test quality get misled by the &lt;br&gt;
volume that generation tools produce. The metric needs to change alongside the &lt;br&gt;
tooling: what matters is not how many tests exist but whether the tests would catch &lt;br&gt;
the failures that would be expensive if they reached production.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Generation Tools Work Well
&lt;/h2&gt;

&lt;p&gt;The contexts where generative testing tools consistently add value are narrow enough &lt;br&gt;
to be specific: bootstrapping coverage for new features before any real traffic &lt;br&gt;
exists, proposing updates to tests that are known to be stale after an API change, &lt;br&gt;
and analyzing existing test suites to identify coverage gaps that deliberate test &lt;br&gt;
writing should address. In these contexts the tools are collaborators that do the &lt;br&gt;
tedious parts of test work, not replacements for the judgment that determines what's &lt;br&gt;
worth testing.&lt;/p&gt;

</description>
      <category>api</category>
      <category>testing</category>
      <category>generativeaitestingtools</category>
    </item>
  </channel>
</rss>
