Application development is a complex process. Developers work very hard to produce products that are error-free, but without a formal testing process, the final product can be flawed. That’s why testing is so important. It’s necessary to ensure the delivery of a viable application that works in practice. There’s no controversy over the need for testing. The question is, “Which type of testing is the most effective?”
Waterfall vs Agile Testing Philosophies
The two most common types of application development methodologies are Waterfall and Agile. The Waterfall methodology calls for planning out a complete project to produce a final product. The Waterfall project team works in phases, and the output from one phase flows to the next until the product is complete.
The Agile methodology breaks a project down into small segments that are completed in “Sprints” of two to four weeks. The process focuses on collaboration among the team, the customer, and the users, and working iteratively to refine the team’s output.
The Waterfall testing model breaks-down activities into linear sequential phases. Each phase is dependent on the successful completion of the previous phase. This approach is less iterative and flexible as progress flows usually in one direction… downward.
Testers that are part of a Waterfall process validate the features as defined in the project documentation. If problems arise during testing, it is difficult to make any significant revisions or changes in how the product works. Again, individuals working with a Waterfall methodology are caught in a downward, one-way, delivery method. It is not designed to stop (mid-stream) the team’s delivery tasks, to go-back to fix the problem, and then paddle-on to the next task. Waterfall testing should not be considered for large complex projects – but for small, short-duration projects, there is certainly a place for this delivery model.
When the Agile methodology was developed, testing was one of the motivators. Experienced developers using the Waterfall methodology believed that leaving the testing until the project was almost complete left too many opportunities for problems to hide in the code. By the time testing was initiated, fixing problems typically required changes that were costly and time consuming.
Agile development involves members of a cross-functional Agile team, with a focus on the expertise of the testers. The testers are continuously testing (in cycles call “Sprints”) the features being developed as they are being developed, thereby supporting DevOps. This approach improves product quality, and consistency of meeting delivery dates.
The Agile Testing Philosophy
Agile testing can be done differently in different organizations. But, the authors of the book “Ten Principles for Agile Testers” outline a number of principles that Agile teams can incorporate into their Agile methodology.
- Make feedback continuous.The testers, development team, analysts, and the product owner should exchange feedback throughout the Agile process.
- Focus on the customer. Everyone’s goal should be to develop a product that works best for the customer. Even an elegant product isn’t useful if the customer isn’t delighted.
- Make communication face to face. Testers and developers should communicate in person to eliminate misunderstandings and to make clarifying feedback easy.
- Support courageous testers. Testers need to feel comfortable fighting for things they believe are in the best interest of the customer.
- Avoid too much testing.Testers should focus on only the most necessary tests to keep the product simple but valuable.
- Make continuous improvement critical.Testers need to have the mindset that continuous improvement is important to improve their skills and to stay open to new ideas.
- Don’t fight change. Testers need to adapt to the changing needs of the customer and the marketplace easily.
- Encourage self-guidance.Morale is higher when testers and the other members of the team can work together to guide their own activities.
- Stay centered on people.Testers should have excellent communication skills and care about the other team members. Working as a dynamic team will result in the best outcome.
- Have fun. When testers are a respected part of the team, and when testers respect the skills of their team members, you end up with a motivated team that has fun working together to create an outstanding product.
The whole point of the Agile testing mentality is to avoid this type of exchange between a tester and a developer.
- Tester: Hi Joe, I wanted you to know that when you press this button, the application crashes.
- Developer: Well, sure, you’re not supposed to hit that button on that screen.
- Tester: So, I made a mistake, and if I did it, the users will probably do it, too.
- Developer: OK, I’ll tell the trainers to be sure and teach the users not to hit that button.
The Quadrants of Agile Testing
The Agile testing process is often presented in four quadrants that give an overview of how agile testing works.
- Quadrant 1: Testing focuses on the quality of the code. It is technology driven and supports the team.
- Quadrant 2: These are business driven tests that support the team to test topics such as workflows and the user experience.
- Quadrant 3: This quadrant often consists of automated tests that are designed to build confidence in the product.
- Quadrant 4: These tests focus on non-functional requirements to ensure the product delivers what the customer expects. These elements include tests such as stress tests, infrastructure testing, security tests, and more.
Benefits of Agile Testing
Application testing is critical to allow an Agile team to produce excellent products. The process produces a number of benefits.
In most instances, using the Agile methodology results in less documentation, but documentation is still important. Involving technical writers during development allows them to talk to the developers while they are immersed in the project rather than waiting until the end of the project when people on the team are moving on to other assignments.
In addition, since testing is completed during development, the documentation that is produced doesn’t need to be revised after a separate testing process.
Adapts to changes
Agile testers aren’t working in a structured environment where they’re comparing the final product to the original requirements. Since testers are part of the team during the development process, they can easily restructure their testing to conform to the requirements as they are refined.
Fixes happen during development
Incorporating testing during development lets the development team fix bugs or gaps during the development process. It is much less costly and time consuming to make changes as the code is written rather than addressing fixes just before the product is released.
In Agile testing, the developers get regular feedback from users and testers. This type of interaction increases the developers’ understanding of the user and how they will interact with the product. It makes it easier to fix problems and gives a new insight to the developers that often avoids problems as the development moves forward.
Delivers a high-quality product
In traditional Waterfall projects testing is completed at the end of development. In many cases, there is extreme pressure to complete testing rather than extend the release date. That approach leads to oversights and mistakes.
With the Agile approach, testing is incorporated into the development. It’s not perceived as a separate step toward product release that often gets in the way of meeting timelines. The only pressure comes from the team members who have satisfying the customer as their goal. Agile testing usually results in producing a high-quality product.
Using the Agile methodology, with its integrated testing, often results in a faster delivery of a final product. It doesn’t matter if the application is for internal use or it’s a step toward increasing a company’s competitive edge in the market—fast delivery is always good news for everyone involved in an application development project.
Testing is a critical part of application development, and Agile testing has a lot to offer. But, inadequate testing is only part of what can make an application development project fail. Learn about other reasons why projects break down, and seven solutions you can use to meet the challenges of today’s application development environment by reading our white paper, “4 Reasons Why Application Development Projects Fail.”
Find out about why building a digital bridge for utilities customers isn’t optional, and industry customer engagement success stories.