Last week I read a book called “Agile Testing Foundations, An ISTQB Foundation Level Agile Tester Guide” and i decided to take notes about some of the things that i learnt and found interesting while reading. Here is my mini summary:
Agile software development refers to a group of software development methodologies based on iterative development. It benefits from early and frequent feedback from customers which will avoid requirements misunderstandings, make features available earlier and will also resolve problems earlier. It improves quality and customer satisfaction. Teams do planning and releasing in small, frequent increments and can respond quickly to change.
The four values of the Agile Manifesto:
- Individuals and interactions over processes and tools – Agile encourages communication between team members, the development team and the customers.
- Working software over comprehensive documentation – The most important deliverable of any software project is the product itself.
- Customer collaboration over contract negotiation – If you work closely with the customer, you will have a much better understanding of what they require.
- Responding to change over following a plan – Change is inevitable in software. Embrace change!
The Agile philosophy is supported through 12 key principles:
- 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, at intervals of between 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 maximising the amount of work not done—is essential.
- The best architectures, requirements, and designs emerge from organising teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
A whole-team approach is used which means that many roles and specialisations come together in a single team. Everyone on the team is held equally responsible for the quality and success of the project.
Agile methodologies: (scrum, kanban and extreme programming)
- A prioritised list called a backlog is created
- During the planning phase, the team select a small piece of that backlog and create a sprint backlog
- The team is given a certain amount of time to complete this work, this is called a sprint
- The team meet on a daily basis for a stand up meeting to assess the progress
- At the end of a sprint, the work should be ready to hand over to the customer
- The sprint ends with a review and retrospective
- The next sprint begins
- Visualise the workflow – This can be done by using cards (to do, doing, done)
- Limit the works in progress – Select the most important and valuable work items
- Manage flow – The flow of work should be monitored, measured and reported. Create positive change!
- Make process policies explicit
- Improve collaboratively – the team can also meet for planning meetings, stand ups, retrospectives, etc. Aim for continuous improvement.
- As reviewing code is a good practice, two people will work together on the review
- As testing eliminates defects, code will be tested intensively with unit tests before releasing a feature
- As design is important to ensure that changes in code will not impact other parts, dependencies are minimised
- Building and integrating will occur several times a day
- There will be several short development cycles
I mainly only knew about Scrum so it was interesting to learn about Kanban and Extreme Programming too.
Here are a few more points that i took down:
Project estimating is also important in Agile, they happen at the beginning and end of each sprint. A product backlog is a prioritised list of work for the development team to do. The development team pulls information from the backlog for each sprint.
Agile Retrospectives are reviews that are at the end of each sprint to help teams learn how they are doing and find ways to become better.
Within Agile teams, user stories are used to define the business requirements. Collections of related user stories are called Epics. An epic is eventually a large user story that can be broken down into many small user stories.
Agile tester skills:
- Being positive and solution-oriented with team members and stakeholders
- Displaying critical, quality-oriented, sceptical thinking about the product
- Actively acquiring information from stakeholders (rather than relying entirely on written specifications)
- Accurately evaluating and reporting test results, test progress and product quality
- Working effectively to define testable user stories, especially acceptance criteria, with customer representatives and stakeholders
- Collaborating within the team, and working in pairs with programmers and other team members
- Responding to change quickly, including changing, adding or improving test cases
- Planning and organising their own work
The environment of an Agile team is technical as the team continually builds upon already developed software components. A tester needs to be more efficient in their testing efforts by implementing automated testing to cover regression testing risks.
“To be technical does not mean that the tester must be a developer, it means that the tester must understand what is going on in the team and also understand development concepts”
There are 3 main agile testing methods:
- Test Driven Development – the driving force is testing
- Acceptance Test Driven Development – it is the acceptance tests that will verify the implemented user story
- Behaviour Driven Development – it is the behaviour of the software that the user will experience
In all of these approaches, tests are written before the code is developed.
Agile has many advantages. Some of these are that it saves time and money, it reduces documentation, it is flexible and adaptable to changes and it increases quality.