Sunday, August 5, 2012

Seema Sonkiya: Agile Testing Team

Article based on agile SCRUM methodology recommendation of project test team management, this article gives insight in need of integration of test team into the project.
When project is initiated, identified team members are acquired and involved in project planning. Traditional software development team consider test team as an independent entity but when we follow agile development methodology test team is an integral part of the project along with development team.
Project team is defined in SCRUM agile methodology as a cross functional members who do actual analysis, design, construction, testing and delivery.
Product Owner is accountable to define product requirements with the help of project team members. Conformance to requirements is defined as Quality so Product Owner can be viewed as QA who drive the team to ensure that team deliver the value to business.
A value is delivered when requirements are defined for both ‘Fitness for Purpose’ and ‘Fitness for Use’ (definition of ‘Fitness for Purpose’ and ‘Fitness for Use’ can be referred in http://seema-sonkiya.blogspot.in/2012/04/seema-sonkiya-pmp-project-quality.html ) again prove that accountability function of Product Owner consider them as QA of the product for the project.
Agile testing team comprise with Product Owner, development team members who write and execute unit test cases, pair programmer (may be assigned one for 2-3 developers for efficient use of resources) who is accountable to ensure coding standard and responsible for continuous integration to avoid compatibility and interfacing problems, test team members (ideally assign one for approx 3 developers) who define acceptance test cases with the help of project development team members and execute the same.
Traditionally test team members report to project manager but in case of agile, immediate reporting person is product owner. Testers are integral part of an agile development team.
Why integration of testers with the development team:
1.       Agile testers are not independent or belong to separate department. Testing focus is to deliver a product, service or result that is ‘Fit for Use’ at the end of each sprint and to achieve ‘done’ state of each use case without any technical obligation.  This is the reason Project testers work with developers and accountable to Product Owner or business. Agile testers contribute in ‘done’ state of backlog items.
2.       Agile testers review unit test cases. Developers mainly focus on success scenarios. Testers review unit test cases for high risk items. In this way test cases improved and development team and testers supplement each other.
3.       Testers know which unit test cases are executed and focus on high level testing.
4.       Testers play an important role in automated testing in addition to acceptance tests. In order to perform effective testing for a sprint, agile testers required to understand the design of stories, architecture of project and code level aspects to lead the automation.
5.       Automation is very important aspect, to achieve desired agility. Automated development tests, automated acceptance tests and continuous integration is performed. Refactoring can introduce problems so automated framework is needed that can lead to desired quality levels.
6.       Testing of non-functional aspects are integrated in sprint, if not possible then separate sprint is planned for the same. Series of relevant acceptance tests are performed by the agile testers in both cases to ensure solution is working after identified problem fixes.
7.       Agile testing is continuous and backlog items may be in different stage as design and constructions are interleaved. Some items may be in design, some in construction and some may achieved ‘done’ state this leads need of agile testers as integral part of project team.
8.       New test cases are specified for the detected defects and these are included in the automated test suit
9.       Agile emphasize to complete one user story in it’s entirely by a developer before staring another this leads to need of frequent conversation in developer and agile tester.
10.   Agile team members are co-located whenever possible. When a defect is encountered by agile testers, face to face conversation is performed with relevant developer. The agile tester should feel free to walk over to the developer and explain / demonstrate the issue as soon as it is. Again, as the top priority, the developer should drop whatever they were previously doing and immediately jump on the problem. In this situation, there really isn’t any requirement for any documentation as the verbal discussion suffices assuming the issue is immediately resolved and verified. A summary of issue and resolution confirmation may be entered.
11.   If the developer is resolving previous issue then details of issue need to be captured for later discussion.

Agile testers are integral part of development team to support agile practices and to contribute in conformance to requirements for both functional and non functional requirements.
Seema Sonkiya