Monday, March 30, 2015

Testing Debt

After spending many years in testing and following different models of delivery like Waterfall, Iterative and now the current trend Agile, I often faced challenges with maintaining testing assets and keep them up to date. Testing assets are primarily my test scripts be it manual or automation. Now the primary question is why it is difficult to maintain testing assets?

-          Focus is limited to current iteration and release
-          Smaller release cycles hence less time to write comprehensive tests
-          Very Less time to focus on new integrations in the application, I will discuss more in detail in the section below
-          Regression suite often left not updated

Let’s take a typical example of iteration, in first iteration I write test scripts for all the stories and tested them completely, in second iteration there are integrations with stories that I tested in the first iteration but my focus of testing is the current iteration stories. In each iteration there are new features developed and I am bound to check new features as well old integrations but the timelines does not allow me to do that and I remain focused on current iteration items. I want to focus on integration testing but due to tight timelines I often put them on the back burner. And this eventually piles up my integration testing. Ideally high level scenarios related to integration of modules should be covered in each new iteration.

On the similar lines I should update my regression suite after each iteration, add test scripts and remove obsolete scripts but again this is something which never comes on priority due to tight schedules in Agile environment. This ultimately increases my “testing debt, whether integration testing debt, regression testing debt, automation testing debt or any kind of testing I can think of. As stated in wiki debt is an obligation owed by one party (the debtor) to a second party. As a tester I am knowingly, unknowingly increasing my testing debt and my obligation towards quality delivery is increasing, so the foremost question comes to my mind is how to keep my debt in control and finally be debt free.

I have few thoughts that I feel will help me in working on my debt along with current testing obligations like
-          identify high priority test scripts from earlier iterations
-          prioritize identified scripts on the basis of risk associated
-          involve early in testing, I would say sit with developers and confirm what code changes they are doing, and what impact it may bring to existing features
-          start working on testing as soon as you get an idea of what needs to be done, identify test scenarios, write test scripts, create test data, build your test environment

And the most important is to work with your management and explain them about the debt and your plan to overcome from this, get an approval to work on testing debt along with your present testing activities.


I sometimes feel it is very difficult to always deliver ‘Quality’ in Agile and the definition of quality should be changed to keep up with the pace of delivery. When things change we also require to change the processes. It is not an ideal situation for a tester to keep following the same processes in changing times. Thoughts?