Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between functional test and end-to-end test

What is the difference between functional test and end-to-end test?

Techopedia says that end-to-end test is

a methodology used to test whether the flow of an application is performing as designed from start to finish. The purpose of carrying out end-to-end tests is to identify system dependencies and to ensure that the right information is passed between various system components and systems.

Techopedia also says the following about functional test:

Functional testing is a software testing process used within software development in which software is tested to ensure that it conforms with all requirements. Functional testing is a way of checking software to ensure that it has all the required functionality that's specified within its functional requirements.

After reading the above two paragraphs, I'm still confused about the difference between them.

I have a node.js application which accepts requests, then parses the request, then sends the parsed data to a Database.

        requests               parse requests and send data to the database  

Client ---------> node.js app --------------------------------------------> Database

How can I write end-to-end test and functional test for the node.js app I mentioned?

I think in both types of the tests, I should treat the node.js app as a black box. And send requests to it. Then check if the output of the black box is correct or not.

It seems that in my case, there's no difference between functional test and end-to-end test.

like image 829
Brian Avatar asked Feb 13 '18 08:02

Brian


People also ask

Is end to end testing functional testing?

End-to-end testing is a methodology used in the software development lifecycle (SDLC) to test the functionality and performance of an application under product-like circumstances and data to replicate live settings. The goal is to simulate what a real user scenario looks like from start to finish.

What is the difference between unit testing and end to end testing?

Unit tests ensure that the individual functionality of your components, services, and other Angular entities are running properly. End-to-end tests build on this by ensuring that the user's interaction with these components and services is behaving as it should.

What is the difference between functional and system testing?

Functional testing aims to figure out whether given functionality works as specified. System testing aims to figure out whether the whole system fulfills the requirements given to it. So in functional testing you test that given part of the whole system functions in a specified way.

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.


1 Answers

As I understand it, the biggest difference between the two is that an end-to-end test requires the test to setup the system components as they are in production. Real database, services, queues, etc. The reason for this is to see that your system is wired correctly (database connections, configuration and such).

A functional test can setup the system with in-memory implementations of your application ports, which would make the test run faster and perhaps allow tests to run in parallel (in some cases). The only thing the test cares about is that a feature works as expected. This can reduce the overhead of setting up certain tests, since preparing 3rd party systems with data can be difficult or time consuming.

like image 87
Kraylog Avatar answered Sep 20 '22 17:09

Kraylog