Organizations today are focusing on making stable, reliable, and working software delivered to their customers. Various methodologies, techniques, and concepts are being used in order to achieve the wanted level of client satisfaction. When it comes to what agile approaches organizations or project within the organization is following, there are many of them. By following a specific development approach, I mean the way how one team is gathering requirements, designing the architecture, developing the software, testing the software, and deploying it to the production environment.
Some organizations follow the traditional approaches where software is delivered to the customer once it is fully developed and tested. Other organizations deliver software piece by piece in iterations of fixed length where all steps are performed throughout the iteration.
Testing in the traditional approaches differs in the way how it is performed in the agile approaches. In this post we are going to talk about testing in the two most used and most popular agile approaches:
- XP (Extreme Programming)
Testing in agile oriented team is also known as agile testing.
Table of Contents
SCRUM is an agile framework that follows the agile values and principles to guide software development. Some of the most important SCRUM ceremonies include daily standup, sprint/release planning, retrospective, and refinement meetings. Requirements from the customer are gathered and captured using user stories. By writing user stories, we are capturing the client requirements. User Story is a feature/ functionality that explains how the system should behave.
One user story can include requirements, expected development, and testing effort, and acceptance criteria. The acceptance criteria need to be defined before the development of the user story and fully covered with positive and negative tests in order to finish the user story.
In release planning, multiple larger user stories are discussed. Iteration planning is the next phase where several most important user stories are picked up with the assumption that they will be finished by the time the iteration ends.
The next SCRUM instrument is the retrospective meeting where subjects like what we did well in the past iteration, what we need to improve, and how to improve it are discussed in order to have successful future iterations. Refinement meetings are feature/user story focused meetings where the main topic is how that piece of functionality is going to be developed and tested. All the technical tasks are written, whether they are tests or development activities.
Last but not least is the daily stand-ups where the team discusses what they did the previous day and what they will do today. Also, any potential impediments are discussed and address accordingly.
Testing in SCRUM
Testing occurs throughout the iteration, not as a final activity. All the members should participate in testing the product. Testing in SCRUM starts at the beginning of the project, in the requirement gathering where testers can ask questions from their perspective, for example, missing details, propose a new way of testing the feature, the validity of the requirement, testability, test effort, etc. Developers would write unit tests in order to cover a single developed portion. These types of tests are low-level design specifications rather than tests.
The testers are performing integration, system, and system integration tests. They can be functional or non-functional tests. Since automation compared to manual tests plays a big role in the agile world, having an automated test suite can improve the testing in agile approaches like SCRUM.
Testers are creating, executing, and maintaining an automated regression testing suite. Every time there’s a new change to the product, the testing suite would be executed to see if any changes affect the system as well as to confirm that the product is stable enough to proceed to the next phase or to be released into production. That’s why automated tests must be run at all levels of the SDLC. Any manual tests in SCRUM are experience-based or defect-based techniques for upcoming features or bug fixes.
XP (Extreme Programming)
XP is another popular agile methodology or framework that is constructed by a set of core values, principles, and development practices. Some of the core XP values are communication, courage, feedback, respect, and simplicity. The main purpose of XP is to have a large software functionality package delivered within the shortest amount of time. XP’s iterations usually last not more than one week compares to SCRUM which is 2 to 4 four weeks.
XP starts with the customer defining the user stories. The team estimates their effort and the size of the story. Once the stories are picked up, the team divides the stories into tasks and starts working on the stories in a series of weekly cycles. In each and every cycle there is a specific number of stories to be worked on that the team feels can be completed. At the end of the weekly cycle, the customer decides if a value is delivered or not. The prioritized list of user stories is defined by the customer and the team should follow that prioritization.
Testing in XP
Testing in XP starts with the developers writing tests first and then code afterward. That is called a test-first approach or test-driven development. Writing tests and then writing the code after. The purpose of this approach is to write code until all unit tests are passing.
Testers can work with customers on new test ideas, and new acceptance tests provide in-depth info about feature testability and work on risk assessment for the upcoming weekly cycles. There can be a separate test team or team integrated within the development team. The level of independence must be maintained as well as a good relationship among the members of the team. Similar to SCRUM, XP promotes test automation for frequent execution to capture potential bugs and increase confidence in the product.
SCRUM vs XP
Even though both agile approaches are very aligned, there are some differences between them:
- SCRUM iterations last 2-4 weeks, XP has one-week iterations
- In SCRUM, changes to the iteration are not allowed after the planning meeting, in XP changes are welcomed during weekly iteration
- SCRUM team will choose some of the most priorities user stories to work on. XP team will be given a list of prioritized stories by the customer and they need to stick to that order
- SCRUM does not have any development approach or practice, XP guides the development with the test-first approach, refactoring, pair programming, continuous integration, etc.
Which agile approach to use is up to the organization itself. Some prefer to follow more traditional ones, even though in practice they are not that much of a good choice. Others are more agile iteratively focused. Out of the many agile approaches to follow, SCRUM or XP is definitely at the top in terms of how software is delivered to the customer in a stable and reliable fashion.
Share This Post