If you’ve tried to develop a more or less complex software product, you should’ve encountered the situations when, for some reason, it is impossible to automate the End-to-End (E2E) tests for your software. These reasons are many, let’s name a couple of them:
The software doesn’t have (or just can’t have, for security reasons) an API you can hook up with.
The software is legacy and was developed back in times when no one bothered with the tests’ automation.
The software’s testing involves some third-party software (antivirus, for instance).
The software must be tested under numerous target operating systems.