Agile Software Development in a Nutshell
More and more teams are struggling to find a better solution to the dilemma “answer to changing business requirements or meet the project deadline”.
Promoting team collaboration, flexibility and adaptability to the quickly shifting environment, agile software development, and respectively agile testing, has been gaining momentum. Unlike traditional methods, the agile development model breaks tasks into small chunks, which reflect the short-term business goal for the period.
Each short period involves a team working through a full development cycle including planning, requirements analysis, design, coding, unit testing, acceptance testing, and project delivery. Agile practices emphasize working software as the main way to assess progress. They also reduce the complete development cycle time.
The main principles of agile software development include:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
What’s this agile testing all about?
Unlike a waterfall-organized team for example, testers on an agile project play an important role during all the phases of the project lifecycle:
1. During the planning phase of a project, agile testers do:
- Help the rest of the team understand the user stories
- Only take on stories that can be fully tested by the end of the sprint
- Collaborate with customers to better understand their stories
- Collaborate with developers to make sure all have the same understanding
- Start working on high level user acceptance tests for each story
- Think about any test data or testing dependencies needed for story testing
2. When in coding and testing phase of the project, testers do:
- Write detailed tests once coding starts
- Start with simple tests and add more complex ones later on
- Complete tests for one story at a time
- Identify testing obstacles as early as possible and communicate to team
- Facilitate communication between the customers and developers for issues that arise from coding and testing
- Write some manual tests for scenarios that are too difficult to automate with the automated agile testing tool in hand
- Start automating tests once enough code is written for regression suite
3. During the final stage, and post-release testers take part in:
- Identifying testing related obstacles during sprint
- Estimating if there was enough time to test all completed stories
- Finding ways to improve next sprint
- Demoing product to business owners for feedback
The agile development model involves testing as early as possible, and as often as working chunks of the software are released. This is usually done by using automated agile testing tools to minimize the amount of manual labor involved. Automated testing promotes regression tests that stimulate enhanced project velocity. While automated tests are critical for an agile development project, they are also essential for any other development methodology.
There are a few things a tester should consider in order to decide what to automate for each sprint:
- Start with stories that do not have dependencies that can break your automated tests
- Write the “happy path” test first and then expand to complex or edge scenarios
- Estimate the complexity of a test case scenario and the potential regression value of its automation
Riding the agile testing wave with Test Studio
Following the agile testing practices or not, testers nowadays have to adapt to rapid deployment cycles and disruptive changes in testing patterns. When on the lookout for an automated agile testing tool, testers need to consider the below features that will help him/her be more productive:
- The solution needs to serve multiple roles (QAs AND Developers) in order to facilitate communication among team members
- It should integrate within source control environment
- The agile testing tool needs to offer effortless test case maintenance
- It should support a test-first approach
- The solution has to allow writing test automation code using real languages, with real IDEs
While applicable to all types of development methodologies and team practices, Test Studio is an especially good fit for both developers and QAs on an agile development team. Telerik’s set of automated testing tools feature editions tailored to the needs of programmers and testers in order to facilitate their collaboration and provide a common working platform. What’s more, to further aid team cooperation, both editions of Test Studio introduce some common functionality:
- Common powerful recorder for testing (HTML, AJAX, Silverlight, WPF, ASP.NET MVC)
- The ability to create, open and edit the same tests in any edition – allowing developers on the team to take a certain test and further extend it and customize it in Visual Studio
- Source Repository Integration (TFS) to allow testers check-in test results next to the production code. In addition, this feature also facilitates the work of all testers on the team who work on the same project: now they can submit their results independently and at the same time.
- Common test execution model