Writing Better Software Tests
Like Duolingo, but for Writing Better Software Tests. Tomo turns the whole topic into a game you play five minutes a day, until it actually sticks.
For the part of you with thirty open tabs that never became anything.
Free forever · No credit card · iPhone & Android

Key ideas in Writing Better Software Tests
- Arrange involves preparing the environment and inputs
- Act is the single step where the feature is triggered
- Assert is the final check against the expected outcome
- One test should check one specific behavior or outcome
- Multiple assertions in one test can mask which specific part failed
- Single-purpose tests point directly to the bug
- The correct sequence of the Arrange-Act-Assert pattern
- The benefit of a test failing for a single reason
- Test names explain the 'contract' of the code to other developers
- Tests must clean up after themselves so they don't leave 'trash' for the next test
- A good name like 'should_return_error_when_email_is_invalid' is better than 'test_email_function'
- The test suite acts as a manual for how the system works
- Independent tests can be run in any order and still produce the same result
- A test should never rely on data created by a previous test
- Hard-coding the literal value (e.g., 50) prevents repeating bugs from the source code
- The role of test names as documentation
You've tried the other tabs
Thirty open tabs. Four facts you actually kept.
You watched. You nodded. By Sunday it was gone.
One answer, then back to scrolling.
Eight weeks. You meant to finish. You didn't.
Tomo gives Writing Better Software Tests the Duolingo treatment: levels, streaks, and quick quizzes that test what you just learned. That game loop is what the tabs above never had, so it's the one you actually finish.
Here's what playing it feels like
A real question from this course. Take your best guess.
In the 'Act' phase of a test, what are you primarily doing?
Get it right to open this lesson and 11 more in the app.
Where Writing Better Software Tests takes you
Stop guessing if your code works and start proving it. Learn to think like a detective to find bugs before your users do and build a safety net for your future self.
- 1
The First Line of Defense
- The Anatomy of a Good Test
- Finding the Edge Cases
- 2
Building a Safety Net
- Testing for Real-World Scenarios
- The Feedback Loop
2 sections · 4 units · 12 levels. Built to play, not to enroll.
You pick the voice
Writing Better Software Tests is taught in the The Bestie style: your friend who just gets it. Want a different feel? In the app you can spin up the same topic in any of Tomo's teaching styles. Same facts, totally different vibe.
More Technology on Tomo
Robots and Digital Companions
Bridge the gap between code and the physical world by building intelligent machines and responsive digital friends. Learn to program sensors, movement, and personality from the ground up.
The 75% Keyboard: KOR-75 Layout
Master the perfect balance of size and function with the 75% layout, specifically optimized for the Korean-standard KOR-75 configuration.
Transformer Architectures and the Future of LLMs
Master the intricate mechanics of modern large language models and explore the frontier of post-transformer architectures, from State Space Models to neuro-symbolic reasoning.
Software Testing: The Bug Hunter's Mindset
Stop hoping your code works and start proving it does. Learn the mental shifts and practical techniques used by professional testers to find hidden flaws before your users do.
Blockchain: The Trust Machine
Discover how a shared digital ledger allows strangers to trade and collaborate without needing a bank or a middleman. Learn the core mechanics of blocks, chains, and smart contracts.
VBA: Automate Your Excel Tasks
Stop doing the same manual tasks every day. Learn to record, write, and refine VBA macros to make Excel work for you while you focus on what matters.
Start Writing Better Software Tests today.
Download Tomo, search Writing Better Software Tests, and play your first lesson in under a minute.