INVEST is a mnemonic created by Bill Wake which many Agile practitioners have found useful to help guide the development of user stories or judge the quality of user stories.  It stands for:

  • I – Independent
  • N – Negotiable
  • V – Valuable
  • E – Estimable
  • S – Small or Sized Appropriately
  • T – Testable

The concepts and implicit questions embedded in INVEST can also be used as a checklist to evaluate split user stories.  In my article, Agile Release Plan Revisited: A Simple Program-Level Example, I defined one of the user stories for my Beer Logo Glass Collection Application as:

As a beer logo glass collector, I want to log my glass collection so that I can keep track of my glass inventory.  

Applying INVEST to the story to determine whether it needs to be split:


Based on INVEST as a set of splitting criteria, this story needs to be split.  

From a usage perspective, in order to apply the INVEST criteria I need to have a mechanism to determine size.  I used IFPUG Function Points, however story points would have been an adequate mechanism.  And I needed to know either productivity or velocity (both are measures of rates of production).  Based on the size of the story and my rate of production, the story was not sized appropriately for my two week sprints (for my one person team). Therefore I broke the epic down into four stories:

  • As a beer logo glass collector, I want to log (add) a glass so that I can develop an inventory of my collection.
  • As a beer logo glass collector, I want to change logged logo glasses so that I can correct my data entry mistakes.
  • As a beer logo glass collector, I want to be able to display all of the logged information so that I don’t recollect the same glass.
  • As a beer logo glass collector, I want to be able to delete a glass that I have logged in case my dog breaks the glass.

Reapplying INVEST to validate that I have split the stories to an acceptable level:


Based on this criteria, no further splits are needed.

The INVEST acronym provides a solid tool for determining whether a user story is granular enough.  However to make the best use of the tool we need additional knowledge such as the knowledge of size and an understanding of velocity or productivity.