Challenges in defining “DONE” for Scrum in Non Functional Testing

26 Jan

Lets us first understand as what basically is Scrum.

As per the Scrum Guide, Scrum is an framework where in we use various processes and techniques to deliver the value to the customer.Scrum deliver value in increments by using time boxed iteration or sprints.The product  requirements from the end users goes into the product backlog and it’s the responsibility of the Product owner to pick the one which he feels brings most value to his product once done.Sprint consists of the user stories selected by the product owner from the product backlog so that the team can start working on  developing the product.Each of the User stories has “Done” criteria that has been signed off by the product Owner.Signed off “Done” Criteria also means that team has understood as what they are building in their sprint cycle.

So according to Scrum Guide, the definition of “Done”  means  that piece of software developed at the end of the sprint should have completed all rounds of testing,analysis,refactoring and non functional tests as identified while defining the “Done”Criteria by the Product Owner.So for this post let us see as how best we can define “Done”  from the non functional testing prospective and also see as what all challenges we might come across while defining the “Done” Criteria and possibly what are their solutions or workarounds if their no solutions.

Defining “ Done” for the each of the stories from the non functional aspect is somewhat difficult task when we consider it from the technical perspective or implementation perspective that’s because of the below following points,

  • Each of the stories have features which exists as a bare minimum entity during the initial phase.This means that we have only business code to deal with.
  • There might also be the cases where single feature might have sliced across the multiple sprints for various reasons.So we have with us small fraction of implemented feature.
  • Some stories implemented during existing sprint might contain the just front user interface with no backend communication.
  • Sometimes only business layer is developed first and there is no front end to deal with.

In addition to these above challenges ,non functional team might also face challenges in Test Environment, Test Data setup etc. etc.However each of these challenges tells us that there exists  only piece of code that needs to satisfy the non functional definition of “Done”.Now since PO  defines acceptance “Done”Criteria, he might go ahead and say “ Yes please each of the user stories should satisfy the Non Functional criteria that needs to be satisfied by the product” and this being technically incomplete definition which gives no clear meaning or objectives that needs to  be solved.So sometimes due to this the responsibility for elaborating the “Done” criteria in the meaningful way comes to the performance team. Non Functional team needs  to educate relevant stakeholders and come up with the definition of “Done” that can be implemented successfully.

Of course it is very much possible that non functional testing can be implemented on the piece of code, however the “Done” criteria in the such a case needs to be setup by people who has architected or designed that particular product.I prefer to call this particular type of testing as Unit Performance Testing in case non functional testing pertains to Performance testing.The definition of “Done“ in this case also varies a lot and will have more of technical elements in it rather than End User’s requirement.Below are some of the example I can think of now,

  • How many live objects that are created by the main and sub methods ?
  • How much memory does each object consumes ?
  • Threshold criteria for CPU and Memory consumptions .
  • How many connections does the method opens ?
  • Do dead connections are getting recycled correctly under concurrent threads ?
  • How does thread management looks like under load ?

All these above questions can be part of the “Done”Criteria when we think in terms of Non Functional Testing on raw code.There exists lot of Open source tools for doing unit performance testing.However we  need to identify correct objectives and goal for doing unit performance testing.

Since scrum is  getting very popular in an outsourcing software development industry and lot of outsourced projects are actually using Scrum Framework  for their software development activities or in their product development, it is required that we understand from non functional prospective as how “Done” can be defined so that non functional team can also deliver value as quickly as possible.

However we need to keep in mind that Unit Performance testing is not equal to End to End Performance testing and scope of unit performance testing is limited to a single story or couple of stories.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: