In this paper, Baiju Joseph argues that in order to build an effective testing team for distributed agile we need to focus on individuals and interactions over processes and tools. Based on the author's experience in setting up distributed agile testing teams, he lists numerous criteria that must be met in order to reach this goal.
In today's fast changing world we cannot escape from the fact that business requirements change very often. If we use the predictive, heavy weight methodologies for developing software it is very difficult to incorporate the changing business needs of our customers. Light weight software development methodologies, which appeared in the late nineties "embrace changes". The disciplined adaptive nature of these methodologies helps us to easily accommodate changing business needs of our customers, even in later part of the development cycle.
Many software development organizations in India have started moving towards agile development methodologies as it helps the organizations to respond to changing business environments very quickly and provide better customer satisfaction. In today’s business environment it is not really the big that win the battles rather it's the fast that win the battles over the slow. Time to market is very important in today's fast changing world. Agile development helps us to deliver the value to the customer rapidly through a divide and conquer approach and prioritization. The right 20% of effort will yield 80% of the value, so we do a lot of those in agile development and extreme testing.
Introduction to Agile
In Extreme Programming (XP) the whole development is divided into different increments/milestones. Top priority user stories are covered in the initial increments. In XP the unit tests are developed first. Then the code is written to ensure that 100% of unit tests pass. This is done in an incremental way. The developers write unit tests and 100% of Unit tests are automated. This will help in executing the tests repeatedly and also simplify the reporting of results.
There is one more important type of testing involved in Extreme Testing, which is called Acceptance Test/Customer Test. These tests are written, based on User stories. They are formal tests conducted to determine whether or not a system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system. Test engineers write the Acceptance tests with the help of customers. In some organizations customers themselves write the acceptance tests for some of the top priority features. It is very important to understand the customer perspectives while writing the acceptance tests. The big mountain acceptance tests are automated using an appropriate tool and executed on all the builds. Extreme testing creates confidence that code is complete and it works; catches integration defects when they are first created, and, most importantly, provides confidence that a maintenance change did not introduce a regression error.
Extreme testing is the best way to survive extreme change. Basic values like open communication, tight feedback loop in the features teams, simplicity and courage are the key in extreme testing. On an XP project, Testing isn’t a final hurdle it is a journey along the full development cycle.
Areas to Focus
While building an Extreme Testing team in India we need to consider multiple factors. If we don't build the right test team for Agile it is going to be very tough to get the results. Open Communication is one of the key values in agile development.
Individuals and Interactions
If your existing team is to be transformed into an agile testing team the most important step is to evangelize the agile concepts and benefits in your team. Management and Development teams also need to be educated on the ROI(Return On Investment). When we were implementing Agile in our organization we used to conduct talks by practitioners on agile, play agile dramas depicting the outcome from monumental methodologies and light methodologies. Once the platform is set we can start implementing