I remember back around 2015 when articles like this one started popping out, and the buzz that it caused to the QA community.
Am I still having a job? Is anybody going to hire manual testers yet? Do I need to learn to code? Lots of talks, presentations and blog articles saying that “Yes, it’s dead!” and many others saying “No way it is!”.
So here we are in 2020, and numerous companies still have the role of a manual tester. For me, it’s never going to die, since we’re ever going to have companies (mostly the older ones, though) that doesn’t want to change the way they work. Besides that, we always need some manual exploratory testing, even if you automate “everything”.
But this is not what I want to discuss today, so let’s say that we automate everything 😄.
We live in a world where a critical point in software development is to get fast feedback about the behaviour of your applications and services, you want to deploy changes as often as possible, and you want everything working as expected.
We are now in something that we can call a “decoupling hype”, micro-services, micro-frontends, micro-everything to make sure that you split your applications and services into small, stable, reliable and testable pieces. It helps us in testing because it’s not needed to test everything at once, we can mock data and services to examine the “micro”, it also makes our tests more stable with fewer dependencies.
So you can mock your data and test your service, mock your service and render your GUI and make sure that it’s working in independent pipelines, without depending on the other’s code. It gives you fast feedback about what you’re developing.
That said, after investigating on faster ways to test the GUI, remembering the famous test automation pyramid and also a quote from the Agile Testing Bible from Lisa Crispin and Janet Gregory: “Push tests to lower levels whenever possible”, the question just came to my mind. Are GUI tests (i.e. Appium, selenium tools, etc.) dead?
Everybody knows that GUI tools that use drivers are more brittle, requires more maintenance effort and takes a lot more time to run than any other kind of automated test, it needs the applications running as long as their services.
In the other hand of the micro-things, we have more integration to test, so we still need to make sure that everything is working together, even after thoroughly testing each part.
Are we going to reach a level where we trust that if we test it as much as we can at a lower level, without literally running the application, everything is going to work together later on? How can we make sure about it? How to trust it?
I would say that GUI tests, just like manual tests, are not dead. We still need them to perform the same actions that our users are going to do, in a running application that uses real services, databases and clients, it brings us enough confidence to deliver it. However, I believe that we’re also not far from having something so reliable in the lower levels that we can get rid of our GUI tests!
And you? What do you think about it? If you test 100% of your services and applications separately, do you still need to run everything together somewhere and test it? How are you testing your code? Do you rely on data and service mocks? Are you still writing GUI tests? What are you mocking in your tests?
Going further, are those mocked tests responsibility of the developers? If so, are we facing a new “QA is dead”?
Feel free to comment and let’s discuss it!