惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
IT之家
IT之家
博客园 - 叶小钗
雷峰网
雷峰网
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
博客园 - 【当耐特】
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Mystery Bread
Susanne Abdelrahman · 2026-06-21 · via DEV Community

There's a belief that, when I share it, will sometimes make other folks in software tilt their heads at me.

The goal of QA teams isn't good testing.

The goal isn't even testing the "right" things in the "right" way.

The goal is doing our part to help teams develop software that does what it's supposed to do. Testing is one way we get there, but certainly not the only one and often not the best one. And yet, the go-to quality conversation at many places is still about testing and coverage.

Testing is a great tool for a specific set of jobs. Automated tests are your reliable, repeatable checks on Very Important Functionality (VIF™) that give you fast feedback as code changes. Exploratory testing builds understanding of how software actually behaves and gives space for testers to go off the map and follow their intuition (i.e. years of experience and pattern recognition passing itself off as a hunch).

At a lot of places though, testing has become the everything tool. It fills gaps left by quality work that didn't happen earlier + it stands in for the visibility that monitoring and observability should be giving us instead. That's a lot of weight for one tool to carry. And relying on test coverage as your primary quality signal is like waiting to reshape a loaf of bread until after it's already out of the oven.

The bread is your software. The ingredients are the things that have to be right before you even get to shaping it: a clear definition of what the software needs to do and for whom, alignment on what "good" looks like, clarity on what you're optimizing for, risks and constraints mostly known going in, etc. If you use the wrong flour or leavening, or skip the salt entirely, no amount of reshaping will transform that dough into what you intended to bake. Think back to the last time someone asked an "obvious" question and everyone on your team had a different answer. That's an example of the work. It's almost invisible (no artifact or dashboard to point to) so it's easy for teams to skip it or assume it happened at some point with some combination of folks.

In dough form (early in development, before the bulk of the code gets written) software is much easier to shape. By the time the dough has hardened into bread (after code is written and in testing) you need a lot more force to make changes. And if you do get the shape right eventually, it costs more time and effort to get there than it needed to.

So why do so many teams approach software quality like shaping a loaf of mystery bread after it's been baked?

In cases like this, test coverage is often used to fill other gaps. Test coverage tells us where we've looked (kind of). It doesn't tell us whether what we're looking at matters. An 80% coverage number could mean a well-understood codebase with risk-driven testing and thoughtful gaps. Or it could mean way too many tests that dont meaningfully exercise the paths your team most needs signal on. The number doesn't distinguish. And test coverage leaned on just before release is a slow, expensive way to learn things you could have learned much cheaper. Technically operational. Not the best tool for what you're trying to do.

Something I want quality-minded teams sitting with instead of chasing test coverage: where are the places you don't know how your software is going to behave and need to + what's the fastest, cheapest way to find out? Sometimes that's a test. Many times it's not. Many many times it's someone asking the questions everyone assumed were obvious that nobody actually had the same answer to, in a conversation that should have happened two weeks earlier.

There's a downstream side to this too, because most software breaks eventually. When it does, what's most important is how fast you find out and respond. Production monitoring and observability tell you something is wrong before your users do. Even the best testing won't give you this. Not cheaply, anyway, although I guess you could technically just run your 100% coverage automated test suite constantly against production, if you've got money and time to throw around.

So, yes: the goal of QA teams isn't good testing. It was never supposed to be. What we're here to do is help teams ship software that works, and the most useful version of that work isn't happening in a test environment.

And we know that AI raises the stakes here. You can now generate code and tests without the understanding ever happening. Products ship. Coverage numbers go up. Stakeholders are happy. Skip straight to the oven and it looks like progress. And when the pressure to generate goes up, invisible work is the first to get cut.

Testing was always a means. Coverage was always a proxy for that means. Teams can now produce both at scale and end up no closer to their actual goal. What doesn't get generated is the dough stage. That part's still on us.