The QA process in agile differs greatly from QA in traditional testing, such as in Waterfall. Agile has changed the way we think of software quality. In fact, I have read rumblings in the blogosphere that Agile has killed QA. I promise you Quality Assurance is alive and well on agile teams. It just looks different than what most of us are used to. I think people who have promoted the “death” of QA in agile are not looking closely enough at what is really happening. Traditionally, testing was the only task people associated with measuring quality.
In the last blog, we made the case that everyone on the agile team owns quality and provided some ideas on how team dynamics can help build quality into the product. In today’s post, we will discuss some additional ideas on how your software QA teams can work together and ensure quality is on the forefront of everyone’s mind when building a product.
Once upon a time, in the land of Waterfall, the business analysts wrote the requirements, the developers coded the requirements and the Testers tested the requirements. Each of these people sat in his/her ivory tower, um, silo and did that which they had always done since the beginning of time. Quality was thought to be synonymous with testing, and therefore was considered to exist solely in the Tester’s realm.
After 20 years in quality assurance, I’m still surprised to hear about companies that don’t have formal QA processes. Even more surprising are the companies that say having a QA function is not necessary. Maybe they are a newer tech company with a tiny, tight-knit development team and the software complexity hasn’t reached a level where defects reach a critical mass or perhaps the company doesn’t support a formal process even though it’s happening in some manner. For me, it is akin to saying breathing is not necessary.
During QAI’s Quest conference last week we participated in a workshop aimed to help managers improve their test planning process. The workshop noted that there are several important areas to test planning including: identifying test objectives and scope, assessing and accounting for risks and contingencies, determining component/application priorities, and estimating the size/length of the test effort.