We test all of it: we confirm it works,
and we hunt for the ways it breaks — before a customer finds them.
Program testing can be used to show the presence of bugs, but never to show their absence.
— Edsger W. Dijkstra, computing pioneer, 1970 · still the first lesson of every QA course today
| 1 · You can’t prove “zero bugs” | So say “here’s what I found” — never “it’s perfect”. |
| 2 · You can’t test everything | Pick the biggest risks first: money, private data, first impressions. |
| 3 · Test early | A bug found today costs minutes. Found by a customer — days, plus trust. |
| 4 · Bugs live in groups | Found one? Dig in the same place — there are usually more. |
| 5 · Old tests wear out (“pesticide paradox”) | Repeating the same steps finds nothing new. Change your data and your route. |
| 6 · Know what matters here | For us: wrong totals and privacy leaks beat a pixel that’s off. |
| 7 · Zero bugs ≠ good product | If a screen confuses people, it’s broken — even with no bug in it. |
Bugs lurk in corners and congregate at boundaries.
— Boris Beizer, “Software Testing Techniques” · the most useful sentence in test design
Do exactly what a well-behaved user does. Why — if this fails, nothing else matters. Confirming it works is half the job; the next six angles are the other half.
Do what the app says you can’t: empty forms, wrong formats, past dates. Why — developers code the “yes” case first; the “no” cases are where they forget.
Test the edges: 0, 1, max, max+1, empty, enormous. Why — code often says “less than” where it needed “less than or equal”. Only the edge values show it.
Try to see and do what your role should not allow. Why — one company seeing another’s prices = lost customer, possibly a lawsuit.
Refresh mid-save. Double-click submit. Press back. Two tabs. Why — a double-click can run the code twice: duplicate orders, double charges.
Brand-new empty account vs. one with 500 orders. Why — developers test with 3 rows. Page 50, or the empty screen, they’ve never seen.
Is it understandable without training? Why — confused users don’t file bugs. They leave. Confusion is a defect.
Quantity field accepts 1–10 000. Don’t try 47 random numbers — test the edges of each zone:
Why it works: the developer wrote the limit as one small rule. If that rule is slightly wrong, only the numbers at the edge can show it. Most input bugs sit at an edge — these six values catch them, no luck needed.
| O'Brien | To a database, the apostrophe is a command sign. If the app doesn’t handle it, searches crash — and real customers have this name. |
| <script>alert(1)</script> | Your text should be shown, never run. If the page runs it, an attacker can run worse. That’s a security bug. |
| مرحبا · 你好 · 😀 | Foreign letters and emoji are stored differently from a–z. Weak code scrambles them — and real suppliers have non-English names. |
| "abc " | To a computer, abc␣ and abc are different words. Result: logins and searches fail for no visible reason. |
| 5 000-character paste | Long text breaks layouts, gets silently cut by the database, overflows emails. Users paste from Excel all day. |
A user interface is like a joke. If you have to explain it, it isn’t that good.
— Martin LeBlanc, designer & founder of Iconfinder
→ defect ticket
→ friction ticket
Same mission. Quality means it works and it works without thinking. Why you? — you still see the product with fresh eyes. In a month you won’t. That’s a superpower with an expiry date — use it now.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
— Antoine de Saint-Exupéry, writer & aviator
How many clicks to finish a core task? Every extra step loses users.
Squint at the screen. What stands out? If everything shouts, nothing does.
Point at any element and ask: if this disappeared, would anyone miss it?
Needing to memorize things between screens is the app’s failure, not yours.
If it’s “Order” here and “RFQ” there, users think they’re two different things.
“Something went wrong” helps nobody. An error should say what to do next.
Simplified from Nielsen’s 10 usability heuristics — the industry standard checklist since 1994.
Nothing was lost — rare fields moved behind “More options”, three unclear buttons became one clear action. Why it matters — every field and button is a small decision. Cutting decisions, not features, is what makes software feel easy.
Title: [New order] Sending an RFQ takes 9 clicks across 3 screens Where: Project → New order → Send What: I had to re-select the supplier on every screen Count: 9 clicks (video attached) Suggestion (optional): remember the supplier from step 1
Why journeys? Bugs hide between the screens — something you create in step 2 breaks step 7. Testing one screen at a time never sees it.
Sets up the company: users, roles, permissions, plan limits. Tests — onboarding, settings, “can my people do too much?”
The daily driver: projects, RFQs, sending to suppliers, comparing quotes, messages. Tests — the core money path, end to end.
A second company + the admin app. Tests — isolation: Company 2 must never see Company 1’s data.
Team lead: new features + full regression. Personas rotate later — fresh eyes on old screens (principle 5!).
One shared storyline, replayed continuously. Every step is a test surface:
Testing is a technical investigation of a product, done to expose quality-related information.
— Cem Kaner, author of “Testing Computer Software”
Title: Orders broken!! I tried to send the order and it didn't work. Please fix asap.
Title: [Orders] "Send" stays disabled after CSV import 1. Buyer, Company A, staging 2. Project → New order 3. Import items via CSV (attached) 4. Select supplier "Steelco" Expected: Send enabled Actual: greyed out; console TypeError (screenshot) Chrome 138/macOS · 3 of 3 tries
Title formula: [Where] What happens + when. Why — if a developer can replay your bug in 2 minutes, it gets fixed today. If they can’t, it waits forever.
Priority (when it’s fixed) is the lead’s call.
| Jira + our template | Every bug lives here. The template mirrors the anatomy — fill every field. |
| Jam (jam.dev) | One click captures video, console, network, steps — straight into Jira. Your default reporter. |
| DevTools (F12) | Two habits: red in Console, red in Network → screenshot into the ticket. |
| Screen recorder | Loom, or built-in: ⌘⇧5 / Win+G. |
| Session notes | One doc per session: charter, what you tried, what smelled wrong. |
After each video, post one idea you’ll try tomorrow in the team channel. That’s the whole assignment.
“Quality is everyone’s responsibility.”
— attributed to W. Edwards Deming, father of modern quality management
Meaning: quality is not only the QA team’s job — developers and designers own it too. But it starts with what you three find.
Questions?