The Ultimate Guide to Agile Testing for Modern Software Teams: Part 1

Here's an interesting observation: Fortune 500 companies prefer Agile! Agile methodologies are 50% more effective than traditional Waterfall and Iterative appro

The Ultimate Guide to Agile Testing for  Modern Software Teams: Part 1

Here's an interesting observation: Fortune 500 companies prefer Agile! Agile methodologies are 50% more effective than traditional Waterfall and Iterative approaches. The agile approach has helped 60% of businesses boost their revenue and profits.  If it isn’t agile, next-gen businesses aren’t paying attention and can you blame them? In Part 1 of this blog on “The Ultimate Guide to Agile Testing for  Modern Software Teams”, we will explore why agile methodologies are soon becoming a primary approach for next-gen businesses and everything you need to know about Agile Testing for  Modern Software Teams!

 

What to Know About Agile Testing?

Agile development takes a test-first approach, rather than the test-at-the-end approach of traditional development. 

Let’s look at some agile testing strategies for modern software teams

 

The Agile Testing Life Cycle

What is an agile life cycle? Unlike the Waterfall methodology, Agile Testing is not sequential--or done after a coding phase--but continuous. Continuous Testing is one of several continuous activities that take place simultaneously on most agile projects, including:

Continuous Build or build automation is the first stage in implementing an agile software delivery pipeline. If your developers are practicing test-driven development (TDD), they'll write unit tests for each piece of code they write, even before the code itself is written. An important part of the agile methodology in testing, TDD helps developers think through the desired behavior of each unit of software they're building, including inputs, outputs, and error conditions. New features implemented by developers are then checked into a central code base before the software build, which compiles the source code into binary code.

The role of continuous integration in agile testing is a practice where members of a software development team use a version control system and integrate their work frequently to the same location, such as a master branch. Each change is built and verified using tests and other verifications to detect any integration errors as quickly as possible. With build automation, the software build happens automatically, using tools such as Makefiles or Ant, rather than when a developer manually invokes the compiler.

 

Agile testing lifecycle

(Agile Testing Lifecycle)

 

In the last stage of a CI/CD pipeline, once an application passes all the required tests, it's then released into production. For all intents and purposes, this means releasing every good build to users.

 

Agile Testing Quadrants

Because Agile is an iterative development methodology, testing and coding are done incrementally and interactively, where features can evolve in response to changing customer requirements. Agile testing covers all types of testing, including unit, functional, load, and performance tests. The following Agile Testing Quadrants diagram is a useful model for cross-functional agile development teams to use to plan and execute testing activities.

 

Agile testing quadrants

Agile expert Lisa Crispin developed these four Agile testing quadrants as a guide for managers and development teams to use to create test strategies. It's important to realize that the Agile Testing Quadrants diagram is simply a model or taxonomy to help teams plan their testing and that there are no hard and fast rules about which tests belong in which quadrant and in which order the different tests need to be done. (For example, it's not necessary to work through the quadrants from Q1 to Q4 in a Waterfall style.)

 

Let’s look at the comprehensive guide to agile testing quadrants for QA teams mentioned below:

Quadrant Q1

Quadrant Q2

Quadrant Q3

Quadrant Q4

The clouds at the quadrant corners signify whether tests in that quadrant generally require automation, manual testing, or specialized tools. The division of tests into quadrants allows teams to strategize whether they have the right skills to accomplish each of the different types of testing, or if they have the necessary hardware, software, data, and test environments. It also makes it easier to customize your agile testing process on a project-by-project or skill-by-skill basis. So, for example, if you don't have a tester on your QA team with appropriate load or performance testing skills, it helps you to see the need to bring in a contractor or outsource that particular test. A testing strategy based on the Agile Testing Quadrants requires effective workgroup communication, which is made easier by a test management solution that allows the team to work collaboratively in real-time.

 

Agile Methodology in Testing

Let’s look at some of the best practices for continuous delivery in agile frameworks. But first, in traditional waterfall testing and development, software developers typically concern themselves with three types of requirements, often addressed at different stages in a software project: 

  1. Business requirements: These describe why the product is being built and identify the benefits both customers and the business will reap
  2. User requirements: These describe what tasks or business processes a user will be able to perform with the product
  3. Functional requirements: These describe the specific system behaviors that must be implemented. 

In traditional waterfall development, functional requirements often reside in a software requirements specification (SRS) document, which is used by analysts to communicate detailed requirements information to developers, testers, and other project stakeholders.

User stories

Example:

As a {type of user}, I want {goal} so that I {receive benefit}.

Here's a simple example from a banking website application that illustrates a user story:

As a bank customer, I want to be able to check my bank account balance in real-time so that I can see if any purchases I'm about to make will result in overdraft charges.

 

 DevOps continuous delivery

Agile is all about short, flexible development cycles that respond quickly to customer demand. 

Since you are effectively building a continuous, two-way DevOps software pipeline between you and your customers with proactive DevOps continuous monitoring, you should have the ideals of Continuous Integration (CI) and Continuous Delivery (CD) in mind from the start as the destination for your digital transformation journey.

 

Overview of the scrum agile process framework

(Overview of the Scrum Agile Process Framework)

 

Scrum projects employ fixed-length sprints, each of which usually lasts from one to four weeks, after which potentially shippable code should be ready to be demonstrated. The notion of releasing a prototype, or minimum viable product (MVP), is also an important best practice in Scrum for getting early feedback from your customers. Once the MVP is released, you're then able to get feedback by tracking usage patterns, which is a way to test a product hypothesis with minimal resources right away. Every release going forward can then be measured for how well it converts into the user behaviors you want the release to achieve. The concept of a baseline MVP product that contains just enough features to solve a specific business problem also reduces wasted engineering hours and a tendency for feature creep or 'gold plating' on agile software teams.

Another Scrum best practice for the ScrumMaster is to organize a workshop with the customer/end-user and the Scrum team so they can create the Product Backlog together. This exercise will allow the Development Team to estimate the implementation effort and the customer to determine the business value (possibly by assigning business value ‘points’), which helps prioritize the Product Backlog without delegating the responsibility entirely to the Product Owner.

Traditional software teams estimate their work effort in a time format such as days, weeks, or months. Many agile teams, however, have transitioned to story points, which are numbers used to measure the relative complexity of a story in terms of risk or effort involved. The Scrum best practice described in the paragraph above can be further refined by an exercise called “planning poker” in which the Development Team will take an item from the backlog, discuss it briefly, and then everyone holds up a card with the number that reflects their estimate. The goal is to help team members reach an agreement on the relative difficulty of different user stories on the Product Backlog.

The Kanban agile process management framework is designed to aid decision-making about what software to produce when to produce it, and how much to produce. Unlike the time-boxed approach that Scrum takes, Kanban is designed around a continuous queue of work, which goes through several stages of development until it's done. Kanban teams usually write their user stories on index cards or sticky notes that are arranged on walls, such as the Kanban Board shown below, to visualize workflow in a left-to-right manner. When work is completed in a stage, it moves into the next-stage column to its right. When someone needs new work to do, they pull it from a left-hand column.

 

Kanban Board

(Kanban Board)

 

While Scrum relies on fixed time-boxes for estimating and planning, Kanban puts more emphasis on the concept of cadence, or continuous flow, that an agile team establishes by working together and reliably delivering software at a set pace. Kanban emphasize two main best practices. One involves visualizing the flow of work, which requires you to map your team's workflow stages and configure the lanes on your Kanban board to match. Visualizing workflow enables teams to analyze the amount of work on their Kanban board, better understand how they process it, and then ultimately optimize their process by introducing incremental improvements. The second best practice is to constrain the amount of work in progress, which requires you to set work-in-progress (WIP) limits, such as only allowing five items in the In Progress lane on the Kanban board above.

 

Scrum versus Kanban

Every organization is unique and you should choose an agile methodology in testing that works best within your culture and the skill sets of your development and testing teams, which can be a mix of the best features of both Scrum and Kanban. Introducing Scrum is quite a change for teams not used to agile software development: they have to start working in iterations, build cross-functional teams, appoint a product owner and a Scrum master, as well as introduce regular meetings for iteration planning, daily status updates, and sprint reviews. On the other hand, Kanban is much less structured and has a looser, more free-flowing style. Kanban may be easier for your organization to adopt since it encourages incremental improvements to your existing software delivery process. You can apply Kanban principles to any process you already have in place, even Scrum. Remember that Scrum and Kanban both have sprints.


So that wraps up Part 1 of the ultimate guide to agile testing for modern software teams.  To know more, get in touch with our QA experts!