Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are user acceptance test (UAT) and end-to-end (E2E) test the same thing?

I've been trying to find the answer to this question online but I have not been able to find good enough to make me feel sure about the answer.

I believe they are essentially the same but user acceptance test (UAT) requires a real user while end-to-end (E2E) test uses automated tools to simulate the users?

like image 354
Remo H. Jansen Avatar asked May 14 '15 19:05

Remo H. Jansen


People also ask

Is UAT and acceptance testing the same?

User acceptance testing (UAT), also called application testing or end-user testing, is a phase of software development in which the software is tested in the real world by its intended audience.

What is another name for end-to-end testing?

End-to-end testing, also known as E2E testing, is a methodology used for ensuring that applications behave as expected and that the flow of data is maintained for all kinds of user tasks and processes. This type of testing approach starts from the end user's perspective and simulates a real-world scenario.

What comes after UAT testing?

User Acceptance Testing(UAT) is a process to check whether the system accepts a user's requirements. It's performed at a time when the system is used by actual users. User acceptance testing comes after - Unit Testing--->Integration Testing, --->System Testing, --->Acceptance Testing in the testing process.


2 Answers

User Acceptance Test is a phase in a typical software development process.

From the other side, End-To-End test is one of the approaches to testing the complex applications which involves all layers of the application to interact with each other during test execution.

It means that you can execute End-to-End test in User Acceptance Test phase, and you can't consider those two terms as one, that has the same meaning.

like image 130
Viktor Malyi Avatar answered Oct 20 '22 07:10

Viktor Malyi


TLDR;

Acceptance and End-to-end tests are designed to test the applications functionality from a users perspective, you can group these together as "Functional tests". Do not mock database or network access, these tests should run against a production environment. Use TestCafe.

Unit tests cover a unit of work which means a single method. Mock dependencies like database or network access. Use Jest.

Integration tests cover multiple units of work that are related, for example a single/multiple ReactJS components. Mock dependencies like database or network access. Use Jest.


Acceptance and End-to-end tests are designed to test the applications functionality. They are usually created by BA, QA, and Engineering before development starts, and then automated by an engineer during development.

1. End to end tests (Actions)

Often a manual effort by someone on the team to make sure all of the functionality still works after new updates. This can be automated by using a UI testing tool like TestCafe.

For example "An authenticated user can start a job application, input all relevant details, and submit the application."

2. Acceptance tests (Visual)

Acceptance tests are automated with tools like Jest/TestCafe and concentrate on story functionality and/or what exists on a page if an action occurs.

For example "An authenticated user can view all job applications on the dashboard page."

3. Unit tests

Created during development by the engineer. Tests a unit of work which could be a single method, or a method that is composed of multiple private methods. A good rule of thumb would be to only test the public interface of a class.

Private methods don't always necessarily need to be tested as they are part of a unit of work. But in the case where there is complex logic in the private method it might be a good idea to test it in isolation. You could use Jest while mocking dependencies of the unit of work like database and network access.

4. Integration tests

Created during development by the engineer. Tests a unit of work without mocking. Generally focuses on a wider scope than a unit test. For example, creating a user might include storing details in the database, sending a web request to a service, and responding to the client. Often requires an in-memory web server to run the tests. Use Jest.

like image 33
David Avatar answered Oct 20 '22 06:10

David