Acceptance testing

Acceptance testing is the complete opposite of unit testing. Unit testing is done at the lowest level while acceptance testing is done at the highest level. Acceptance testing is how an end-user will see the product and how an end-user will interact with it. In case of a website, in acceptance testing, we write the test that hits the URL from outside. Testing tools simulate a browser or external client to hit the URL. In fact, some testing tools also provide an option to use a web browser, such as Chrome or Firefox.

Most of the time, these tests are written by a QA team. It is because they are the people who are there to ensure that system is working for the end user, exactly how it is intended to. Also, these tests execution is slow. And for user interfaces, sometimes there is a lot of detail to test so a separate QA team does this type of testing. However, it is just a common practice, so there can be an exception to that depending on the situation.

The benefits of acceptance testing:

For example, if you are writing test cases using a tool written in PHP, then you can use it for systems written in other languages as well. So it doesn't matter if development language is PHP, Python, Golang, or .Net. It is because acceptance tests hit the system from outside without any internal knowledge of the system. And it is the only one of these four types of tests which test the system without considering any inner detail.

Acceptance tests are very useful as they interact with your system with a real browser. So if some thing will not work in the specific browser, then these things can be identified. But keep in mind that with a real browser, these tests take time to execute. It is also slow if the browser simulation is used but still the browser simulation will take less time than the real browser. Note that acceptance testing is considered the slowest and most time consuming among these four types of tests.