Fundamentals of Agile Software Development
To prove yourself as an effective tester on Agile project, you first need to understand how Agile software development model works. Agile development, which covers a range of software development models, is based on an iterative approach to software development. Using Agile methods, the software is developed in repetitive product development cycles called iteration.
Agile development mainly focuses on the early delivery of working software products and ensures the availability of the product to the customer as early as possible. The goal of agile methods is to reduce burdens in the software process (e.g. less documentation). It also enables the process to respond quickly to requirement changes without additional rework.
Some key points of Agile software development in the testing perspective are as follows.
- The tester’s tasks differ from those in a traditional project
- The tester must understand Agile values and principles
- The tester is at the same hierarchical level as all other team members like developers etc. (whole-team approach)
- The tester communicates on a regular basis with the team, thus contributing to the early reduction of the number of defects in the product and its overall quality
Agile software development and the Agile Manifesto
The Agile Manifesto, the manifesto for Agile software development, was brought about in 2001, developed from a group of individuals agreeing on shared principles and values.
Individuals and interaction
- Agile development is people-centered
- a team is composed of a number of persons with different tasks
- the interaction is very close and frequent
- it is more effective to rely on the collaboration among team members than on tools and processes
Working software
- a working system is essential for the customers
- feedback is quickly given to the development team
- detailed documentation takes a secondary place
- the software is made available earlier in its development life cycle, even with reduced functionality
- Agile development creates a considerable advantage in time-to-market
- especially applicable to fast-changing, dynamic business environments
- problems and/or solutions may still be vague
- there is no room for bringing innovation in new business areas
Customer collaboration
- customers find it difficult to describe the requirements for a system
- collaborating directly with the customer helps to understand the expectations correctly
- contracts with customers may be important, but working in regular and collaboration is likely to bring more success
- frequent and close collaboration with the customer increases the possibility of success of the project
Responding to change
- software projects are subject to change
- changes could be e.g. environment, competitors, new technologies
- changes have a strong impact on the project
- the development process has to respond to this
- rigid processes, unable to accept changes in plans, make no sense
- flexible work practices react to changes and are more successful
Twelve principles of Agile Manifesto
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage
- Deliver working software frequently, from a few weeks to a few months, with a preference to the shorter timescale
- Business people and developers must work together daily throughout the project
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation
- Working software is the primary measure of progress
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely
- Continuous attention to technical excellence and good design enhances agility
- Simplicity – the art of maximizing the amount of work not done – is essential
- The best architectures, requirements, and designs emerge from self-organizing teams
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly