Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between UI/GUI testing, functional testing and E2E testing?

I would say that all three are the same, but I wonder if there is small differences between them. In the end, what I think is that you are testing user scenarios on all of them.

like image 312
lmiguelvargasf Avatar asked Nov 12 '16 16:11

lmiguelvargasf


2 Answers

UI testing: user interface testing. In other words, you have to make sure that all buttons, fields, labels and other elements on the screen work as assumed in a specification.

GUI testing: graphical user interface. You have to make sure that all elements on the screen work as mentioned in a specification and also color, font, element size and other similar stuff match design.

Functional testing: the process of quality assurance of a product that assumes the testing of the functions/functionalities of component or system in general, according to specification requirements.

E2E testing: it needs for identifying system dependencies and ensuring that the right information is passed through multiple components and systems.

like image 148
Oleg Ustimenko Avatar answered Sep 20 '22 18:09

Oleg Ustimenko


Please make yourself familiar with Hermetic Testing.

hermetic-testing

You have two ways to access systems in your test:

  1. You have a local service. For example an in memory database instead of the real database
  2. You mock the system.

For me UI-tests work like in above picture: All tests use local resources. They are hermetic.

But End-to-end Tests involve other systems. Example: Your SUT (system under test) creates an email. You want to be sure that this email gets send to a server and later arrives in an Inbox. For me this contradicts with "separation of concerns". This mixes two distinct topics. First: Your application creates an email and sends it to an server. This could be handled with a mocked mail server. But end-to-end tests mix it with a second concern: You want the mail server to be alive and receive and forward mails correctly. This is not software testing, this is monitoring.

My advice: Do hermetic UI-Testing of code and do check/monitor your production system. But don't mix both concepts. I think for small environments end-to-end-tests are not needed.

like image 34
guettli Avatar answered Sep 23 '22 18:09

guettli