The One, Zero, Many heuristic is a simple tool for testing how software handles different quantities of data. This approach helps us think about system behaviour with no entries, a single entry, and multiple entries. It can be used to test anything from input fields to API responses.
To put this into practice, we’re setting an activity to help you apply this heuristic and strengthen your testing approach.
Why take part? Practicing heuristics helps you think outside the box and make decisions, improving your ability to spot edge cases and unexpected behaviours. It’s a valuable skill for both new and experienced testers.
Activity Steps: Create Test Cases
Choose a feature to test for any piece of software (e.g., a search function or input field) and write three test cases:
Zero Entries – What happens with no data?
One Entry – How does the system handle one item?
Many Entries – Can it manage multiple items correctly?
Share your test cases here! This is a great way to practice and see how others think through these scenarios.
Not sure if I’m on the right track here, example could be when searching for a flight.
Zero Routes- when the user searches a route that is not available for between 2 cities. messaging could be “no routes available, try adjusting your search criteria”
One Route- when 1 route exists that matches the users search e.g. direct flight from Melbourne > Sydney. Page should show the time/duration/stops etc and provide air travel classes (economy/business class etc) and book button
Multiple Routes- When the destination city has more than 1 airport e.g. New York City. Page should return all airport options by time/duration/stops etc. and provide air travel classes (economy/business class etc) and book button.
The page should ideally have a header at the top of page saying “showing all airports available for New York”
Adding my own test case, hopefully applied correctly
I used searching for an email Zero - When no results are found, the system should provide clear feedback to let the user know that the input was received but returned no results. It could also offer suggestions on checking spelling or other steps like using Advanced Search options to try again One - When exactly one result is returned, display the result count found 1 of 1 and still suggest further search options if the user expected to find more results Many - When many results are returned, the page should display the results, the result count, have a way to view them all and include ways to refine, narrow or sort results
Using the Coffee cart app: https://coffee-cart.app/, I can think of test cases for when the user is viewing the cart page.
Zero Entries: Cart Page
If the user hasn’t selected a coffee, no coffee should display
When the user is viewing the cart page, they see a message notifying them that the cart is empty and that they can take action to change that.
One Entry - Cart page
When a user adds one cup of coffee, they see the coffee they selected, how much the coffee costs, the number of coffee cups they’ve added, and the user has the option to add or remove the coffee that exists in the cart
The user can add the same type of coffee from the cart page and the count updates
The user can remove the same type of coffee from the cart page and the count updates
The user can remove a specific type of coffee from the cart page
Only the coffees selected should be visible
The cart navigation displays the correct count of the selected number of coffees
The payment total updates correctly
Many Entries: Cart page - The user selects ten different types of coffees
(I won’t repeat the test cases above related to the “One entry” - but the same applies for “Many Entries”)
All ten cups of selected coffees display.
The page displays the different types of coffee in rows that the user can plainly see
The list of coffee types display in alphabetical order
Zero Entries but instead of search icon clicked clear contents icon, ideal scenario nothing should happen because the clearing function would find no text to remove…but here it loads the page again, almost 8-9 seconds also there is one api call request to backend… bug found !