Acceptance Criteria vs Acceptance Test
Acceptance Criteria :
An acceptance criteria is defined as a set of predefined statements/rules that states the needs/requirements to be fulfilled by the product under test. It confirms to what extent does our product has been built and how far it is able to serve the purpose it is expected to. It is validation technique. This technique ascertains every aspect of functional and non-functional requirements, which must meet the acceptance criteria.
- Functional Criteria : Describes the functionality to be delivered by the product. Eg. A user should be able to update his own profile.
- Non-Functional Criteria: It primarily deals with conformance to design specifications.
- Performance Criteria: It is the measurement of response time the system takes to respond to a query. Minimum the response time, better is the performance.
Acceptance Test :
Once our product fulfills the acceptance criteria, we move on to test scenarios which are derived from acceptance criteria. Acceptance tests are created by forming the problem as a base. It is intended to check if it passes the conditions of acceptance criteria, because that ensures fulfillment of user requirements.
Difference between Acceptance criteria and Acceptance test :
- Helps the team to understand how the system is being built.
- Ensures that the team does not miss out on important points that are worth consideration.
- Developers, testers and product owners are involved in this process.
- Acceptance criteria is explained only conceptually and not in much detail.
- Takes into consideration failure scenarios and test cases.
- The tests define the behaviour of the system.
- Acceptance test helps to ensure that all the features are working as per expectations.
- Code is analysed by developers and testers.
- Implementation of test occurs during development.
- Acceptance tests can be performed manually or through automation.
Acceptance criteria and testing, together helps in delivering a product that performs the expected tasks as well as performs efficiently. They form an integral part of the entire software development process and should not be compromised in any form, whatsoever.