DevOps is a practice of bringing Development and Operations in sync. Now, more software is delivered as a service. Not just that – even Infrastructure (IAAS) and Platform (PAAS) are provided as a service (for example, Amazon Web Services) creating a whole new paradigm of Cloud Computing. This has resulted in much churn in software development team composition, practices and responsibilities.
Before the advent of Cloud Computing, the software world had more or less settled in typical roles of Product, Development and QA; and once software is burnt on physical medium, the team moved on. Then, there was a scaled down Sustained Engineering team providing Service Packs and Hotfixes. At those times, the “Operations” happen at the customer’s premises for enterprise software or the user would do it by installing the software from a physical medium.
Now things have changed. The software is provided as a service and the organization developing it is also hosting and maintaining it. So, the “Operations” has moved in-house. The Software Development team is expected to not just develop software, but even deploy, monitor and maintain it. This has made the team composition change and become cross-functional, i.e. not just have people required for development but also people for UI/UX and Operations.
Note that I haven’t yet mentioned QA or Test engineers as I was considering them as part of the development. But let’s talk about it now. Earlier development comprised of developers who wrote production code, and testers who tested the software manually and sometimes automated tests. Mostly they worked in silos; and, due to less collaboration quality issues, they used to surface as it was not possible to test each and every combination. To increase test coverage, more and more people were employed to do QA who would painstakingly read specification, write test cases, execute them over and over. Due to this, there is creation of sub-industry within the Software Development industry called “Testing Industry”, and after developers, the largest numbers of people employed were testers.
Due to several factors (which are out of scope here), testers became comfortable in their roles. Now with advent of Cloud Computing, Agile, DevOps and Automation, they are suddenly rattled…instead of adding more QA people, they are being reduced in order to cut costs. Teams just make do with automation engineers. Everybody wants automation and those are the skills everybody is looking for.
Let’s understand what has happened here. As mentioned earlier, Development, QA and Operations were always there–they were just disconnected. Now, they are connected and we have concepts such as Continuous Integration, Testing & Deployment – CI, CD, CID, CIT (whatever abbreviation we may call it). Now it is possible to quickly deploy the software, test it and roll it out to production. Does that reduce amount of testing required to roll out a product? The answer is a big NO. Does it alter the way software to be tested? YES.
Today’s customer, be it people at large or enterprises, are ever more conscious of the quality of the software products they use. No software shop can survive ignoring quality of their products as there is increased competition.
Let’s look at the way software testing is altered. With demands of quality and quick release to market, the emphasis is on delegating as much of the testing as possible to machines, i.e. automation. For that, we need to write a substantial amount of code to test all the possibilities at three broad levels – unit, integration and functional. As we are going to depend on these tests for mostly regression testing, we need to write them with almost similar vigour as production code. Now, who writes these tests? It could be anyone — developer or tester. Then, what will be the difference between them? Not much. The distinction will get blurred and what will remain is just “engineers”.
This situation is worrisome for those who have not been able to upgrade themselves to embrace this new order. Certainly this requires effort from the individual, and from the organization and community to support it. Not just software industry, there is always disruption going on in some industry where new order is taking over the old order.
Having said that, does it mean that its end of the road for testers who can’t code or don’t have the temperament? Absolutely NOT. Automated tests can only “check” those cases that are coded and mostly “machine understandable”, i.e., return a value of a function call ,or whether a text or image is appearing in a particular hierarchy. Computers are yet to become intelligent enough to automate human vision or relating several past experiences with the current one. There will always be a need for testers who test software creatively, i.e., employing contexts, strategies, techniques and tools at their disposal and with empathy for users.
Overall, DevOps has put the bar for testing a tad higher and made it visible–which is a good thing. The “Testing Industry” would amalgamate back to “Software Industry” and probably there would be only high-quality “Engineers” left.
Ask us a question or talk to one of our experts. Email us or call us at +1.469.374.0500.