In addition, because the entire team meets every day (development, QA, product management, etc) there are more opportunities for collaboration and more view points towards performing a particular task.
Agile Development › Overview › Terminology › Team structure › Phases › Test Driven Development • Testing in Agile environment • Summary
Agile Software Development is amethodology for undertaking softwaredevelopment projects in which incrementalfunctionality is released in smaller cycles,and work is performed in a highlycollaborative manner by self-organizingteams that embrace and adapt changesto ensure that customer’s needs are trulymet.
The idea behind the Agile approach is that instead of building a release that is huge in functionality (and often late to market), an organization would adapt to dynamic changing conditions by breaking a release into smaller shorter cycles of 1 to 6 weeks
Each cycle is called an Iteration, or Sprint, and it’s almost like a miniature software project of its own, because it includes all of the tasks necessary to release the incremental new functionality. In theory, at the end of each sprint, the product should be ready for a release. For example a sprint may range from 4-5 weeks.
Agile methodology emphasizes real-time communication, preferably face-to-face, versus written documents and rigid processes. In addition, one of the most broadly applicable techniques introduced by the agile processes is to express product requirements in the form of User stories. Each User story has various fields including an “actor”, a “goal” or task that they need to perform, an explanation of “why” it is needed and the associated value, and a corresponding “priority”.
• Most agile teams include all the people necessary to release software. At a minimum, this includes programmers and the group or team they are developing the application for, often customers. Typically an agile team will also include a Scrum Master, testers, interaction designers, technical writers, and managers.• Usually a scrum project has a team of Scrum master, Solution designer, Developer and tester governed by Business Ops and Market analysis team.
• Scrum is a project management methodology to facilitate agile software development, and enable the creation of self-organizing agile teams.• Scrum Master is like a traditional project manager in the sense that he/she oversees the centralization of team communication, requirements, schedules and progress. But it is also very different because his/her main responsibility is to facilitate team communications and provide guidance and coaching, while removing impediments to the ability of the team to deliver its goals.
Agile can be customized to fit eachcorporation in terms of size, iteration time,experience, etc, but typically an agileproject will have these phases andmilestones:› Kickoff meeting› Sprint/iteration planning› Scrum meetings› Final acceptance meeting
Although this may seem routine for anyproject, with an agile development projectthis is a key element for getting the projectlaunched. The goal of this meeting is to geteverybody on the team together to reviewthe product backlog (which is the master listof all requirements desired in the productthat the product owner has drafted in theform of user stories)
• Team collectively decides the sprint goal and sprint backlog (list of prioritized work to be done for that particular sprint).• While the team is collectively creating the sprint backlog, stories need to be broken into either sub-stories or smaller tasks. On an agile team all the members jointly associate level of difficulty to specific tasks, they can remove or add additional stories and/or tasks, and tasks are distributed among the team on a per volunteers basis.
Unlike a traditional project manager function, the Scrum Master role in this meeting is to maintain the backlog list in the meeting based on team feedback and consensus, make sure that nobody is volunteering for too many tasks to the point of overload, and facilitate the process of building personal commitment to the team.
Example Product backlog is attached below for reference. OTC Ticketing Project (OP681.SWR300) 100 Sprint 5 Portal Contingency Product Backlog 77 Sprint 4 MMS? v.12/10/2010 Baltic Option 1 Option 3 Bus Sprint Sprint Portal Access Direct Access for How will this user story ID Ops Priority User Story (Planned) (Identified) for Internal & Internal Users & be delivered? ID External Users External Users 1. OTC Ticketing Application 1.1 N/a 1 1 0 Sort & Filter Tickets (Server Side) 7 7 Application 1.2 N/a 2 2 1 Sort & Filter Strips (Server Side) 7 7 Application 1.3 N/a 3 1 0 Broker Entry of Tickets 6 6 Application 1.4 N/a 4 2 1 Broker Entry of Strips 9 9 Application 1.5 N/a 5 1 0 Apply Filter Criteria & Display Results for Tickets 7 7 Application 1.6 N/a 6 2 1 Apply Filter Criteria & Display Results for Strips 7 7 Application 1.7 N/a 7 1 0 Apply Sort Criteria & View Ticket Screen for Tickets 2 2 Application 1.8 N/a 8 2 1 Apply Sort Criteria & View Ticket Screen for Strips 2 2 Application 1.13 N/a 9 1 0 Tickets Colour Coded by Status 4 4 Application 1.16 N/a 10 1 0 Broker Ability to View Buyer & Seller Status of Ticket 6 6 Application 1.17 N/a 11 2 1 Broker Ability to View Buyer & Seller Status of Strips 6 6 Application 1.21 32 12 1 0 Ability to Export Tickets from the Ticket View Screen 2 2 Application 1.22 32 13 2 1 Ability to Export Strips from the Ticket View Screen 2 2 Application 1.30 N/a 14 2 1 Member Ability to View Strips as a Single Ticket 8 8 Application 1.14 N/a 15 3 0 Member Ability to Manually Accept & Reject Tickets 6 6 Application 1.15 N/a 16 3 1 Member Ability to Manually Accept & Reject Strips 6 6 Application 1.31 N/a 17 3 0 Ticket Release 6 6 Application 1.32 N/a 18 3 0 Ticket Status Update 6 6 Application 1.18 N/a 19 3 0 Option to Cancel Tickets that have not yet been Accepted 6 6 Application 1.11 2 20 3 0 Super User Viewing all Tickets for all Members 4 4 Application 1.12 2 21 3 1 Super User Viewing all Strips for all Members 4 4 Application 1.19 4 22 3 0 Ability to Upload a File of Tickets & Highlight Invalid Tickets 9 9 Application 1.20 4 23 3 1 Ability to Upload a File of Strips & Highlight Invalid Strips 9 9 Application 1.37 N/a 24 4 1 Detect Large Price Variance 8 8 Application 1.29 N/a 25 4 1 LCH Ability to Set Product Based Permissions on Accounts for Members 7 7 Application 1.40 N/a 27 4 3 Seasons for Coal 7 7 Application
• Scrum meetings will be set on a daily basis. Ideally 10-15 minutes. The objective is to go around so each team member can answer 3 questions: – what have I accomplished since the last meeting (developed, tested, written, etc) ? – what will I be working on next ? – what are the problems, if any, preventing me from accomplishing my goals. These meetings are very important to make sure that the team moves towards achieving their sprint goal, or adapts/evolves and changes priorities and tasks as needed if new stories, impediments or new scenarios are encountered.
At the end of the sprint or iteration, usually a final acceptance meeting takes place, which is typically done by presenting what the team has accomplished, and by delivering a demo to the customer or to a larger audience.
Sample project details 4-6 weeks (Depending on no of user Sprint duration stories) Meeting Cycle DurationScrum Daily 10 - 15 minPrioritization meeting (Prioritiseuser stories for coming sprint 4 Weeks 2 hrsShow & Tell (Demo of completedsprint) 4 Weeks 2 hrs
Test-Driven Development (TDD) is a novel approach to software engineering that consists of short development iterations where the test case(s) covering a new functionality are written first. The implementation code necessary to pass the tests is implemented afterwards then tested against the test cases. Defects are fixed and components are factored to accommodate changes.
In this approach, writing the code is done with a greedy approach, i.e. writing just enough to make tests pass, and the coding per TDD cycle is usually only a one-to-atmost-few short method, functions or objects that is called by the new test, i.e. small increments of code.
Test-Driven Development can be implemented at several levels: › Basic cycle which covers the generation of unit test cases, implementation, build and Refactoring. › Comprehensive development process which extends the methodology to overall black box testing scripts, including performance, scalability and security testing. › Agile process such as SCRUM
(Top 3 things a QA professional should expect when an organization adoptsAgile/Scrum development techniques)
• QA team are involved in the project from the start – along with their development counterparts--, and they have access to the same information about product requirements and customer needs at the same time.• This participation from the onset, combined with the fact that development and QA are part now of the same agile team, that they get together on a daily basis, and that they have full visibility into the tasks that each other is performing towards the overall success of the sprint, means better and more frequent communication among themselves.
• Tester should be prepared to “speak up” much more. Agile methodologies are all about building self- organized teams, and the voice of a QA engineer/tester carries the same weight than a developer. In addition, because testers tend to be exceptionally good at clarifying requirements and identifying alternative scenarios, (especially when they have full visibility into product requirements and customer needs), they provide valuable input on design and architectural decisions throughout the project, right from the beginning. And these contributions translate into more respect and appreciation from their development counterparts.
• With shorter development cycles of typically no more than 6 weeks, and with builds being released all the time, testing efforts really need to be optimized as much as possible, because there is not separate test phase as such. One of the ways to achieve this is by leveraging both Exploratory Testing and Automated Testing throughout the project. Exploratory testing will come very handy when looking for bugs, opportunities to improve, and missing features. So tester should plan on “exploring” the product at the beginning of each new sprint, or any time that there is a change done to a product feature within the sprint cycle. Similarly, tester will need to plan and build scripts to perform automated functional and regression testing within the sprint, because there is not enough time for performing thorough manual testing.
Agile is all about embracing and rapidlyadapting to changes –which might be hardto accept at the beginning-- plus there arenew processes, and new communicationstyles in place, so you might feel a littlereluctant about it. However, once you getinto the dynamics of agile softwaredevelopment, it can be a very fun andempowering experience!