Recently I saw on one of Linkedin’s software testing groups a post that said Yahoo no longer does software testing. The headline was meant to grab the attention of the group in a controversial way so as to guarantee a lot of discussion. And, it did. So what do they do? I asked as I started reading the article. It turns out that Yahoo now do continuous integration and continuous deployment (CI/CD) instead of software testing. The job of testing is now done by developers writing unit tests in a DevOps process and formal testing is no longer a specific phase or activity in their sprint planning. Clearly this is bullshit. No company as hardcore tech as Yahoo would release anything to production without it undergoing some type of testing. After a few exchanges with the original author, he did admit that Yahoo still do testing, but it’s not done at the end of a sprint, it’s done all the time as part of their hyper fantastic CI/CD process.
This isn’t the first time that I had heard someone evangelising CI/CD like it was some new magic bullet that could solve all the world’s software release problems. Nor the first time someone had suggested CI/CD does away with the need for software testing. But does it really, when you get right down to it?
CI/CD done as part of a full devops process is really nothing more than a very rapid development cycle measured in hours. The people involved can wear multiple technical hats including business analyst, developer, and sysadmin. However as a methodology it doesn’t prevent bugs getting into software. But it does make it fast to identify them, if you have the right people and process. Testers can and do work in a CI/CD environment. They are multi-skilled individuals capable of undertaking manual functional testing on new features that come straight out of development, and building automated test suites once the features have stabilised. These testers will be involved alongside the other core technical team from day-1 of whatever project plan in place. But they aren’t your grandfather’s software testers.
Clearly the role of web services software testing is evolving as software development methodologies evolve, as do the people that take on the job. 5 years ago functional testing was a job unto itself, and you could make a career as a functional tester without ever having to touch a line of code (let alone write one yourself). But software development is more and more geared towards: faster-better-cheaper. The internet and the always-on-demand culture it has created means something new has to be released very nearly daily, or your site visitors lose interest. The most in-demand test professionals will be the ones that integrate with a development team and have some overlap with them. This means, having the ability to talk tech with the DevOps team and understand what they are doing, setting up automated test tools from internet-download to deployment on the test environment directly, (maybe even set up the test environment if needs be), perform all the testing work that is the job and do it all to high levels of industry best practice standards. This new test professional will be technical themselves and most likely have spent time in the trenches of a software project as a developer or sysadmin, and understands technical architectures and environments.
Does this mean the end of the pure functional tester? Probably not, but I believe over time it will become a niche role better suited to a big team with tightly boxed areas of responsibility where one person does one thing only. For the tester working in a small team they will most definitely need to be a jack-of-all-trades, with mastery to be learned as required. This is why we are now seeing such job advertisements as Developer-in-test which definitely didn’t exist 5 years ago.
Which brings me back – finally – to Yahoo. You know that these guys know software development, and for sure they will be using the very best process known today. That they are using CI/CD to get the most amount of speed possible for new feature releases does not mean they are not testing. The CI/CD DevOps process is all about continuous testing, rather than the absence of testing. As code is checked-in to the code base, testing is triggered, and bugs will be found, reported, and fed back into development. It will all look very seamless and on a project plan the absence of a test phase will be very noticeable, but you can be sure testing is absolutely being done.