Think of preconditions as the rules you need to follow before you can even start a process. In system design, a precondition is something that must be true or a specific state that the system and its actors must be in before a use case can begin. They set the stage, making sure everything is in place for a successful interaction.
A Simple Analogy: Getting Ready to Cook
Before you start cooking a meal, you need to check if you have all the ingredients. In this analogy, having the ingredients is the precondition. If you don’t have them, you can’t start cooking. Similarly, a system needs to meet certain conditions before a user can perform an action.

Examples from Everyday Life
Preconditions are all around us. Here are a few examples:
Boarding a Bus
Use Case: Board the bus.
Preconditions:
- The bus has arrived at the stop.
- You have a valid ticket or pass.
Watching a Movie Online
Use Case: Stream a movie.
Preconditions:
- You are logged into your streaming account.
- Your internet connection is active.
Why Preconditions Are So Important
By defining preconditions clearly, you can:
- Prevent Errors: They ensure a use case never starts from a bad or unexpected state, avoiding a range of potential issues.
- Improve Clarity: They provide a simple way to communicate the exact starting requirements to both developers and testers.
- Simplify Testing: Preconditions make it clear exactly what a test needs to set up before running a test case.
A Simple Checklist for Writing Preconditions
When you write a precondition, make sure it is:
- Specific: Don’t write “The user is ready.” Instead, write “The user is logged in.”
- Testable: Can a tester confirm the condition is true? “The account has a positive balance” is testable.
- A “Yes/No” Question: The precondition should be something that is either true or false.