E2E Testing

What is E2E Testing?

Nowadays, software systems are getting more complex and more dependent on other third-party software. If for some reason, any of the internal parts fails, the whole system may fail which can be costly. Developers and software testers in the organization need to put more time into defects solving which can directly affect the project timelapse. That’s why companies perform so-called E2E testing. End-to-End testing is a software testing method that tests the whole system from start to end in order to confirm that the flow of the software works as expected. It is used when all the integrated parts of the software are combined.

The main purpose of performing E2E testing is to test the application from a real user standpoint in order to see how the system would be used and tested when it’s released to production. This allows validation of the system under test and it’s integrated parts and components.

E2E Process

Take a look at the E2E process in the diagram.

E2E Testing Process

You can notice that it consists of several steps including:

  • E2E requirements are examined and analyzed (environment setup, framework setup, business cases, roles in the application)
  • Designing the E2E structure and test methodology
  • Coding, developing and design
  • E2E testing covering positive and negative scenarios throughout the whole system

E2E Testing Example

You will get the idea behind this with a little example.

Let’s say we have to test a scenario where we have to submit a contact form in order to see if it works.

Simple Submit Form

The scenario can be divided into several steps:

  1. Navigate to https://www.qamind.com
  2. Go to the get in touch page
  3. Fill out the mandatory fields
    • First Name
    • Last Name
    • Email
    • Comment or Message
  4. Click the submit button
  5. Validate that successfully submitted form message is displayed

This is a simple submit form verification scenario where every field in the contact form has a different purpose and it is stored in the system.

E2E Categories

Three key points that every E2E test must include:

  • User Actions
    • Define the user action on the application
  • Conditions
    • Specific conditions to be met for every user action
  • Test Cases
    • Create as much test cases as you can to cover that functionality of that user action

You need to identify all the user actions that you want to perform and the relations between them as well as keeping track of all actions performed. Any internal or external factor that can affect the user action must be included in the conditions category so that we can have a better set of test cases to cover the application under test.

E2E Testing Tools

Protractor

Protractor is an end-to-end test framework for Angular and AngularJS applications. It runs tests against your application in a real browser. It is built on top of WebDriverJS and offers manipulation with angular elements with no setup effort.

Automatically waits for the next step of the test to be executed after the previous pending task is finished, therefore not need to put any waits or sleeps to sync your test with the browser.

Cypress

Cypress is a great end-to-end testing framework that focuses on doing the e2e testing really well. It is not based on Selenium as most of the testing tools are. Its architecture allows you to run the same run-loop as your application runs.

It is compatible with any other framework or website, it is much faster and the setup is really easy so you don’t need to install 15 separate tools and libraries. Basically it is all in one tool.

Nightwatch.js

Nightwatch.js is an integrated e2e testing tool for web applications written in Node.js. It is based on the W3C WebDriver API for DOM elements manipulation. It has a built-in test runner, easy to extend commands assertions, supports the page object model, and can be integrated into your CI process.

Benefits of E2E Testing

This type of testing offers great benefits including cost-reducing, detecting bugs, reducing time to go to production, build more confidence for the quality of the application, increasing test coverage, etc.

Everyone sees the benefit of this type of testing. Developers benefit from it because they can see the whole work coupled together functioning as it should be. Testers see the benefit from it because they test the system as a real-user would, which can increase their level of confidence in the application.

Conclusion

In software companies, E2E Testing is the testing method that verifies software functionality together with its sub-systems. However, there are challenges. One is to have knowledge of the whole system in order to be able to cover more scenarios as you possibly could. The other, to have an end-user mindest in order to know how a real user would use this application. Bear in mind that E2E testing can be performed automatically as well but the cost of automating test cases is too high and cannot be offered by every company. Manual or automated, it would still achieve the overall application quality end goal.

If you have any questions,please let me know.


Share this post