5 Tips for Effective End-to-End Tests

Mohit Mair
The Startup
Published in
2 min readAug 22, 2020

--

End-to-end testing in IT projects is agreeably a high-value proposition. With incremental software development and micro-features being released frequently & continuously, it's important to ensure that all components in the architecture logically amalgamate, to fulfil the ultimate end-purpose of the application, at all times.

On the other hand, end-to-end testing has also attracted counter opinions, some even saying its difficult to achieve or is not sustainable, probably based on their wane prior experience.

So, here are 5 simple tips that will help in making your end-to-end testing effective, value-based and sustainable.

1. Define “end-to-end”.

  • Clearly define the purpose & outcome, start-states, end-states and verification points.
  • Include not just business flows, but technical processes and data flows as well.
  • Emphasise on breadth-wise test coverage, cutting across the UI, features, modules, systems and sometimes infrastructure as well. (depth-wise coverage is anyways taken care by functional tests)
  • Keep the number limited and value high.

2. Watch your assertions!

  • Don’t over-crowd assertions. Hold the temptation to validate each and every step, rather, focus on integration “weak-points” where data or process hand-over may be vulnerable and test responsibilities overlap. Identify and cover all integration “Blind-spots” .
  • Don’t repeat functional validations.
  • Validate the end-state, reconciling all the way from the start-state, traversing through all key integration stages.

3. Align test-data.

  • Start with a fresh dataset every time and use the same dataset along the course of the test. This will ensure end-to-end data consistency.
  • Its a no brainer never to use mocks and stubs in end-to-end tests.
  • Keep the test-data aligned throughout and dont break process-data relationship during the run.

4. Mix application layers.

  • Dont limit end-to-end test to just front-end. Orchestrate the flow across other application layers e.g front-end → web-services → database → legacy systems → any backend cron jobs, schedulers etc. along the way.

5. Make them continuous.

  • Don’t wait to run end-to-end tests in the later stage of SDLC.
  • Automate and run them continuously. Embed into CI/CD process, schedule overnight, etc. But keep them running. Not only will this ensure end-to-end state is upright at all times, but, will also not let your tests become obsolete.
  • Re-purpose functional test scripts and stitch them to create end-to-end flows. By doing this, development effort is not duplicated and the maintenance will automatically be taken care of.

All the best!

--

--

Mohit Mair
The Startup

IT professional, photography enthusiast, atypical of sorts.