Satya is Senior Manager in Testing with Capgemini. He is having extensive industry experience in Test Automation, Delivery of large scale projects, Agile testing delivery and testing pre-sales.
“Agile Testing is about focusing on exploration, discovery, investigation, learning and reporting rather than defining process and writing heavy documentation” - Bret Pettichord
Changes are inevitable. It is an eternal truth. Our software world too could not depart from it. In large scale deployments for multichannel business environments, customers are highly focused on time to market. Thus practicing and embracing Agile as a tool is becoming increasingly popular as customers are highly benefited from the quick turnaround time for software implementations.
Working as a cohesive team being the underlying concept of Agile ways of working; facilitates, “continuous integration” between “automated tests” and code, in every code deployment to pre-production environment. This ensures Product Owner gets a “quick feedback” throughout the journey and also re-iterates the quality of deployment at all intervals of “seamless integrated quality deployments”.
This whitepaper illustrates a proposed customized Agile Testing solution Methodology which helped the customer delivering high quality and frequent deployments in a short span of time for a large scale enterprise deployment.
The discussed customer needed to deploy its multichannel solution of various markets within a year. The delivery model was decided to be Agile, Scrum. For the rollout, this customer was looking at seamless incremental deliveries across locales, providing quicker solutions to the end users by matured Agile engineering test methodology, strategy, tools, and best engineering practices from Agile experts.
Upon detailed analysis it was felt the following are the critical success factors that needed to be taken care while building a robust Agile testing framework.
In shaping up the complete solution that incrementally got developed and deployed in production on a monthly basis, solution for the Agile Test Model was derived based on the important functions of People, Product, Automation and Test in a Scrum model which has multiple scrum teams working on various systems. These functions provide a customized approach to be adopted keeping in mind all the core Agile principles.
The generic benefits of Agile are known to everyone. However, the customized approach that was adopted here has following calculated and proven benefits for the customer.
All framework and solution has its own limitation. The proposed solution for this customer was by keeping the entire test organization in mind. The limitation was only observed at a micro level than in the macro-level. The proposed solution has more benefit than limitation. Some of the limitations are given below.
The proposed solution is unique as opposed to generic Agile Scrum and other Scrum framework followed by different teams. Some of the unique solution offerings are noted below.
Agile Testers at Sprint level
Agile Tester participates in planning activities in the sprint and helps the team in elaborating requirements by White boarding and developing Acceptance Criteria, also ensures to build a text fixture with a component level automated test for the Acceptance test functions along the lines of the developed piece of code. Every piece of code checked in by the developer should have 100% Unit tested and all automated tests of the agile tester to be run along with the daily build process.
Agile testers perform ‘exploratory tests’ for non automatable functionality if any, focusing on exploration, discovery, investigation, learning and reporting rather than defining the process and writing heavy documentations. At this end juncture of sprint, agile tester helps the team to provide customer, a demo of the potentially shippable software thus marking the end of the sprint
Agile Testers at Scrum of Scrum level
An independent team of testers validate the product from the end to end functionality perspective which takes care of all the overlapping tasks like Performance Testing, System Integration Testing and Non Functional Testing( Cross Browser, Usablity, Accesiblity Etc). They also get involved in building and continuously enhance Test Framework with reusable test fixtures, classes and libraries, develop Test Approaches and adopt accelerators for new areas of technology in the testing. This team also set best practices in Agile testing in terms of process, Technology and tools etc. This team ensures that there are end to end test scripts build and executed in various environment as agreed and promoted in stages ( Ex: UAT->Production)
Embracing Agile as a delivery model has become ‘essential’ as opposed to ‘optional’. The adoption of a robust agile process framework provides a definite advantage to release the product in time with a better quality and instigates all testers to transform their skill as per the agile demand. Need for time to market in a competitive environment where small releases to production with more business value is certainly a deal breaker compared to a big bang traditional release.