<?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>DEV Community: Shahid Helal</title>
    <description>The latest articles on DEV Community by Shahid Helal (@shahidhelalkhan).</description>
    <link>https://dev.to/shahidhelalkhan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4076113%2F6df916d1-b254-4dd7-bf5c-318a6ada6a2c.jpeg</url>
      <title>DEV Community: Shahid Helal</title>
      <link>https://dev.to/shahidhelalkhan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shahidhelalkhan"/>
    <language>en</language>
    <item>
      <title>I let a one-shot Sonnet 5 agent QA a live app. Then I ran our QA tool on the same one.</title>
      <dc:creator>Shahid Helal</dc:creator>
      <pubDate>Fri, 18 Sep 2026 11:48:24 +0000</pubDate>
      <link>https://dev.to/shahidhelalkhan/i-let-a-one-shot-sonnet-5-agent-qa-a-live-app-then-i-ran-our-qa-tool-on-the-same-one-54eg</link>
      <guid>https://dev.to/shahidhelalkhan/i-let-a-one-shot-sonnet-5-agent-qa-a-live-app-then-i-ran-our-qa-tool-on-the-same-one-54eg</guid>
      <description>&lt;p&gt;Every week, someone tells me our company shouldn't exist.&lt;br&gt;
The line is always some version of this: "QA? I'll just point Claude or Sonnet at my app." And honestly — it's a fair shot. These models are good. If a one-shot agent already does what we do, then we're selling snake oil.&lt;/p&gt;

&lt;p&gt;So we stopped arguing and ran the experiment.&lt;/p&gt;

&lt;p&gt;We took a real, production EU rail-booking app. We turned a strong Sonnet 5 agent loose on it — from scratch, no hand-holding — to hunt bugs and write tests the way a sharp QA engineer would. Then we ran our own tool's full pipeline on the exact same app. Then we handed both outputs, unlabelled, to an independent judge and asked one question: which is better, and why?&lt;/p&gt;

&lt;h2&gt;
  
  
  The scoreboard
&lt;/h2&gt;

&lt;p&gt;The agent was genuinely good — a smart pair of eyes for an hour, and it found real bugs. I'll say that plainly, because the interesting part isn't "AI bad." It's where a single clever run quietly runs out of road.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbptae25yry1q5lpzsx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbptae25yry1q5lpzsx8.png" alt="Bar chart: TestOptim generated 415 executable test cases vs 36 for the one-shot Sonnet 5 agent, on the same production app" width="799" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Our tool wrote 415 executable, grounded test cases. The one-shot agent wrote 36. That gap isn't a trick — it's the difference between "someone poked at your app for an afternoon" and "someone mapped it and left you a suite that reruns forever."&lt;/li&gt;
&lt;li&gt;The depth held up under a blind judge: feature coverage 9/10, test-case depth 8/10, edge cases 8/10. Every expected result tied to behavior actually observed on the page — not a plausible guess that reads well and dies in CI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxucvsnn78p8weewqvfd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxucvsnn78p8weewqvfd.png" alt="Bar chart: blind judge quality scores out of 10 for feature coverage, test-case quality, test-case depth, edge-case coverage, issue discovery, and signal-to-noise" width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then the part I didn't expect: our tool caught bugs the agent walked straight past. A checkout total that silently drifted from the price on screen. A station index that mis-sorted — just enough to be wrong, not enough to notice. Boring, expensive, real: the exact bugs that survive a quick look and reach production.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The honest bit
&lt;/h2&gt;

&lt;p&gt;Neither output was a superset of the other. The one-shot agent found a couple of things our tool didn't. A single pass — human or AI — always misses something, in both directions.&lt;/p&gt;

&lt;p&gt;Which is the whole argument, really.&lt;/p&gt;

&lt;p&gt;QA was never one brilliant run. It's coverage that's broad, grounded, deduplicated and repeatable — that keeps working on the next deploy, and the one after that, without a human re-prompting it at midnight. An agent gives you a run. A real QA system gives you a system.&lt;/p&gt;

&lt;p&gt;So next time someone says "I'll just use an AI agent for QA": they're right that they can do a run. They're wrong that it's the same thing.&lt;/p&gt;

&lt;p&gt;We measured it. On a real app. Blind. And then we shipped the improvements.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Numbers from a blind September 2026 audit on real production apps, anonymized. Ask me anything in the comments — happy to show my work.)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>ai</category>
      <category>qa</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
