Integrating the QA Mindset into Agile Software Development

Agile software development is an approach to software development that uses cross-functional teams to gather requirements and devise solutions to those requirements through collaboration. It also upholds principles such as adaptive planning, continuous improvement and early delivery. An agile approach isn’t a specific methodology in itself, although developers often refer to agile methods. The Manifesto for Agile Software Development was published in 2001, which formalizes the principles of agile software development. Its mission, as stated, is “uncovering better ways of developing software by doing it and helping others do it.”

The delivery of working software is the most important measure of performance in agile development, as opposed to the delivery of documents. Motivation and self-organization are important characteristics, and pair programming and co-location are common practices for agile methods. Agile methods also acknowledge that developers can never fully gather user requirements at the beginning of the software development cycle, so continuous collaboration is essential for agile approaches. These approaches also focus on continuous development and rapid response to change.

Agile methods were originally used for non-critical projects, which initially prevented developers from using them in industrial sectors such as automotive, financial, medical, nuclear and pharmaceutical. However, several initiatives have begun to adapt agile methods for these critical domains to the value of these methods. The 2013 8th Annual State of Agile Survey includes responses from organizations that have adopted agile. Seventy-three percent of these respondents said that an agile approach reduced the completion time of the project.

Eighty-seven percent of the respondents believe that such an approach increases productivity, while 92 percent indicated that agile allowed them to manage changes in priorities more effectively.

The use of cross-functional teams in agile development means that quality assurance (QA) personnel are an integral part of the development effort. This characteristic requires the development team to have a QA mindset from the beginning of the project. Project managers may accomplish this task in several ways, including the use of robust collaboration tools, daily scrum meetings and team-building activities.

Collaboration Tools

Agile methods typically use stories to define software requirements, which are similar to the use case descriptions that object-oriented development uses. A sprint is a short period of time in agile development, during which the team is committed to a specific goal. Adding a story to a sprint already in progress violates agile principles since it disrupts the workflow.

A well-defined process is a major step in obtaining the collaboration required by an agile approach, but key tools are also needed to take collaboration to the next level. For example, modern software development routinely uses tools to manage bugs and stories in a structured manner. The Quality Assurance team members in mature organizations typically use test case management tools to automate unit and integration testing

However, these tools often lack the integration and cross-referencing required by the cross-functional teams in agile development. For example, a QA team member runs automated testing and generates reports on the discovered issues, while other team members remain unaware of those issues. This disconnect between tools can lead to poor quality, and the lack of traceability can make the collaboration process unnecessarily complex. Fortunately, a few simple practices can ensure the entire development team remains aware of the current state of the project regardless of their individual locations.

Developers should add references to sections of the code to which they performed unit testing. Similarly, QA team members should add references to each test case (TC) on the TC management tool, along with a bug report for each story. QA should also add references to the story in the requirements management system to complete the cross referencing between unit and integration testing.

Daily Scrum Meetings

Daily scrum meetings are essential for integrating QA into agile software development. Scrum is an incremental, iterative framework for managing agile software development projects, although it’s vital for this framework to prevent changes to a sprint already in progress. As Ilan Goldstein says in his blog post Sprint issues – when sprints turn into crawls, “Scrum certainly provides provision to change product backlog priorities mid-project; however, this needs to occur between sprints and not during them.”

The development team holds a scrum, also known as a stand-up, each day that a sprint is in progress. The scrum has specific guidelines to ensure that it complies with agile principles. For example, all team members should be prepared for the scrum, although anyone is welcome to participate. The scrum should take place at the same time and place each day. It starts on time even if team members are missing and should be limited to 15 minutes.

Each team member should answer the following three questions during the scrum:

  • What did I do yesterday to help the development team meet its sprint goal?
  • What will I do today to help the development team meet its sprint goal?
  • Do I know of any impediment that prevents the development team from meeting its sprint goal?

The scrum leader, or master, should capture impediments to the sprint goal and display them on the scrum board. A designated person should work toward a resolution for each impediment outside of the daily scrum. The scrum shouldn’t include detailed discussions.

Team-Building Activities

The cross-functional nature of an agile development team means that the team members have different levels of experience, professional expertise and job skills. This disparity typically results in a group of people who don’t initially function well as a team, even in an organization where everyone essentially gets along. This problem results from a natural tendency to stereotype individuals with different beliefs and simply assume that they’re being difficult.

The key to improving the team members’ interoperability is to break down their “us vs. them” mentality, according to stackoverflow. Team-building exercises should provide participants with the opportunity to build common experiences together. This process typically involves dividing the team into four to six members, ensuring that they’re well-mixed. People who normally work together should be in separate groups, and each group should include individuals with different job functions. The goal of this strategy is to increase the interactions among people who normally don’t communicate with each other.

The participants in a team-building exercise must also buy into it if these exercises are to succeed. This requirement means that you must address the inevitable skepticism before beginning the exercise. Tell the participants what you’re attempting to achieve and why you’re attempting to achieve it. However, you must also be prepared for negative feedback or even hostility if the exercise fails to meet its goals.

Tiempo Development exceeds client expectations by integrating QA into the software development process. We also use agile methodologies to collaborate with our clients and rapidly adapt to changes in requirements. The result is superb software and happy clients.

About Tiempo Development

At Tiempo, we are making the business of software development easier and more affordable with a unique combination of a nearshore business model, agile methodology, and advanced talent management. Our Development teams engineer powerful technologies that align with the goals and strategies of our customers for both their internal and public-facing development initiatives. Tiempo’s proprietary agile product lifecycle management framework, the Tiempo Quality System or TQS, is composed of principals and best practices that ensure productive client and team interactions. The result is highly efficient software development that supports companies in launching software releases sooner without draining resources. To learn more please visit us at: www.tiempodev.com or contact Tiempo Development directly.