top of page
Concrete

The Dawn of a New Era

  • Writer: Georgios Kogketsof
    Georgios Kogketsof
  • Dec 21, 2020
  • 3 min read

ree

I read an article the other day, about software testing in the age of machine learning. That triggered me to think about how prepared the software testing community is for what is coming. And by saying how prepared I mean not only skill-wise but also tooling-wise.


I remember a decade ago while I was starting my automation journey, the buzz around Selenium RC and later on about WebDriver and -at the time- decided to follow that path. My coding language of choice was Java and this is how I started building my skills, learning about web element locators, explicit and implicit waits, and finding “by” techniques. Coding skills back then were not an issue, most of the test engineers were using script languages like python, and seniority in coding was not a required skill. Working mostly in a waterfall environment, maintaining test scripts was feasible between releases, so advanced coding skills to design maintainability techniques were not something needed as much.


But this was just the beginning of the journey. Months after developing test scripts, the first problems appeared, mainly due to the overhead of maintaining a large number of test scripts. The solution to overcoming this pitfall was to be a better developer: improve coding skills, learn patterns and evolve both as a tester and — eventually — as a developer. But yet again, shortly after, a new buzz came along: agile and scrum. Shorter releasing cycles and another “new approach” to our test automation cycles.


In tandem, new maintainability techniques emerged, all of them being selenium-centric: most importantly Page objects, a more robust design pattern using abstraction layering. However, yet again, the rationale behind these solutions was the fact that the UI was used as a means to access the software, therefore, the basis to build the tests upon. Do not get me wrong: using UI to implement test cases is the de facto approach to any black-box testing: fill-up the form, submit it, and the back-end will do all the work. No special skills needed since “Selenium is our savior”. But this was a utopia. Systems at the beginning are simple but as they grow, they become more complicated than just “form submission”. This, unfortunately, limits Selenium to an “acceptance UI testing” role. The next step in the testing ecosystem was to use a testing framework tailored to one’s needs. Building a testing framework is a real challenge, as coding techniques needed are forcing automation testers to become more developers than testers.


ree

But now, we slowly realize that we only see the top of the iceberg. Things like machine learning, AI, CI/CD pipelines, and Docker are dragging everyone in, challenging our comfort zones and for one more time, we need to be better coders, be more “developers” or even DevOps. We evolve and improve our tooling: we use Spring-Boot, we create our own annotations, we become independent of TestNG and create what we need and even adopt or create our own reporting tool, but what about Selenium? Should we bring it along? Should we adapt hundreds of tests as we continue using Selenium or is it time for a hard reset to distance our testing from it? Is this “precious” friend a partner to the journey of AI and Machine Learning testing? Can Selenium help us testing microservices or “microsystems”? What about IoT — is Selenium there for us? The answer is not that simple, but indications exist long now. Redesigned UIs using Angular and React may cast the final stone — the transition from framework to the framework has made Selenium a burden.


It is easier to post to the backend like the front end does, without using the constantly changing UI. It is faster and more stable. Now we have the tools and we know how we’ve come a long way.


So, for me, the shine has faded, Selenium usage should be limited to UI and acceptance testing and should be avoided if possible for functional testing. The king is not completely dead, but he has been demoted to a deputy.


The new Era is now, automation testers need to have both development skills to be part of any development team and the mentality of a good tester to prepare the tooling for the emerging technologies. Now it is time for everyone to realize that Selenium won’t be there helping us testing technologies like machine learning, artificial intelligence, and blockchain we need to act fast and be prepared.

 
 
 

Comments


bottom of page