Quality Management for Software Product Development

“Quality comes not from inspection, but from improvement of the production process.“

Edwards Deming

Why is this important?

Product quality is critical for satisfying customers and retaining their loyalty, so they continue to buy from the business in future. Quality products are critical to the long-term revenue and profitability.

Traditional, plan-driven testing frequently leads quality problems and delivery delays due to bottleneck

Plan-driven approaches allocate time for testing towards the end of development.
It may seem practical allowing to test entire system through several quality assurance cycles and fix (“debug”) the entire, integrated system at once. However, when defects or usability issues are inevitably found late, the release will be delayed until these have been fixed. In this model, testing usually becomes the bottleneck that seriously impedes the ability of projects to deliver on time and achieving high product quality.

It is always cheaper to fix bugs earlier on in the development cycle rather than stabilize the completed system with deep-seated defects. Moreover, developers will have to refresh the code in their mind incurring additional so-called switching costs. The time gap between changing the code and running all necessary tests on this code must be minimized in order to reduce the costs and improve the product quality systematically.

Test early and often – “shift left”

Agile practices encourage to “build product quality in” through process improvements including faster, earlier and more frequent testing in the software development lifecycle (SDLC). Bringing development and testing together early is commonly referred to as ‘shifting left’.

To overcome the testing bottleneck of the plan-driven model, agile product development moves the initiation of testing as far to the left as possible beginning at the requirements gathering and product definition stage intended to find and prevent defects early in the software delivery process. The idea is to improve quality by moving tasks to the left as early in the lifecycle as possible.

Cost alone is a very strong incentive for shifting your testing to the left. It has been estimated that over half of all software defects could be identified during the requirements phase, with less than 10% emerging during the development phase of the lifecycle. The cost of resolving these defects works in reverse:

A defect that is removed after the product has gone into product will cost around 100 times more than one that is identified and removed during the requirements phase.

The following pages discuss common approaches and practices to build quality into the product from the start of the effort.

The Ponemon Institute, in 2017

Inspired by the blog post:

https://www.bmc.com/blogs/what-is-shift-left-shift-left-testing-explained/

What’s the Difference between DoR, DoD and Acceptance Criteria?

To ensure the definition and verification of quality goals it is critical to define when a specific work item is complete and can thus be considered to be in a respective state. For two very important states of a user story – “ready” and “done” the Definition of Ready (DoR) and the Definition of Done (DoD) have to be defined and agreed upon between the relevant stakeholders.

Both definitions (DoR and DoD) are usually created as checklists of the work that must be completed and applies to all user stories!

Quality Built-In by implementing and applying Definition of Ready and Definition of Done

1.Definition of Ready (DoR)

The Definition of Ready defines the quality criteria for the creation of any

  • User story
  • Business epic
  • Product (release) theme

to ensure that any backlog item being considered for work is actually ready to be worked on and to be moved into the next sprint. Specifically, this means that the development team can confidently commit and complete the backlog item by the end of a sprint.

For illustration, here is a sample DoR for User Story definition

Business value is clearly articulated.
Details are sufficiently understood by the development team so it can make an informed decision as to whether it can complete the Product Backlog Item (PBI).
Dependencies are identified and no external dependencies would block the PBI from being completed.
Team is staffed appropriately to complete the PBI.
The PBI is estimated and small enough to comfortably be completed in one sprint.
Acceptance criteria are clear and testable.
Performance criteria, if any, are defined and testable.
Scrum team understands how to demonstrate the PBI at the sprint review.
Example of Definition of Ready (DoR) for User Story Definition

A key element of a User Story are Acceptance Criteria for the User Story. Please note, that Acceptance Criteria are defined specific to a User Story.

Why do User Stories need Acceptance Criteria?

Acceptance criteria are an essential part of user story definition to ensure that developed software meets actual business requirements. They serve as a basis for definition of test cases that ensure achieving business goals and produce bug-free apps.

Writing acceptance criteria is truly a win-win activity for both stakeholders and development teams:

  • The team knows exactly what is expected of them,
  • keeps the stakeholder abreast of development process.

Key considerations regarding Acceptance Criteria – the What?, the Why? and the How?:

What?

  • External quality characteristics specified by the product owner from a business perspective
  • Exit criteria that a component or a system must satisfy in order to be accepted by a user, customer, or other authorized entity

Why?

  • To define boundaries for user story
  • Help the product owner define what they need in order for this user story to provide value (i.e. minimum functional requirements)
  • Help team to gain shared understanding and reach consensus
  • Help developers know when to stop adding  more functionality to a story
  • To serve as a basis for deriving tests
  • To allow for accurate planning and estimation

How?

Acceptance criteria

  • define desired behavior and
  • are used to determine whether a product backlog item has been successfully developed.

The “Given/When/Then” template helps to reduce the time spent on writing test cases by describing the system’s behavior upfront. We prefer writing acceptance criteria with the first-person “I” since it helps us talk from a user’s perspective and keep a user’s needs in mind.

Sample User Story with Acceptance Criteria:

As an internet banking customer I want to see a rolling balance for my everyday accounts so that I know the balance of my account after each transaction is applied.”

Example acceptance criteria:

  • “The rolling balance is displayed
  • The rolling balance is calculated for each transaction
  • The balance is displayed for every transaction for the full period of time transactions are available
  • The balance is not displayed if a filter has been applied.”

2.Definition of Done (DoD)

The Definition of Done (DoD) establishes the quality criteria for delivery of product increment. The DoD is used to assess when work is complete on the product increment.

Characteristics of the DoD

  • Agreed between the team and the product owner
  • Applies to all work of the entire team – including user stories and defect resolution i.e. bug fixes 
  • Must allow immediate release of product increment
  • Quality increases with maturity, hence the various elements of the DoD are expected to become more ambitious over time.

For illustration, here is a sample DoD for a User Story completion:

Upgrade verified while keeping all user data intact.
Potentially releasable build available for download
Summary of changes updated to include newly implemented features
Inactive/unimplemented features hidden or greyed out (not executable)
Unit tests written and green
Source code committed on server
Jenkins built version and all tests green
Code review completed (or pair-programmed)
How to Demo verified before presentation to Product Owner
Ok from Product Owner
Example of Definition of Done (DoD) for User Story Completion

Remember:
The Definition of Done (DoD) applies for all user stories that the team is working on. In contrast to this, Acceptance Criteria are defined specifically per User Story as required by the Definition of Ready (DoR).

This should clarify how DoR, Acceptance Criteria and DoD relate to each other.