Friday, 14 August 2020

Evolution of Testers and Continuous Learning


I would like to start by quoting Charles Darwin a famous English naturalist who came up with the theory of natural selection and how this drives the evolution of new species.

"Darwin's revolutionary theory was that new species arise naturally, by a process of evolution, rather than having been created and evolution is a change which is inherited over the time through the process of natural selection. Natural selection is a process where organisms that are better adapted to an environment will survive and reproduce."

"Darwin is associated with the term 'survival of the fittest', which describes how natural selection works. Individual organisms in an environment are 'selected for'. This means that only the organisms that have the best characteristics for that particular environment will survive. If they survive then they are the 'fittest' for this environment, they reproduce and pass on the advantageous characteristics to their offspring."

Coming from a testing background and having worked with different Software Development cycles, I have noticed that the role of a tester in software development life cycle has been changing and the current situation of a tester is more relatable to the statements from Darwin's theory. Before getting into evolution or evolving testers let see how they were placed in different Life cycles. 

Waterfall model 

This is a classic software life cycle model developing a system with linear and sequential approach moving from one phase to other in a downward fashion. If we look at the Waterfall model it has a clear distinction of departments 'Business Analysts', 'Developers', 'Testers' and 'Operations' and when it comes to testing due to the nature of the model testers had a fair amount of time to design the tests and wait for the product to be delivered for testing. Although in the majority of the cases time got crushed by the time product is handed over to test and testing seemed like a bottleneck. The scope for Automation in this process was very minimal as there is no visibility of the product until it is passed on to Test team after stepping through different stages and any tests created based on documentation had very little chances of running successfully in the first attempt which brings in a lot of maintenance work, and so there was a lot of manual testing with big test teams involved to deliver the product under pressure. With all this effort the final product sometimes doesn't meet the customer expectations and it's not the fault of testing or any other department it's the ever-changing needs and lacking the flexibility to incorporate those in the life cycle and this led to a new development model. 


Agile / Scrum model

Agile has introduced 'Cross-functional', 'Self-Organising' teams divided into 3 main roles 'Product Owner', 'Scrum Master', 'Development Team' with main focus on collaboration, quick releases and customer feedback in this process, it's all 'One Team'. Testing still plays a crucial role within the Development team working in more collaboration with all the members involved in delivering the product. With the focus on the small and quick releases, the feedback cycle is much shorter and testers need to keep up with the pace to test the changes using the right techniques and tools which help achieve the objective, this has introduced the need for automation to get through the repetitive test tasks much faster and focus on the new features and provide feedback as quickly as possible. With a time block set for each release, testers were able to mix manual and automation testing techniques in their approach. This process has also slowly introduced a new role into the 'Development Team' to reduce the gap between the tester and developers and that is a combination of both 'SDET' (Software Development Engineer in Test). Agile focuses on alignment between the development team and business for fast delivery leaving a gap in collaborating with Ops and configuration management teams and this led to DevOps. 


DevOps

DevOps it's a combination of 'Development' and 'Operations', it builds the gap between both the teams aiming at faster delivery by using automation via various tools and applications. The nature of DevOps has raised the need for more automation, demand for a resource with more cross-functional skills, able to understand the toolsets, pipelines. Although the roles of a developer or tester or operations perform what they are expected to but the approach to their functions has changed, especially when we talk about testers who have been writing and executing manual tests find this transition as a big leap into space where finding and establishing their identity questions the existence of their role as typical 'Tester'. 


Let's see how this evolution of Development life cycles changed the role and approach in the testing world. The picture below shows a tester's role and approach in each life cycle model and you can notice that the demand for a tester with only manual testing skills has reduced quite significantly and with the evolution of DevOps, there is an increase of demand for Automation with more advanced skills to understand the pipelines, read, write the code and assist developers focussing on the exact problem by reducing the feedback loop on code changes.


What this means for a 'Tester' is to emerge as 'Engineers' be able to Automate, read and write code to test more effectively making use of tools in place and this is where I see Darwin's statements very relevant to how testing is evolving over the years adapting to changes in the technology, environment, customer needs and this evolution is not just natural but it is out of the need for change, need for improvement, need for collaboration and need for speed. 



There is quite a lot to take in as with the choice of the tools and technology available out there it could be quite confusing to choose one particular learning path to be on top of these continuously evolving software development process but it is important to keep in mind that testing is still crucial in any development process, testing skills are still unique, we (as a tester myself) need to take on a 'Continuous Learning' path to adapt to the evolving changes, this will increase the value as an individual in any team and makes you stand out in the crowd, there will always be new trends and new opportunities ( Checkout my article on Trends & Opportunities) and learning is endless and all we need is to challenge ourselves to keep up to date and relevant.

Credits: https://www.smithsonianmag.com/science-nature/the-evolution-of-charles-darwin-110234034/ / https://www.bbc.co.uk/bitesize/guides/zt4f8mn/revision/3