At any given time, we at AdvantageCS are working on at least one, usually more, large development projects, be it in collaboration with clients or as AdvantageCS-funded research and development. Recent examples include our eCommerce platform Cider, a Single Sign-On solution and Members Advantage, our membership project. From a QA standpoint, the challenge is to ensure that hundreds or even thousands of hours of development work get tested and that the resulting product is robust and easy to use.
The role of testing in Agile methodologies
Our software development projects are organized in an agile framework called Scrum. Unlike "waterfall" projects, agile projects don't have successive analysis, design, development, testing and rollout phases. These activities are executed continuously throughout the project, which means that each piece of functionality gets tested as it is being developed. In other words, we don't wait for programming to be complete before testing begins---both manual and automated tests are part of the process from Day 1.
Scrum also emphasizes the concept of cross-functional teams. Rather than having a separate team of designers to outline the product, developers to program the software, and QA analysts for testing, our project teams comprise the design, development and testing roles that are needed to develop the project, and QA is embedded from start to finish.
Benefits of Agile for Quality Assurance
Agile methodologies have been popular for software development since the early 2000's, with a focus on value-driven delivery. As an inherent benefit, these approaches minimize the quality problems that can arise in traditional waterfall projects. Since testing is a late phase in a waterfall project, it can be tempting to minimize testing if the project is running behind schedule. That is not an option in an agile project, as testing happens continuously. In fact, if a project is running out of time, the scope might get scaled back, but each feature that does make it into scope will be complete from analysis through testing.
A second benefit of continuous testing is that developers receive immediate feedback on the functionality they have programmed and can address any bugs or usability issues without delay. Finally, participating in the design and planning for each feature allows the tester to understand the big picture and to develop a thorough understanding of the desired functionality.
So, is it working?
Adopting Scrum has allowed us to pursue two seemingly incompatible goals. On the one hand, we need to deliver new features quickly and continuously to keep up with changes in the marketplace. On the other hand, despite continuous changes to the software, we cannot compromise the stability and reliability of our product---our clients are relying on Advantage to run their businesses. Agile methodologies have effectively solved this conflict, and the positive feedback from clients encourages us to continue down this path.