you want to ship products that solve someone's problem — not just handy tools for yourself When other people use your app, quality matters. That is the difference between a hobby and a product That is why I want you to know about QA 8
to master the theory. Use old QA ideas as keywords Set priorities See more angles Which feature to build first Quality beyond "it works" Kano model ISO 25010 Build it safely "Production-ready" One phrase for security Give the AI the keyword. The AI fills in the details 10
do you start? → Think in 3 types. Type Must-be Satisfied Attractive Not done Performance Must-be Done well Dissatisfied What it is, and an example (booking app) Expected. If missing, users are very unhappy e.g. Bookings are saved correctly better it is, the happier users are Performance The e.g. Fast pages, fewer steps expected, but delights users Attractive Not e.g. AI suggests open time slots For example: get must-be quality right first, then improve attractive quality. Reference: What Is the Kano Model? - ASQ 11
a feature, make it a habit to ask: "Review the feature you just built from these ISO 25010 quality characteristics. Find anything that is missing." 1. Reliability: Is there error handling and retry? 2. Usability: Does it prevent mistakes? Does it show loading states? 3. Security: Are inputs checked? Is any authentication missing? 13
one vulnerability About 6.5 per app on average. About 2 in 3 were Critical or High severity Most common: seeing other people's data / weak checks on bad input / broken login Top cause: the AI does not follow security rules nobody stated The AI does not protect what you did not ask for → ask for security explicitly, and check before you launch Source: Deng, Fan, Meng "Understanding the (In)Security of Vibe-Coded Applications" (arXiv:2606.23130, 2026). 200 publicly deployed vibe-coded apps were audited 14
"production-ready" Read the warnings Before launch Ask for a self-check "Build it ready for When fixing errors, don't let Postponed tasks, production" the AI weaken login checks permissions, input, and The most effective phrase in secrets the paper 💬 "Before launch, check postponed tasks, login and permissions, input checks, and how secrets are handled" Still not zero → treat it as a prototype, and check it yourself 15
after a change When something breaks, we call it a "regression" A fix in one place can break something that looks unrelated You repeat it after every change, so start with the most important features When you find a bug, add it to your checklist for next time Reference: What is regression testing? - MagicPod Blog (Japanese) 18
2010 1. Twitter fixed a bug: text in a tweet could run as code on other people's screens 2. Later, an unrelated site update brought the bug back, without anyone noticing 3. Hovering over a tweet could show pop-ups, or retweet it without consent 4. It took about 4 hours to fix August 2010 Found and fixed a security bug ✓ Later An unrelated site update September 21, 2010 The fixed bug came back ✕ A fixed bug can come back with an unrelated change → add fixed bugs to your tests Source: Twitter Blog "All about the 'onMouseOver' incident" (September 21, 2010) 19
3 Pick key flows Prepare the tests Run every time Choose the flows that hurt most if they break e.g. See open slots → book → see it in the list → cancel Start with a checklist of steps and expected results Add fixed bugs to it, too Whenever you change something, and before every release Check the key flows with the same tests every time → if something breaks, you notice before users do 20
to test as you go Thinking and testing at the same time Not random clicking: you aim at where bugs are likely to be Set a time limit, like 30 minutes, and note what you tried and found Finds problems that prepared test cases often miss Reference: What is exploratory testing? - MagicPod Blog (Japanese) 21
on the booking form, and find bookings that should not be possible" What I tried Result What I thought of next Book a date in the past It worked (bug!) "Then, a closed day?" Book on a closed day It worked (bug!) "Two people, same slot?" Same slot in two tabs at once Double booking "Click Submit many times?" Click Submit many times 3 identical bookings (Note it, move to the next goal) Also try: submit empty fields, enter a very long name, go back or reload halfway, check if another account can see your bookings Look at the result, then decide what to try next. That is how exploratory testing works 22
you tend to try only the "right" way to use it You know how it should work, so you miss things When testing, switch to a tester's mindset The goal is not "check that it works" but "find bugs" Cause problems on purpose. Sometimes, try to break it You can only do so much alone. Borrow other people's eyes and AI's eyes 23
uses the app at once to find bugs They find uses and bugs outside the builder's assumptions How to run one Set 30–60 minutes. Share which features or goals to focus on Look back at the end, and fix the most important ones first Try bug-bashing each other's apps with other vibe coders! 24
your app in a browser and help with exploratory testing Example: an agent like Claude Code + Playwright MCP As a partner: "How could this app break? List things to try" As a tester: give it a goal, and let it run the app and take notes Example: "Try the booking form with impossible dates and inputs. Find bugs" You make the final call. Do not just trust "no problems found" — check the report 25
your app, quality matters Learn ways to think about quality, and tell the AI explicitly Kano model: build must-be quality first Quality characteristics: decide what matters, and ask the AI to self-review from those viewpoints Security: say "production-ready," and ask for a self-check before launch Measure quality with testing Regression testing: prepare tests for key flows, and run them on every change and before release Exploratory testing: try to break your app, looking at each result. Get help from others and AI Use time-tested QA wisdom — quickly, with AI 27
when you ask the AI 2. Make one checklist of your key flows 3. Spend 15 minutes trying to break your own app Tools needed: none You do not have to do everything. Start with just one 28