You are here

You are here

Testing in the agile enterprise: Do you know your role?

Malcolm Isaacs Senior Researcher, Micro Focus

Agile adoption is on the rise, with 93 percent of organizations working on agile projects, according to the 2014-2015 World Quality Report. This, along with the shift toward DevOps, means that more testing is going on and more people than ever are involved. How do you sort it all out and make sure everyone is moving in lockstep? You really need to map it out.

Here's a look at the people involved in a typical agile development organization.

People in an Agile organization

For the purposes of this discussion, I use the three-layer organizational abstraction from the Scaled Agile Framework (SAFe):

  • The team layer: Developers and testers working together to develop user stories selected and ranked by the product owner, with the scrum master making sure that everyone follows the process.
  • The program level: The system team provides services such as provisioning continuous integration, build environments, and testing platforms, as well as performing end-to-end testing, and demonstrating the working software at the end of each sprint. Architects and program managers also operate at the program level.
  • The portfolio layer: This is where executive sponsors sit and where programs are aligned to the enterprise's business strategy.

In the agile enterprise, everyone bears collective responsibility for quality, and everyone is a tester. Some agile teams have a dev-test role, in which a developer is dedicated to testing.

Product owners are often involved in ad hoc and exploratory testing as well. At the program level, the system team, architects, user experience experts, and business analysts are all involved in testing.

Agile test roles

Testers in an agile team must:

  • Work with the product owner to add and refine the "done" criteria for user stories
  • Develop test scripts, possibly as part of behavior-driven, test-driven, or acceptance test-driven development
  • Develop frameworks for manual and automated testing
  • Find edge cases and prepare data for manual and automated testing
  • Review the software for test readiness at both the API level and the GUI level
  • Find defects and work directly with the developer to create a fix and validate it

System team test roles

System team testers' responsibilities include:

  • Developing testing platforms and frameworks that serve the teams that make up the agile release train, not just individual features or components
  • Creating and running automated tests to enable continuous integration and continuous deployment
  • Designing and performing end-to-end tests, exploratory testing, performance testing, and so on—this might be the only team with visibility across the whole product
  • Maintaining service and network virtualization systems that let teams test and develop independently of one another
  • Reviewing and testing cross-system concerns such as single sign-on, open source usage, common security requirements, and regulatory standards

The supporting cast

Several other people form the supporting cast of roles on agile teams. They may be part of a separate team, or they might be providing consulting services to the agile and system teams on an ad hoc basis. These people include:

  • Test architects who determine the test strategy, define testing frameworks and methodologies, and work with system architects to ensure that the application is designed for testing.
  • Automation architects who lead analysis and proof of concept activities around automation, as well as ensure automation consistency for build verification tests and nightly regression suites. They also identify opportunities for everything associated with automation, such as test preparation, setup and configuration, staging test cases and data, virtualizing test environments, and cross-device and cross-browser testing.
  • System architects who must design the system to accommodate testing, though they aren't usually directly responsible for testing.
  • User experience experts who conduct user experience testing and advise the agile and system teams on usability testing and test automation methods.
  • Business analysts who help the agile and system teams develop and execute end-to-end and feature tests, as well as advise on nonfunctional requirements and service-level agreements (SLAs). Like everyone else, they should attend design meetings and retrospective/demo sessions.
  • Product owners who are also sometimes involved in testing, usually ad hoc testing.

In addition to being part of an agile or system team, testers are usually part of virtual teams, often called communities of practice (CoPs). These CoPs are made up of people from different teams who all have a common area of expertise. Performance engineers, security experts, agile coaches, and others usually have their own CoPs where they can participate in activities and share expertise and experience.

In any large-scale agile organization, many people at different levels are involved in testing. While these are some of the key testing roles in the software development process, your own organization may have additional roles or needs. Understanding these roles is the first step toward helping agile teams work together. How are yours different?

Image source: Flickr

Keep learning

Read more articles about: App Dev & TestingApp Dev