Acceptance Criteria
Defining what "done" means
Acceptance Criteria define the specific conditions that must be met for a work item to be considered complete. They're the answer to the question: "How will we know when this is done?"
What are Acceptance Criteria?
Acceptance Criteria help you:
- Define Success: Clearly state what must be true for work to be considered complete
- Align Expectations: Ensure everyone understands what you're building
- Guide Development: Give developers clear targets to hit
- Enable Testing: Provide a basis for creating tests
- Prevent Scope Creep: Keep the work focused on what was agreed
Think of them as a checklist of conditions that must all be true before you can say "this is done."
Criterion Properties
Each acceptance criterion has:
Basic Information
- Title: A concise statement of what must be true (e.g., "User can log in with email and password")
- Description: More detailed explanation of the requirement
- Task Item: Which work item this criterion belongs to
- Owner: The person responsible for this criterion
- Sort Order: Where it appears in the list
- Created/Updated: Timestamps
Relationship to Work
Each work item can have multiple criteria, and each criterion can have multiple tests.
Writing Good Criteria
The Formula
A good acceptance criterion follows this pattern:
[Actor] can/must [action] [result]
Examples:
- "User can reset their password via email"
- "System must validate email addresses on submission"
- "Admin can view all user accounts"
Be Specific
✅ Good - Specific and measurable:
- "Password must be at least 8 characters long"
- "Search results appear within 2 seconds"
- "User receives confirmation email within 1 minute"
❌ Bad - Too vague:
- "Password should be secure"
- "Search should be fast"
- "User gets notified"
Be Testable
Every criterion should be something you can test:
✅ Good - Can be tested:
- "Form displays error message when email field is empty"
- "Page loads all data before showing content"
- "API returns 404 for non-existent resources"
❌ Bad - Can't really test:
- "UI should look nice"
- "Users should be happy"
- "System should work well"
Focus on Outcomes, Not Implementation
✅ Good - What, not how:
- "User can filter results by date range"
- "System persists user preferences across sessions"
- "Dashboard displays last 30 days of activity"
❌ Bad - Too focused on how:
- "Use a React date picker component"
- "Store preferences in localStorage"
- "Query the database with a SQL WHERE clause"
Common Formats
Given-When-Then (BDD Style)
This format is great for user interactions:
**Title**: User login with valid credentials
**Description**:
GIVEN a registered user
WHEN they enter their correct email and password
THEN they are redirected to the dashboard
AND they see a welcome message with their nameChecklist Style
Good for features with multiple requirements:
**Title**: Registration form validation
**Description**:
The registration form must:
- Require email, password, and name fields
- Validate email format
- Enforce password strength (8+ chars, 1 number, 1 symbol)
- Display field-specific error messages
- Disable submit until all fields are validSimple Statement
For straightforward requirements:
**Title**: Password reset email delivery
**Description**:
When a user requests a password reset, they must receive an email with a valid reset link within 60 seconds.Types of Criteria
Functional Criteria
What the system must do:
- "User can upload files up to 10MB"
- "System automatically saves draft every 30 seconds"
- "Admin can export data as CSV or PDF"
Non-Functional Criteria
How well the system must perform:
- "Page load time is under 3 seconds"
- "System handles 1000 concurrent users"
- "Data is backed up every 24 hours"
Negative Criteria
What should NOT happen:
- "Unauthorized users cannot access admin panel"
- "System does not store credit card numbers"
- "Deleted data cannot be recovered by users"
Adding Criteria to Items
When to Add Criteria
Add acceptance criteria:
- During planning: When defining what you'll build
- Before development starts: So developers know what to aim for
- After requirements clarification: When you understand what "done" means
How Many Criteria?
Rules of thumb:
- Simple tasks: 2-5 criteria
- Complex features: 5-15 criteria
- If you have more than 15, consider breaking the item into smaller pieces
Organizing Criteria
Use the sort order to group related criteria:
- Core functionality (what it must do)
- Edge cases (what happens in unusual situations)
- Error handling (what happens when things go wrong)
- Performance (how fast/efficient it must be)
Criteria and Tests
From Criteria to Tests
Each criterion should have at least one test that verifies it:
Criterion: "User can reset forgotten password"
Tests:
- "Forgot password" link displays reset form
- Submitting email sends reset link
- Reset link allows password change
- Old password no longer works after reset
Multiple Tests per Criterion
Complex criteria might need several tests:
Criterion: "Form validation prevents invalid data"
Tests:
- Test email validation rejects invalid formats
- Test password validation enforces length requirement
- Test phone validation accepts international formats
- Test required fields show error when empty
Tracking Progress
Criteria contribute to your SOW's overall completion:
- Each criterion can be marked as "met" or "not met"
- The SOW tracks what percentage of criteria are satisfied
- This counts for 30% of the overall SOW completion
You can see:
- Total number of criteria
- How many are met
- Which ones still need work
Working with Criteria
Creating Criteria
When adding a new criterion:
- Pick the work item it belongs to
- Write a clear, testable title
- Add detailed description if needed
- It will be added to the bottom of the list
Reordering Criteria
You can drag and drop criteria to change their order. Common patterns:
- Most important first
- Logical flow (setup → action → result)
- Grouped by concern (all validation together, all errors together)
Updating Criteria
As you learn more about the requirements, you can:
- Update the title to be more specific
- Add more detail to the description
- Split one criterion into multiple criteria if it's too broad
- Mark criteria as met when they're satisfied
Deleting Criteria
Deleting a criterion also deletes all its tests. Only delete if:
- The requirement is no longer valid
- You're consolidating duplicate criteria
- You're replacing it with better-defined criteria
Common Mistakes
Too Broad
❌ Problem: "Feature must work correctly" ✅ Better: "User can save draft and return to complete later"
Too Technical
❌ Problem: "Use bcrypt with salt rounds of 12" ✅ Better: "User passwords are securely hashed and cannot be retrieved"
Multiple Concerns
❌ Problem: "User can log in, reset password, and update profile" ✅ Better: Three separate criteria, one for each concern
Not Measurable
❌ Problem: "System should be user-friendly" ✅ Better: "New users can complete registration in under 3 minutes"
Best Practices
Do
- Write criteria before development starts
- Make each criterion independently testable
- Use clear, simple language
- Focus on what, not how
- Get stakeholder agreement on criteria
- Update criteria as requirements evolve
Don't
- Write criteria after the work is done
- Make criteria dependent on each other
- Use jargon or technical terms unnecessarily
- Specify implementation details
- Set criteria in stone - they can change
- Have too many criteria per item
Review Checklist
Before finalizing your criteria, check:
- Is it specific and unambiguous?
- Can it be objectively tested?
- Does it define success, not implementation?
- Is the title under 255 characters?
- Does the description provide enough context?
- Is it independent of other criteria?
- Does everyone understand what it means?
Example: Complete Criterion Set
Work Item: "User Authentication Feature"
Criteria:
-
User can log in with email and password
- Given a registered account, when correct credentials are entered, user is redirected to dashboard
-
System validates credentials on submission
- Invalid credentials show error message without redirect
- Error message doesn't reveal whether email or password was wrong (security)
-
Account locks after 5 failed login attempts
- After 5 failures, account is locked for 15 minutes
- User sees message explaining the lockout
-
User can reset forgotten password
- "Forgot Password" link is visible on login form
- Reset email arrives within 60 seconds
- Reset link expires after 24 hours
-
Session persists across page reloads
- Logged-in user stays logged in after browser refresh
- Session expires after 30 days of inactivity