Acceptance Criteria
Acceptance Criteria define the specific conditions that must be met for a SOW Item to be considered complete. They provide clear, measurable, and unambiguous definitions of "done" that all stakeholders can agree upon.
Overview
Acceptance Criteria in Test & Accept always belong to specific SOW Items and define precisely when those items are considered complete. They serve as the contractual definition of "done" for each requirement.
Acceptance Criteria:
- Provide binary pass/fail conditions for requirements
- Eliminate subjective interpretation of completeness
- Form the foundation for test case development
- Create clear contractual definitions of "done"
- Facilitate alignment between all stakeholders
Well-crafted acceptance criteria are essential for successful project delivery as they provide absolute clarity on expectations and are the basis for verification through testing.
The Acceptance Criterion Model
- Name
id
- Type
- string
- Description
Unique identifier for the acceptance criterion.
- Name
sowItemId
- Type
- string
- Description
ID of the SOW Item this criterion belongs to.
- Name
description
- Type
- string
- Description
The detailed description of the criterion.
- Name
status
- Type
- string
- Description
Current status (e.g., "pending", "pass", "fail").
- Name
order
- Type
- number
- Description
The relative order of this criterion within the SOW Item.
- Name
createdBy
- Type
- string
- Description
The user ID of who created the criterion.
- Name
createdAt
- Type
- timestamp
- Description
Timestamp of when the criterion was created.
- Name
updatedAt
- Type
- timestamp
- Description
Timestamp of when the criterion was last updated.
Creating Acceptance Criteria
Via the UI
- Navigate to a SOW Item
- Click "Add Acceptance Criteria"
- Write a clear criterion statement using the recommended format
- Click "Save Criterion"
Via the API
// Create a new acceptance criterion
const newCriterion = await apiClient.acceptanceCriteria.create({
sowItemId: "sow_item_id",
description: "Given a user with valid credentials, when they attempt to log in, then they are successfully authenticated and redirected to the dashboard.",
status: "pending"
});
Writing Effective Criteria
Acceptance criteria should be:
- Binary: Each criterion must have only two possible outcomes — pass or fail
- Specific: Clearly define the exact condition to be met
- Measurable: Include concrete details that can be objectively verified
- Unambiguous: Leave no room for interpretation or subjective judgment
Recommended Formats
Test & Accept supports two primary formats for acceptance criteria:
1. Given-When-Then Format
This format follows the Behavior-Driven Development (BDD) approach:
Given [context]
When [action]
Then [expected result]
Example:
Given a user with admin privileges
When they access the user management page
Then they can view, edit, and delete all user accounts
2. "It can be confirmed that" Format
This format is more direct and suitable for simpler conditions:
It can be confirmed that [expected condition]
Example:
It can be confirmed that the system automatically locks a user account after 5 failed login attempts
Managing Criteria Status
Acceptance criteria have three possible statuses:
- Pending: The criterion has been defined but not yet tested
- Pass: The criterion has been tested and satisfied
- Fail: The criterion has been tested and not satisfied
To update a criterion's status:
// Update criterion status
await apiClient.acceptanceCriteria.updateStatus(
"criterion_id",
"pass"
);
Linking to Test Procedures
Acceptance criteria form the foundation for test procedures. Each criterion should have at least one test procedure that verifies whether it has been met. See the Acceptance Tests documentation for details on how to create test procedures for your criteria.
Best Practices
- One Condition Per Criterion: Each criterion should test exactly one condition
- Complete Coverage: Ensure all aspects of a requirement have criteria
- No Implementation Details: Focus on outcomes, not how they're achieved
- Concise Language: Be direct and specific in your wording
- Collaboration: Develop criteria with stakeholders to ensure alignment
- Early Definition: Define criteria before development begins
- Consistent Format: Use a consistent format across all criteria
API Reference
Endpoint | Method | Description |
---|---|---|
/api/v1/acceptance-criteria | GET | List all acceptance criteria |
/api/v1/acceptance-criteria/{id} | GET | Get criterion by ID |
/api/v1/acceptance-criteria | POST | Create a new criterion |
/api/v1/acceptance-criteria/{id} | PUT | Update a criterion |
/api/v1/acceptance-criteria/{id} | DELETE | Delete a criterion |
/api/v1/acceptance-criteria/{id}/status | PATCH | Update criterion status |
/api/v1/acceptance-criteria/reorder | POST | Reorder criteria |
For complete API details, refer to the API Reference.