<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Quality Post]]></title><description><![CDATA[Blog by TestTheTest]]></description><link>https://blog.testthetest.com</link><image><url>https://substackcdn.com/image/fetch/$s_!uB0v!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59f12fa1-c703-4cdf-a75d-c471cabc37de_200x200.png</url><title>The Quality Post</title><link>https://blog.testthetest.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 07 Apr 2026 09:19:18 GMT</lastBuildDate><atom:link href="https://blog.testthetest.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[TestTheTest]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thequalitypost@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thequalitypost@substack.com]]></itunes:email><itunes:name><![CDATA[TestTheTest]]></itunes:name></itunes:owner><itunes:author><![CDATA[TestTheTest]]></itunes:author><googleplay:owner><![CDATA[thequalitypost@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thequalitypost@substack.com]]></googleplay:email><googleplay:author><![CDATA[TestTheTest]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How the Amish Would Think About Software Testing]]></title><description><![CDATA[The case for resisting trends and choosing tools that last for a long time.]]></description><link>https://blog.testthetest.com/p/how-the-amish-would-think-about-software</link><guid isPermaLink="false">https://blog.testthetest.com/p/how-the-amish-would-think-about-software</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Wed, 06 Aug 2025 13:32:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1y-7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every team wants to ship better software, faster. And with testing tools evolving rapidly&#8212;AI agents, self-healing scripts, visual validation platforms, predictive coverage models&#8212;it&#8217;s tempting to try them all. After all, what team wants to be seen using outdated tools when the internet is full of posts claiming that every breakthrough will reinvent testing?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1y-7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1y-7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!1y-7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!1y-7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!1y-7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1y-7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4435065,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.testthetest.com/i/170267770?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1y-7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!1y-7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!1y-7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!1y-7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c68db7c-aa41-4cd7-85e7-0f7627a200e1_2700x1800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But in software testing, just like in every other corner of tech, the problem isn't in using bad tools, rather, it's in using the right tools for the wrong reasons.</p><p>The allure of novelty is strong. Most engineers, when asked what they&#8217;re looking for in their next role, will say they want to learn something new. It&#8217;s a fair desire&#8212;tech careers reward the ability to grow. But when &#8220;learning something new&#8221; turns into chasing every tool that promises faster or smarter testing, it can derail the very quality efforts those tools are supposed to support.</p><p>As consultants we&#8217;ve seen this play out repeatedly. A team adopts a trendy new testing framework, integrates it into a few services, and by the time the champion of that rollout moves on, the rest of the org is stuck maintaining something they never fully bought into. What&#8217;s left is fractured tooling, inconsistent practices, and a test strategy that&#8217;s harder to maintain than it was before.</p><h2>The long-term cost of short-term thinking</h2><p>Shiny Object Syndrome&#8212;the constant urge to chase whatever&#8217;s new&#8212;affects QA teams in subtle but damaging ways. The testing world has never had more tools available, and the pressure to &#8220;keep up&#8221; is real. Every week there&#8217;s a blog post about the next framework or the next agentic testing layer that promises to change everything.</p><p>But most of the work that matters in testing isn&#8217;t flashy. Without replacing tools every quarter, we can build confidence in the existing test suite, improving coverage slowly and steadily, and choosing the technologies that will hold up over time&#8212;not just the ones that get applause today.</p><p>Even the best new tools often come with tradeoffs. They might require retraining. They might integrate poorly with your existing CI/CD system. They might only be supported by a small team. And they often attract the kind of developers who want to be constantly trying something new, rather than sticking around to maintain what&#8217;s already working.</p><p>Innovation is important. But without a clear reason for adopting a new testing tool&#8212;and without someone responsible for long-term ownership&#8212;novelty quickly turns into noise.</p><h2>Amish engineering</h2><p>The Amish aren&#8217;t anti-technology, but they are highly intentional about how they adopt it. Before bringing something new into the community, they ask how it will affect their values, habits, and relationships. They&#8217;re not afraid to say no to tools that look useful in isolation but misalign with long-term goals.</p><p>Software teams could learn something from that.</p><p>There&#8217;s nothing wrong with adopting modern testing frameworks or experimenting with AI-based tools. Many of them offer real benefits: more speed, less maintenance, better signal. But only if they&#8217;re chosen carefully, integrated thoughtfully, and maintained consistently. Too often, teams are drawn to what looks good on a r&#233;sum&#233; rather than what serves the product.</p><p>Hiring pressures can make this worse. If every candidate seems to be using one specific tool, teams might feel compelled to adopt it just to remain attractive. But that creates a feedback loop where tool choices are driven more by perception than need.</p><p>Test tooling should support your strategy&#8212;not define it.</p><h2>Boring is better</h2><p>The best QA teams I&#8217;ve worked with are rarely the most exciting. Their tests run reliably. Their coverage improves quietly. Their developers trust the test suite enough to release confidently. They don&#8217;t chase every new library, but they do keep an eye on what&#8217;s coming next. And when they make a change, it&#8217;s because it supports the work&#8212;not because it makes for a shinier tech stack.</p><p>That kind of maturity doesn&#8217;t show up in a tools list. It shows up in production uptime, bug reports that never get filed, and features that ship without breaking anything else.</p><p>Testing is all about being dependable. If that makes your stack a little &#8220;boring,&#8221; maybe that&#8217;s exactly the point.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.testthetest.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Quality Post! Subscribe for free and receive new posts monthly.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Serious Backdoor in AI-Driven Testing Orchestration]]></title><description><![CDATA[Any client reaching out to a malicious MCP server may execute arbitrary code on the client.]]></description><link>https://blog.testthetest.com/p/serious-backdoor-in-ai-driven-testing</link><guid isPermaLink="false">https://blog.testthetest.com/p/serious-backdoor-in-ai-driven-testing</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Sat, 19 Jul 2025 19:01:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ovat!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Model Context Protocol (MCP for short) has surged in popularity because it offers a lightweight, language&#8209;agnostic RPC layer for AI&#8209;powered orchestration: your test runner &#8220;asks&#8221; the MCP server what to do next, and the server &#8220;answers&#8221; with code snippets, JSON payloads, or instructions to fire off other tools. The idea is that this makes it trivial to compose complex workflows across disparate components&#8212;think AI generating and running your browser tests live&#8212;but it also means that any break in the chain can have catastrophic consequences.</p><p>Using MCP and AI many test engineers have simplified their test code base, to an extent where the testing code is generated from plain English instructions. The approach is getting more and more popular, which is why its vulnerabilities deserve attention.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ovat!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ovat!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!ovat!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!ovat!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!ovat!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ovat!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:844405,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.testthetest.com/i/168731135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ovat!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!ovat!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!ovat!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!ovat!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618e6f64-0b18-4e11-84ac-8a23d8fbd9c0_2700x1800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A major security vulnerability (CVSS&#8239;9.6/10) was disclosed in July&#8239;2025 in the Model Context Protocol (MCP) ecosystem&#8212;specifically within the wildly popular mcp&#8209;remote component. Researchers found that any client reaching out to a malicious or hijacked MCP server can end up executing arbitrary code on its own machine. That&#8217;s full remote code execution at the protocol layer, before your application ever sees a byte of data. If you&#8217;re gluing your tooling together with MCP, consider this your five&#8209;alarm warning.</p><p>In this case, the flaw lies in how mcp&#8209;remote handles the authorization handshake. A compromised server can slip malicious commands straight into the protocol payload, and because that payload is treated as executable instructions, the client dutifully runs whatever it finds. No user prompt, no sandbox prompt&#8212;just code, straight from the wire.</p><h2>How does this work?</h2><p>During the authorization phase, the client and server exchange a series of JSON messages wrapped in TLS. What the client believes to be innocuous configuration or orchestration data may actually contain shell commands, PowerShell scripts, or binary payloads. On Windows hosts, these commands execute with full OS&#8209;level privileges; on macOS and Linux, they spawn executables that can manipulate files, exfiltrate data, or even load kernel modules if misconfigurations allow.</p><p>This isn&#8217;t a fanciful &#8220;what&#8209;if&#8221; scenario. There have already been reports of man&#8209;in&#8209;the&#8209;middle setups&#8212;where attackers intercept MCP traffic between CI workers and orchestration servers&#8212;and typosquatted endpoints that mimic legitimate MCP servers in internal documentation or Slack channels. In both cases, the exploit requires nothing more exotic than a valid TLS certificate and a willing miscreant.</p><p>Perhaps most troubling is that no prompt&#8209;injection wizardry or AI&#8209;specific hack is required. The attack bypasses higher&#8209;level protections by striking at the protocol glue itself. In a world where we trust underlying protocols implicitly, this reminds us how brittle that trust can be.</p><h2>Why does it matter?</h2><div class="pullquote"><p>&#8220;Attacks only need to be successful once; defenders need to be successful every time.&#8221;<br>&#8212; Bruce&nbsp;Schneier</p></div><p>That aphorism has never felt more apt. In today&#8217;s AI&#8209;driven testing landscape&#8212;where frameworks like Playwright MCP let models write and execute browser tests for you&#8212;a single untrusted endpoint can hand over the keys to your CI runners, developer laptops, or even your entire supply chain. Suddenly, your test infrastructure isn&#8217;t just a guardian of quality; it&#8217;s a potential vector for the very worst kinds of supply&#8209;chain or production&#8209;environment breaches.</p><p>Imagine your continuous integration pipeline mysteriously failing tests that never should, or worse, passing tests that should fail. Attackers could falsify results, conceal critical failures, or transparently exfiltrate secrets embedded in environment variables. The fallout isn&#8217;t just lost productivity; it&#8217;s potential regulatory fines, reputational damage, and a long road to recovery in repair and remediation.</p><h2>Securing Your MCP Connections</h2><p>First, treat every MCP endpoint like a stranger at your door. Don&#8217;t accept URLs from casual Slack channels or Discord threads; only point your clients at thoroughly vetted, organization&#8209;owned servers. Second, upgrade mcp&#8209;remote to version&#8239;0.1.16 or later, where the RCE hole has been patched.</p><p>Next, enforce strict TLS&#8209;only connections and apply certificate pinning where possible. Sandbox your test runners with least&#8209;privilege containers or VMs&#8212;imagine every MCP&#8209;driven process navigating a sea of hot lava, with only the narrowest bridges in place. Finally, bake automated scans for MCP misconfigurations into your CI pipeline: tools like SecureMCP (open&#8209;source) can flag dangerous setups before they ever reach production.</p><p>In the dazzling world of AI&#8209;powered testing, the most dangerous bug is often the one you never thought to test for&#8212;the protocol glue binding your clever bots together. Stay curious, stay paranoid, and remember: AI can write your tests, but it still needs a human to lock the doors.</p><div><hr></div><p>Further reading: read JFrog's original report <a href="https://jfrog.com/blog/2025-6514-critical-mcp-remote-rce-vulnerability/">Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients</a></p>]]></content:encoded></item><item><title><![CDATA[When Tests Become the Bottleneck]]></title><description><![CDATA[Scaling end-to-end testing, without breaking development velocity]]></description><link>https://blog.testthetest.com/p/when-tests-become-the-bottleneck</link><guid isPermaLink="false">https://blog.testthetest.com/p/when-tests-become-the-bottleneck</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Mon, 14 Jul 2025 11:00:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!23wi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When end-to-end tests are first introduced to a product they are usually awesome: you start with a suite that completes within ten minutes, catches real bugs before they hit production. Then, as the product grows and more tests get added, that suite stretches to twenty minutes, then thirty, and by the time you realize it takes two hours for the complete suite to run.</p><p>At that point, definitely nobody wants to run it on every commit anymore. The once awesome suite turns into a slow, pre-release gatekeeper instead of a daily safety net &#8212; and the whole point of catching issues early starts to fade away.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!23wi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!23wi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!23wi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!23wi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!23wi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!23wi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5b20214-975f-4267-aa58-baf976bde828_2700x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2475853,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.testthetest.com/i/168244147?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!23wi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!23wi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!23wi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!23wi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5b20214-975f-4267-aa58-baf976bde828_2700x1800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Michael Feathers, in <em>Working Effectively with Legacy Code</em>, says: &#8220;to a large extent, legacy code is simply code without tests.&#8221; And that&#8217;s entirely true, but notice that when we talk about &#8220;testing&#8221; we often use differing definitions.</p><p>Unit tests run fast because they test small pieces of code directly. End-to-end tests act more like real users: they wait for pages to load, fill out forms, click around on the site. By nature they take longer, and as the suite grows they can also get flakier &#8212; sometimes a click doesn&#8217;t take, sometimes the network lags just enough to break the test.</p><p>When the feedback loop stretches from minutes to hours, developer habits shift. People start batching bigger commits to avoid waiting. They skip running the suite locally because nobody wants to lose half a morning if they don&#8217;t <em>absolutely</em> have to. Testing ends up happening mostly in CI, and even then it feels like crossing your fingers and hoping nothing breaks in areas you didn&#8217;t touch.</p><h2>What the big players do</h2><p>If you're drowning in a two-hour test suite, you're definitely not alone. Good news is that the larger players hit this wall years ago, and invented best practices around it.</p><p>Google&#8217;s approach is basically to throw hardware at the problem. They built a massive parallel execution grid that can spin up thousands of test runners at once, so the whole suite finishes before lunch. For the rest of us who don&#8217;t have Google&#8217;s data centers, this idea still scales down: you can parallelize your tests using cloud services like Sauce Labs or BrowserStack, or spin up your own fleet of test runners on Kubernetes. The principle stays the same: if one runner takes two hours, then twenty runners might get it done in six minutes.</p><p>Microsoft's Azure DevOps took a different approach with Test Impact Analysis. Instead of running everything faster, they got smarter about what to run in the first place. Their tools look at the code changes in a commit and work out which tests are actually relevant. Change a CSS file? Maybe you can skip the backend API tests. Update a database migration? Better run the integration tests but skip the UI ones.</p><p>The immediate wins here are pretty practical. First, parallelize what you can. Second, organize your tests by what they really check because not every test needs to run every time. Your quick smoke tests can run on every push. The full regression suite might run nightly. Performance tests run on weekends or before big releases.</p><p>The real low hanging fruit is to stop running tests that don&#8217;t add real value. It&#8217;s surprisingly common to see thousands of tests, half of which cover the same happy paths in slightly different ways. It&#8217;s like having six smoke detectors in a studio flat &#8212; more doesn&#8217;t always mean safer. Go through your suite, find the duplicates, and focus on the tests that actually catch real bugs, not the ones that just pad your coverage report.</p><h2>Testing without the Google budget</h2><p>Now, if you&#8217;re reading this from a startup where &#8220;massive parallel execution grid&#8221; sounds like something out of science fiction &#8212; don&#8217;t panic. You don&#8217;t need Google&#8217;s infrastructure to catch bugs before your users see them. What matters more is being smart about where you spend your testing effort.</p><p>Martin Fowler&#8217;s test pyramid helps here. Lots of unit tests at the bottom: they&#8217;re fast, reliable, and catch the obvious stuff. A smaller number of integration tests in the middle: these catch the &#8220;my component works, but doesn&#8217;t play nicely with others&#8221; problems. And just a handful of end-to-end tests at the top: the critical user journeys that simply cannot break. It&#8217;s a bit like home security: you don&#8217;t need cameras in every room, but you definitely want them watching the front door.</p><p>Visual regression testing is where small teams can really punch above their weight. Tools like BackstopJS &#8212; or even simple screenshot comparison scripts &#8212; can catch unexpected UI changes across your whole app in minutes.</p><p>Don&#8217;t underestimate a good manual testing checklist. Sure, it&#8217;s not automated, and yes, it doesn&#8217;t scale forever. But if you&#8217;ve got three critical user flows, spending 15 minutes running through them before each release can be more useful than weeks spent building an automated suite that breaks every time you rename a CSS class. The trick is knowing when to switch: usually when you find yourself repeating the same manual checks every few days.</p><p>The real lesson here is to match your testing strategy to <em>your</em> product and <em>your</em> team. Catch the bugs that matter &#8212; and don&#8217;t let &#8220;perfect&#8221; stop you from shipping.</p>]]></content:encoded></item><item><title><![CDATA[Becoming an Indispensable QA in the Age of AI]]></title><description><![CDATA[As a QA or software tester&#8212;how soon will you lose your job to AI?]]></description><link>https://blog.testthetest.com/p/becoming-an-indispensable-qa-in-the</link><guid isPermaLink="false">https://blog.testthetest.com/p/becoming-an-indispensable-qa-in-the</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Fri, 16 May 2025 19:27:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a QA or software tester&#8212;how soon will you lose your job to AI? Despite the hype, your role is safe. Personally, I&#8217;m confident that manual testing remains essential as long as humans use software.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zLRJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zLRJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!zLRJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!zLRJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!zLRJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zLRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5584001,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.testthetest.com/i/163733893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zLRJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!zLRJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!zLRJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!zLRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe9c2786-e0b5-4392-8e54-60fc79c2cb3f_2700x1800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Automated tests are brilliant, and AI is making them infinitely better&#8212;that much we know, TestTheTest being an autonomous testing company and all. Automated tests are great at executing vast numbers of scripted checks: smoke tests, regression sweeps, repetitive workflows. But they can&#8217;t pause and ask &#8220;What if&#8230;?&#8221; They miss the odd edge case, the subtle UI quirk, the confusing error message.</p><p>Human testers bring unpredictable creativity and deep context. You spot the misaligned tooltip on a rare device, the barely noticeable lag when toggling settings, or the form validation that reads oddly in real-world use. Those &#8220;wait, what if&#8230;&#8221; moments uncover the bugs no script could predict.</p><p>The real power comes when you stop treating automation as competition. Let AI&#8209;powered tools handle the heavy lifting&#8212;running your Playwright MCP suite at scale&#8212;so you can focus on exploratory testing and complex scenarios. Your manual efforts feed insights back into your automated library; your growing automation speeds up your exploratory loops.</p><p>Hybrid testers&#8212;adept at both coding automated scripts and conducting unscripted investigations&#8212;are in highest demand. Data from automated runs informs exploratory testing; your exploratory findings refine your scripts. One plus one equals far more than two.</p><h2>Testing at machine speed</h2><p>Automated testing uses scripts and tools to run predefined checks without human intervention, forming the backbone of modern CI/CD pipelines that catch regressions on every commit.</p><p>A solid automation suite can execute thousands of tests overnight&#8212;work that would take humans weeks&#8212;enabling rapid release cycles and confidence in core functionality.</p><p>Automation provides a reliable safety net for fast-paced development teams. As Google&#8217;s James Whittaker noted in &#8220;How Google Tests Software,&#8221; automation provides a repeatable, reliable, and efficient way to verify that code changes don&#8217;t break existing functionality.</p><p>These tests also uncover defects invisible to humans: performance bottlenecks, memory leaks, race conditions&#8212;issues that only emerge under precise, repeated conditions. In one case, our load&#8209;testing scripts revealed a database index flaw that would&#8217;ve collapsed under real traffic.</p><p>The cost-effectiveness becomes increasingly apparent over time. After the initial investment, each run costs virtually nothing, letting teams shift effort from rote verification to high&#8209;value exploratory testing.</p><p>But automation has blind spots. It only checks what you&#8217;ve scripted, missing undefined behaviors, shifting requirements, and UX or cultural nuances. Maintenance overhead&#8212;broken scripts after a UI tweak&#8212;and upfront tooling costs can eat into its benefits. As Michael Bolton says, &#8220;test automation isn&#8217;t testing&#8221;&#8212;it enables checks, but true testing still demands human insight and adaptability.</p><h2>Detecting the undetectable</h2><p>There&#8217;s no software without bugs &#8212; maybe there&#8217;s software without bugs that haven&#8217;t yet been discovered.</p><p>Or, as Alan J. Perlis, computer scientist and the first recipient of the Turing award says: &#8220;There are two ways to write error&#8209;free programs; only the third one works.&#8221;</p><p>An expert tester brings tacit knowledge to every session&#8212;asking not just &#8220;Does this work?&#8221; but &#8220;Does this feel right?&#8221; and &#8220;Does this actually solve a user&#8217;s problem?&#8221; Automated checks can&#8217;t mimic that instinct.</p><p>&#8220;The pesticide paradox,&#8221; as described by testing expert James Bach, drives the point home: every test method eventually stops finding new bugs. Human testers continuously evolve&#8212;crafting fresh approaches whenever old ones go stale&#8212;and that adaptability is crucial as products mature.</p><p>Exploratory testing&#8212;design, execution, and learning in one seamless flow&#8212;is manual QA&#8217;s superpower. Skilled testers follow hunches, probe unexpected paths, and adapt on the fly. Time and again, I&#8217;ve seen exploratory sessions unearth critical flaws long after automation gave up the hunt.</p><p>Manual testing also shines at evaluating usability, accessibility, and overall user delight. A tester instantly senses when a UI feels clumsy or an interaction frustrates&#8212;insights no script can deliver.</p><p>But let&#8217;s be real: manual testing alone can&#8217;t keep pace with modern release cadences. It&#8217;s slower, harder to scale, and prone to fatigue and inconsistency. That&#8217;s why the magic happens when you pair human insight with machine speed&#8212;letting each cover the gaps the other leaves behind.</p><h2>The future of QA is hybrid</h2><p>Hybrid testers&#8212;adept at both automated and manual techniques&#8212;are the most sought&#8209;after professionals today. By letting scripts handle repetitive checks and giving humans room for exploratory investigation, you create a multiplier effect: automation surfaces patterns and regressions, while exploratory testing uncovers the edge cases no script anticipates.</p><p>Industry data backs this up. In the 2024 PractiTest State of Testing&#8482; Report, 92% of organizations follow Agile&#8209;style practices, and 45% have adopted DevOps workflows that blend automated and exploratory tests. After embracing these hybrid models, 68% of teams saw fewer severe bugs in production, and many saved 40+ testing hours per month per user by empowering manual testers with no&#8209;code automation tools.</p><p>Market demand mirrors this shift. The global software testing market hit $55.6&#8239;billion in 2024, driven in part by a shortage of professionals who can both script automated suites and lead unscripted investigations. Teams that combine these skills release features faster&#8212;70% report quicker feature rollouts&#8212;and deliver higher overall quality, with 73% noting improved testing coverage.</p><p>As applications grow more complex, the need for testers who bridge scripting and exploratory expertise will only intensify. By cultivating both skill sets, you position yourself as an indispensable quality strategist&#8212;someone who drives efficiency and uncovers the critical insights that keep software reliable and user&#8209;focused.</p>]]></content:encoded></item><item><title><![CDATA[Leave Software Testing to Robots]]></title><description><![CDATA[How AI automates quality assurance and changes the way we test software]]></description><link>https://blog.testthetest.com/p/leave-software-testing-to-robots</link><guid isPermaLink="false">https://blog.testthetest.com/p/leave-software-testing-to-robots</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Tue, 22 Apr 2025 10:12:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!94DA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Blink and you&#8217;ll miss it: software testing is being reinvented in front of our eyes. At first glance it may feel like it&#8217;s all incremental tweaks, small innovations, articles and tutorials, but make no mistake &#8212; this is a major shift that will leave no stone unturned.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!94DA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!94DA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!94DA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!94DA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!94DA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!94DA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:615408,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.testthetest.com/i/161842207?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!94DA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!94DA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!94DA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!94DA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad402d0-fa34-45e8-b265-434eab1c8f62_2700x1800.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What started as purely manual work in the 1970s has evolved through automation in the following decades, and now entered a new phase: autonomous testing. It&#8217;s fundamentally changing how teams approach quality assurance.</p><p>Manual testing meant checking every feature and function by hand. Automation improved on that by letting us write scripts that computers could run repeatedly. Now, autonomous testing goes a step further&#8212;using AI to decide what to test and how to test it, with minimal human involvement.</p><p>I like to use the analogy of tending a garden. Manual testing was like planting each seed and watering it by hand&#8212;labor-intensive, but precise. Automated testing was like setting up an irrigation system: much faster, but still needing someone to install and manage it. Autonomous testing is like a smart garden&#8212;one that waters and fertilizes on its own, monitors weather conditions, adjusts care based on plant needs, and optimizes growth, all without human input.</p><h2>Testing from the future</h2><p>Autonomous testing tools stand out for three key capabilities that are reshaping how testing gets done.</p><p>First, they use AI to generate test cases automatically, covering more ground than a human tester could reasonably think of. This kind of intelligent test generation increases both speed and breadth.</p><p>Second, these systems can create self-healing tests that adapt to changes in code or interfaces. When developers change something in the app, the tests automatically adjust and keep running. This cuts down the maintenance burden that often comes with traditional test automation.</p><p>And third, autonomous testing enables predictive analysis&#8212;using past test results and code history to identify where problems are likely to occur, even before anything breaks. This shifts the process from reactive bug fixing to proactive quality assurance. Microsoft&#8217;s recent release of the Playwright MCP server is a good example&#8212;it gives testing agents more contextual understanding and will likely accelerate the rise of &#8220;agentic AI&#8221; in testing.</p><p>This new era promises better test coverage, faster feedback cycles, fewer human errors, and lower maintenance costs. Performance testing also improves, with the ability to simulate thousands of users at once. And maybe most interestingly, these systems learn and improve with every test run&#8212;the opposite of what developers experience with traditional test suites, which tend to fall out of sync with the application over time.</p><h2>Tools of the trade</h2><p>This field is moving so quickly that it&#8217;s probably best if I avoid naming specific tools&#8212;many won&#8217;t last long anyway, and I&#8217;d like this article to stay relevant a bit longer.</p><p>Still, it&#8217;s a good moment for decision-makers to be smart about avoiding vendor lock-in and picking tools that allow easy migration. Even open source isn&#8217;t a sure bet. Right now, most people use Playwright (increasingly with auto-playwright or Microsoft&#8217;s Playwright MCP server), but not long ago, automated web testing was mostly dominated by Cypress or Selenium.</p><p>In times of rapid change, it&#8217;s worth remembering Peter Drucker&#8217;s insight:</p><blockquote><p><em>&#8220;The greatest danger in times of turbulence is not the turbulence &#8211; it is to act with yesterday&#8217;s logic.&#8221;</em></p></blockquote><p>So let&#8217;s keep an open mind about how we work with these new tools, what they can do, and where they might fall short. We&#8217;re starting to see more focused tools emerge&#8212;ones that specialize in things like visual validation or API security testing&#8212;instead of trying to solve every problem under one roof.</p><p>When choosing a tool, weigh all the costs: not just the sticker price, but the time it takes to learn, integrate, and maintain all the custom code and knowledge. And always remember: the goal isn&#8217;t <em>testing</em>. The goal is <em>quality software</em>.</p><h2>Looping humans back in</h2><p>Despite the impressive capabilities of autonomous testing, the most interesting conversations happening now aren&#8217;t about replacing humans&#8212;they&#8217;re about finding the right partnership between AI systems and testing professionals.</p><p>The testing community has always included skeptics, and for good reason. We&#8217;ve been promised testing silver bullets before. The truth is that understanding what makes software valuable to humans still requires human judgment. Testing isn&#8217;t just about finding bugs&#8212;it&#8217;s about understanding whether the software delivers value in ways that matter to people.</p><p>What&#8217;s emerging is a model where AI handles the repetitive, pattern-based work while humans focus on exploratory testing, user experience evaluation, and ethical considerations. Humans are uniquely equipped to ask questions like &#8220;Should this feature exist at all?&#8221; or &#8220;How might this be misused?&#8221; These are questions that existing AI frameworks&nbsp;won&#8217;t raise on their own, regardless of how sophisticated its test coverage becomes.</p><p>The tools themselves reflect this hybrid approach. They don&#8217;t try to eliminate human involvement completely&#8212;they try to amplify human judgment by taking over the cognitive drudgery. A tester freed from writing and maintaining basic regression tests can instead think about edge cases, unintended consequences, and creative ways users might interact with the system.</p><p>As testing evolves, the most successful teams will likely be those who understand both the power and limitations of AI testing tools. They&#8217;ll know when to trust the autonomous system and when human creativity, intuition, and ethical reasoning need to take the lead. The future isn&#8217;t robots replacing testers&#8212;it&#8217;s testers whose capabilities are extended by robots, working together toward something neither could achieve alone.</p>]]></content:encoded></item><item><title><![CDATA[The True Cost of Software Bugs]]></title><description><![CDATA[Move fast and fix things &#8212; the earlier a bug is caught, the cheaper it is to make it disappear]]></description><link>https://blog.testthetest.com/p/the-true-cost-of-software-bugs</link><guid isPermaLink="false">https://blog.testthetest.com/p/the-true-cost-of-software-bugs</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Tue, 01 Apr 2025 09:12:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Vfjw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vfjw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vfjw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!Vfjw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!Vfjw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!Vfjw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vfjw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4605579,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.testthetest.com/i/160260564?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vfjw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 424w, https://substackcdn.com/image/fetch/$s_!Vfjw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 848w, https://substackcdn.com/image/fetch/$s_!Vfjw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!Vfjw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f05021-2e3a-472c-92c1-3a699ef05370_2700x1800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In 2022 Toyota had to halt all operations at all 14 of its Japanese factories, because of a single software bug in their supplier management system.</p><p>The estimated cost: $14 million per day in lost production.</p><p>"Could be worse" you could say, and you would be right: A unit conversion error in NASA's Mars Climate Orbiter led to a $327 million mission failure. In a separate incident, Knight Capital Group lost $440 million in 45 minutes due to a trading algorithm bug. Elsewhere, a coding error in Cloudflare's content delivery network briefly took down thousands of websites in 2019, affecting services from Discord to Shopify and impacting millions of users worldwide.</p><p>In 2020 alone, poor-quality software reportedly cost businesses $2.08 trillion globally according to the Consortium for Information &amp; Software Quality (CISQ). That's not a typo&#8212;<em>trillions</em> of dollars evaporated because someone somewhere wrote a bug that didn't get caught until too late.</p><p>And these all happened before we needed a word for "vibe coding".</p><p>With more and more software being written by AI &#8212; is there anything that development teams can do to prevent bugs, and avoid their financial sinkholes?</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;For more QA help, visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>For more QA help, visit TestTheTest.com</span></a></p><p></p><h2><strong>The 1:10:100 Rule of Software Quality</strong></h2><p>Taking the "1:10:100 rule" from manufacturing: if fixing a problem during the product&#8217;s design phase costs $1, then fixing the same bug during production will be $10, and the costs rise to $100 after the final object was delivered to the customer.</p><p>Software engineers have observed similar rules: according to research from IBM's System Science Institute, addressing defects after product release can be up to 100 times more expensive than fixing them during the design phase.</p><p>When developers have to fix a bug in production, they're pulled away from whatever they're currently working on. This context switching is incredibly costly in terms of productivity and momentum. Then there's the diagnostic complexity&#8212;finding bugs in production requires reconstructing complex user scenarios, often with limited information. Add to that the operational impacts like outages, security breaches, and data integrity issues, and you begin to see why the costs skyrocket. And we haven't even mentioned the reputation damage that can occur when customers encounter bugs&#8212;trust, once lost, can be incredibly difficult to regain.</p><h2>Hard numbers</h2><p>Back in 1981, the software engineering pioneer Barry Boehm published a seminal study showing that defects become exponentially more expensive to fix as they move through the development cycle. According to his research, a bug costing $100 to fix during coding would cost $1,500 during system testing and up to $10,000 post-release.</p><p>While the specific numbers have evolved over time, the fundamental principle&#8212;now sometimes called "Boehm's Law"&#8212;remains as valid in today's cloud-native world as it was in the era of mainframes. The longer a bug lives in your codebase, the more expensive it becomes to get rid of.</p><p>This idea of working quickly to keep costs to a minimum isn't just intuitive&#8212;it's supported by extensive research. A study conducted by the National Institute of Standard Technology (NIST) estimated that it takes three times as long for developers to fix a bug in the production stage as it did during the coding stage.</p><h2>Move fast and <em>fix</em> things</h2><p>Agile and other modern software development methodologies, and the rise of modern devops tooling &amp; CI/CD helps with catching bugs early, and therefore flattening the cost curve.</p><p>Continuous Integration creates shorter feedback loops, allowing teams to catch integration issues within hours instead of weeks. Automated testing increases coverage and consistency, helping teams find more bugs earlier in the process. Feature flags let teams isolate new code in production, limiting the impact of defects. And modern monitoring and observability tools help teams identify abnormal behavior before users even report problems.</p><p>These practices don't eliminate the cost gradient&#8212;but they do pull bug discovery earlier in the cycle when fixes are less expensive. According to the 2019 State of DevOps Report, teams using best practices experience 24 times fewer failures and recover from incidents 44 times faster than their less mature counterparts. That's a competitive advantage that&#8217;s hard to ignore.</p><h2>The art of triage</h2><p>The reality is that in any moderately complex software project, you'll probably discover more bugs than you can immediately fix. This is where prioritization becomes crucial. Not all bugs are created equal&#8212;some you can live with for months without significant impact, while others require the entire team to drop everything and address them immediately. How do you make these decisions in a systematic way?</p><p>Many successful businesses build their prioritization system around two fundamental elements. First, they consider the investment: How much will it cost to fix the bug today compared to fixing it tomorrow, or next week? Sometimes, delaying a fix makes sense from a resource perspective. Other times, the "interest rate" on technical debt is so high that immediate action is the only financially responsible choice.</p><p>The second element of prioritization: impact on the business. Does the bug affect the customer experience, or can users still accomplish their goals despite it? Is it affecting core functionality or peripheral features? Does it impact all users or just a small segment? Is it causing data integrity issues that might compound over time?</p><p>This prioritization approach can vary based on your company's stage and context. A startup racing toward product-market fit might tolerate non-critical bugs that an established enterprise with millions of users would immediately address. A healthcare application will have different priorities than a mobile game. The key is having a consistent framework that aligns your bug-fixing efforts with your broader business objectives.</p><p>Effectively prioritizing bugs isn't just about deciding what to fix first&#8212;it's also about explicitly deciding what can wait or perhaps never needs fixing at all. Because in software development, as in life, you can do anything, but you can't do everything.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;Visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>Visit TestTheTest.com</span></a></p><p></p><h2>Further reading</h2><ul><li><p>Boehm, B. W., &amp; Basili, V. R. (2001). Software defect reduction top 10 list. Computer, 34(1), 135-137. <a href="https://doi.org/10.1109/2.962984">https://doi.org/10.1109/2.962984</a></p></li><li><p>Capers Jones. (2008). Applied software measurement: Global analysis of productivity and quality (3rd ed.). McGraw-Hill Education.</p></li><li><p>Consortium for Information &amp; Software Quality. (2020). The cost of poor software quality in the US: A 2020 report. <a href="https://www.it-cisq.org/pdf/CPSQ-2020-report.pdf">https://www.it-cisq.org/pdf/CPSQ-2020-report.pdf</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Apps Break Where You Least Expect Them To]]></title><description><![CDATA[Software complexity is eating the world]]></description><link>https://blog.testthetest.com/p/apps-break-where-you-least-expect</link><guid isPermaLink="false">https://blog.testthetest.com/p/apps-break-where-you-least-expect</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Fri, 31 May 2024 11:48:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hb8f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hb8f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hb8f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 424w, https://substackcdn.com/image/fetch/$s_!hb8f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 848w, https://substackcdn.com/image/fetch/$s_!hb8f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 1272w, https://substackcdn.com/image/fetch/$s_!hb8f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hb8f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic" width="900" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/faf95786-f578-43dd-9fbd-4c53d13aed33.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21547,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hb8f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 424w, https://substackcdn.com/image/fetch/$s_!hb8f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 848w, https://substackcdn.com/image/fetch/$s_!hb8f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 1272w, https://substackcdn.com/image/fetch/$s_!hb8f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaf95786-f578-43dd-9fbd-4c53d13aed33.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The largest critical bug I personally saw at TestTheTest was when one of our clients broke their user signups. For a B2C startup this is as serious as issues can get: startups spend a huge amount of hard-earned (hard-invested) cash to get signups. So when potential users arrive at the site only to find that it doesn&#8217;t work &#8212; those people are not likely to ever come back. Money (not) well spent.</p><p>Moving fast and breaking things is just the way to go at tech startups, and so we can have an idea about where the balance will fall from the tech product manager&#8217;s fast, good and cheap Iron Triangle. In startup land, we&#8217;ll definitely see more unicorns than bug-free apps.</p><p><strong>Every piece of software has bugs. They happen for many reasons, such as:</strong></p><ul><li><p>Changes in requirements because features will come and go</p></li><li><p>Changes in the ecosystem because Apple and Google will always introduce new devices, new browsers, and new everything</p></li><li><p>Rescheduling resources because people in your team will leave at the exact wrong time</p></li><li><p>Redoing work because we needed to rush it the last time and nobody understands how it works now</p></li><li><p>Too much code because we didn&#8217;t have time to find a package or framework &#8211; or didn&#8217;t care to look</p></li><li><p>It&#8217;s in someone else&#8217;s code because everyone, always, uses 3rd party packages, and we can&#8217;t test each and every update, all the time</p></li></ul><p>This also means that regression testing, regular QA and allocating time for fixing bugs is a critical &#8211; and ongoing &#8211; process. And to make that process as efficient as possible, having a good idea of where bugs are most likely to occur in your app can be hugely beneficial.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;For more QA help, visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>For more QA help, visit TestTheTest.com</span></a></p><h3><strong>Bugs: They&#8217;re Everywhere!</strong></h3><p>Bugs can pop up in literally every feature, even the ones that people use often. And they can pop up anytime &#8211; Murphy&#8217;s law dictates that the bad code will go into production right after the marketing team has blown most of their budget on attracting new customers.</p><p>However, there&#8217;s one area of an app that testers often think is safe and will skip first when they run out of time &#8211; despite it being a hugely popular bug hideout. That place? The oldest, most trusted, established features.</p><p><strong>There are two reasons for this:</strong></p><h4><strong>1. Lack of visibility</strong></h4><p>Think about the most visible part of your app. It&#8217;s the new features, right? During active development, your app&#8217;s latest offerings will be seen by your developers, your testers, your project managers, and anyone else keen to check out what the latest features can do.There&#8217;s excellent oversight from all directions.</p><p>There&#8217;s practically zero chance that a bug is hiding out in your new features undetected. It&#8217;s much more likely to choose the quiet, cobweb-ridden corner of your old features; that place where no one ever thinks to look. Visibility matters when it comes to bugs.</p><h4><strong>2. Chain of Effect</strong></h4><p>In all software and always, functions depend on each other. When a developer works on a new feature, they often rely on functions previously written by themselves or by others. There isn&#8217;t always enough time to understand exactly how the old function&#8217;s internals work, let alone re-architect the code to be more reusable &#8212; so when someone changes the old functions for the new feature well, most of the time nothing bad happens. But sometimes, bugs start showing up.</p><p>Everything that developers do &#8211; adding a new feature, removing an existing feature, re-designing the UI interface, integrating modules, managing the database &#8211; it all has a ripple effect right through the app.</p><p>New work can hugely affect old work, either directly, or indirectly by increasing the complexity of the software and the system as a whole. And yet testers rarely take the time to go back and retest everything. They just don&#8217;t have the time, or simply don&#8217;t think to, because &#226;&#8364;&#339;that feature has always worked and we haven&#8217;t changed anything there.</p><h3><strong>Common bugs to look out for</strong></h3><p>The secret to keeping on top of things and finding bugs quickly is to get into the habit of not only testing regularly but testing everywhere. Some common things to test include:</p><ul><li><p>Connection and speed</p></li><li><p>Backend functionality</p></li><li><p>How the app handles interruptions (e.g. a phone call)</p></li><li><p>Permission issues</p></li><li><p>Page layouts and screen sizes</p></li></ul><p>However, even the best QA tester can miss bugs in smoke tests. That&#8217;s why it&#8217;s considered best practice to create testing checklists that QAs can tick off every time they perform their regression tests. Exactly what will be tested will depend on the nature of your app, but don&#8217;t skip something, just because something is annoying to test and retest, over and over again.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;Visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>Visit TestTheTest.com</span></a></p>]]></content:encoded></item><item><title><![CDATA[Building Software? It's Like Painting Walls]]></title><description><![CDATA[The quality of both types of projects depends on the quality of the prep work]]></description><link>https://blog.testthetest.com/p/building-software-its-like-painting</link><guid isPermaLink="false">https://blog.testthetest.com/p/building-software-its-like-painting</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Fri, 31 May 2024 11:48:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I-bt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I-bt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I-bt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 424w, https://substackcdn.com/image/fetch/$s_!I-bt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 848w, https://substackcdn.com/image/fetch/$s_!I-bt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 1272w, https://substackcdn.com/image/fetch/$s_!I-bt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I-bt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic" width="900" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b219f083-1762-49cf-bbff-409e236ceaa9.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41495,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I-bt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 424w, https://substackcdn.com/image/fetch/$s_!I-bt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 848w, https://substackcdn.com/image/fetch/$s_!I-bt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 1272w, https://substackcdn.com/image/fetch/$s_!I-bt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb219f083-1762-49cf-bbff-409e236ceaa9.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Experienced painters say that the biggest difference between a beautifully painted wall and a botched job is in the preparation.</p><p>It certainly takes time to prep the wall, tape the edges and remove the sockets &#8212; but all that time investment pays dividends at the end of the job. Amateurs will spend long hours removing brush marks, mopping up drips and giving a second coat, while professionals have already moved on to the next job.</p><p>Sounds familiar? If you&#8217;re in software, it very well might.</p><h3><strong>The Intricacies of Software Development</strong></h3><p>OK, so building software isn&#8217;t <em>quite</em> the same as painting a wall. But the fundamentals are all there. You can&#8217;t just grab VSCode, copy-paste some code from StackOverFlow and call it a day as soon as the app starts to resemble the design specifications. Good software is the result of a lot of planning work.</p><p>You can spot a good paint job when you see it. High quality speaks for itself, and we can tell when a project was executed well from start to finish. It&#8217;s the same with software. It&#8217;s easy to see an amateur app: they crash, they do unexpected things, and there are telltale signs all over the user interface. Text that didn&#8217;t get translated, inconsistent colors and fonts and missing buttons are all signs that specifications got overlooked, and there wasn&#8217;t enough time left to fix them.</p><p>When you have a team of &#226;&#8364;&#732;slap the paint on developers, they&#8217;re technically doing what&#8217;s needed to build the product. But they may not be doing all the critical extras at are needed to ensure the product is secure, usable, and completed on time. If you miss these points the product will likely fail.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;For more QA help, visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>For more QA help, visit TestTheTest.com</span></a></p><h3><strong>The Mopping Up</strong></h3><p>We&#8217;re at 90% with the product, so there&#8217;s only 90% left &#8212; project managers used to joke about their progress. This is the time when most of the features are completed but the product wasn&#8217;t yet tested by the QA team nor customers.</p><p>The &#226;&#8364;&#339;mop-up phase is the most critical time in the development process, and this is where the team will learn the truth about product quality. Great developers with well architected products generally allow for quicker bug fixes &#8212; while others scramble and keep introducing new bugs every time they fix one.</p><p>All this difference can be explained by how the team got to the 90%. With painting, if a hole in the wall wasn&#8217;t fixed before the paint job, that hole is probably best to leave there until the next time the wall needs painting. And similarly, fixing a small bug in badly architected software might be the start of a huge refactor job &#8212; and suddenly the mop-up phase is turned back into a full-on programming sprint.</p><h3><strong>Bringing Wallpapers to a Fight</strong></h3><p>Agencies do not react well to sudden changes from clients, and they also like to arrive at the job with a solution they have already used at other clients&#8217; projects.</p><p>They are the painters who arrive at the job with a set of wallpapers that they know how to use and slap on in a short amount of time. Agencies have to work within their constraints to stay within budget and be profitable &#8212; so managing these details and changes is the most important job for an agency-facing project manager.</p><h3><strong>Slap it on</strong></h3><p>It&#8217;s on the home stretch where complicated issues start to pop up. Where the QA team uncover weird bugs. Where the client suddenly decides a new feature needs to be added. The last few sprints suddenly turn into eight!</p><p>In both painting and software, the little things can be some of the most time consuming. It&#8217;s getting everything prepared and cleaned up that takes time, so it&#8217;s no wonder that these are the bits and pieces that often get brushed under the rug. In software, putting unit tests, or a component library in place, setting up CI/CD, a separate development environment is just as important as prepping the wall for painters.</p><p>Every team needs members who can slap the paint on, but managers need to ensure to have people onboard who are willing to put that 90% of time in to finish off the final 10% in the best possible way.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;Visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>Visit TestTheTest.com</span></a></p>]]></content:encoded></item><item><title><![CDATA[5 Tips for Hiring Your First QA Engineer]]></title><description><![CDATA[Nothing is as costly as hiring mistakes; here's how to avoid making them]]></description><link>https://blog.testthetest.com/p/5-tips-for-hiring-your-first-qa-engineer</link><guid isPermaLink="false">https://blog.testthetest.com/p/5-tips-for-hiring-your-first-qa-engineer</guid><dc:creator><![CDATA[TestTheTest]]></dc:creator><pubDate>Fri, 31 May 2024 11:47:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xx9U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xx9U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xx9U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 424w, https://substackcdn.com/image/fetch/$s_!Xx9U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 848w, https://substackcdn.com/image/fetch/$s_!Xx9U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 1272w, https://substackcdn.com/image/fetch/$s_!Xx9U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xx9U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic" width="900" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4cc5a63-e90f-4a88-8216-5b842bd92a60.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12674,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xx9U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 424w, https://substackcdn.com/image/fetch/$s_!Xx9U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 848w, https://substackcdn.com/image/fetch/$s_!Xx9U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 1272w, https://substackcdn.com/image/fetch/$s_!Xx9U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4cc5a63-e90f-4a88-8216-5b842bd92a60.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Within a small company usually everyone is responsible for more than one role. At tech startups, you&#8217;ll often see CTOs write code, backend software developers run DevOps and frontend devs design part of the user interface.</p><p>When it comes to quality assurance, we see everybody and their mother put in time to test the app, and try to catch bugs before pushing new code to users.</p><p>It may be fun to test products once, but QA generally requires people to re-test every single feature after changes are made to the app. This tedious work is not fun anymore and certainly nobody&#8217;s passion &#8212; and nobody&#8217;s responsibility.</p><p>People will simply skip re-testing features &#226;&#8364;&#339;that always work anyway. Even worse, developers being developers tend to try and automate their part of the job by writing browser and automation tests &#8212; only to end up spending a big part of their time maintaining those.</p><h3><strong>Building a QA team from scratch</strong></h3><p>Testing is rarely where startups add value, so product managers in particular are annoyed when feature development gets stalled, just to make space for something as lowly as QA. To free up dev time, the next logical step is to bring in people to address the issue.</p><p>The first question then is: who can they hire to get quality assurance sorted? QA engineers? Analysts? Testers? Where does QA fit in the team&#8217;s workflows and release schedule?</p><p>Your mileage may vary, but the QA team should be able to:</p><ul><li><p>Perform regular auditing and testing to improve product quality</p></li><li><p>Analyze results, share them with the business and provide actionable reports</p></li><li><p>Help developers see where their products can be improved</p></li><li><p>Keep products compliant and help reduce security risks and vulnerabilities</p></li><li><p>Create, document, share, and repeat strong testing processes</p></li></ul><p>At a startup, it&#8217;s only fair to assume that roles overlap, and some of the above will still be covered by existing employees. And so once you have an idea about the role, the next question is, finally: how to hire someone?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;For more QA help, visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>For more QA help, visit TestTheTest.com</span></a></p><p><strong>Here are 5 top tips for hiring your first QA Engineer:</strong></p><h4><strong>1. Attract the right people</strong></h4><p>You&#8217;re more likely to make a quality decision if your shortlist is full of quality candidates. However, while you may have a good idea of the role and responsibilities of a QA, it can be difficult to dig deeper into areas such as priorities and challenges unless you come from a testing background. If you don&#8217;t, reach out to QA experts for support in writing job specs that attract and appeal to the right people. Keep an eye out for workshops or mastermind sessions where you can ask questions of experienced QAs.</p><h4><strong>2. Consider different opinions</strong></h4><p>Who&#8217;s going to help you make a decision? Your IT team? OK, but they might not know about testing inside and out. Your developers? OK, but patch and move on devs don&#8217;t always understand the nitty gritty of testing. Basically, ask IT and they&#8217;ll back an IT-oriented candidate. Ask a dev, they&#8217;ll back a dev-oriented candidate. You need different perspectives, so be sure to involve a diverse group in the hiring process. The good news? Once you have a QA, they can help you find more!</p><h4><strong>3. Soft skills needed</strong></h4><p>A good QA doesn&#8217;t just have testing skills. They also have a range of skills that mean they&#8217;re able to withstand the challenges that testing throws at them. QAs need to be great communicators: they have to be able to share results and explain findings across all departments, so someone who can communicate both up and down is key. Similarly, testing can also be a repetitive and painstaking job, even pretty boring at times. It&#8217;s not a job for quitters, so it&#8217;s only fair to look for people who have strong motivation and are determined.</p><h4><strong>4. Take it slow</strong></h4><p>During these early stages, there&#8217;s no harm in starting with project-based hiring; hiring support to work on short term contracts to meet project demand. While this does mean you&#8217;ll need to deal with freelancers and HR again and again as new projects pop up, it also means that you have a great opportunity to identify the sort of person that works for your business &#8211; and the sort of person that doesn&#8217;t &#8211; without having to commit long term. Platforms like Upwork and Freelancer.com are great for dipping a toe in.</p><h4><strong>5. Build a good candidate experience</strong></h4><p>Not everyone you meet with will be your first QA Engineer. Or even your next QA Engineer. But they very well may play an important role in your business&#8217; future. By working to create a positive candidate experience &#8211; by providing feedback, listening to feedback, and being respectful of the candidate&#8217;s time &#8211; you can help to improve your business reputation in the recruitment landscape. Hiring is very network-based. Treat candidates nicely, and they may refer a friend next time.</p><h3><strong>Don&#8217;t Lose Sight of What Matters</strong></h3><p>A report by the Recruitment and Employment Confederation shows that 85% of businesses have made a bad hire. A bad hire can mean many things, from hiring someone who lacks the necessary skills to do the job, to someone who simply doesn&#8217;t want to be there. Ultimately, this can have a big impact on organisations.</p><p>One mistake new businesses often make is hiring too late. Cash-strapped startups have to wait until a small skill gap becomes a major problem by which time they have to juggle recruitment, and revert to ad-hoc HR processes while also racing around trying to put out fires.</p><p>Hiring your first QA Engineer &#8211; and taking those next steps towards growing your business &#8211; can be an exciting time. But don&#8217;t lose sight of what really matters: your customers. Try to find a healthy balance between building your recruitment process and maintaining productivity and product quality. Hiring with care and attention is crucial to reduce the risk of a bad hire, but don&#8217;t let it become a distraction.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.testthetest.com&quot;,&quot;text&quot;:&quot;Visit TestTheTest.com&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.testthetest.com"><span>Visit TestTheTest.com</span></a></p>]]></content:encoded></item></channel></rss>