Quality Improvement in an Existing Agile Development Process

How to improve the quality of application as well as reduce the time an application  spent under test in QA phase.

QA Process

Problem Definition

More time is spent on QA phase and UAT phase fixing bugs. Possible problems are

  1. The code is not properly tested by the developer before committing to the Source Code.
  2. Bugs are reported and fixed by the developers. But this process takes much time to finish.

Product development is following agile development model. So there is a product in production and new features and bugs are fixed in each releases. The release cycle is between approx 1-2 months.

 

Solutions

As there is an existing process in place and as the code is in production, it is impossibly to radically change the  entire process but at the same time process should be introduced gradually and in a granular mode. Suggestion to fix these problems are

On Development Side.
  1.  When you are developing the new code, unit test should be written. Yes I mean TDD. It is time consuming but trust me guys, it’worth spending time on this.
    1. Should work closely with your Automation Engineers to help you guys setup your testing framework, if there is any.
    2. I don’t think a  tester can help you to write the test cases for unit tests as these are time consuming as well as they may won’t able to maintain it as well as you need  to teach them the methods in use to write about unit test cases.
    3. Note -unit test cases are usually written on Class ‘method’ level.
  2. Before releasing code to the source code,
    1. Automated / manual Sanity test cases should be  run
    2. Automated Unit test cases related to your area of development should be run. [Here you might need the help of an automation engineer to setup the framework for making the development faster].
  3. Once a deployment is done to your Jenkins/ Team City Server , all  your  unit test cases should be run (CI).
  4. In QA/UAT – Sanity test cases twice a week and regression tests once a week. A separate environment should be used for Sanity / Regression Test if it takes more than 12 hours to run because it may affect the other manual testers in your organization.
On Testing Side
  1. Manual Testers
    1. Should write detailed test conditions and test cases. Test Conditions should be approved by your Test Lead before start writing your test cases. Once the test conditions are approved you should start writing your test cases.
    2. Test cases should have test categories assigned to them. For example if you write 50 test cases for 1 requirement in your current sprint. There might be 1-3 sanity test cases, 30-40 are project specific test cases, 5-15 might be regression tests and 3-5 are worth automating. [number are just an indication]
  2. Automation Tester
    1. Should work closely with your developers initially to help them setup the testing framework for unit test cases. Provide training on writing test cases and executing them.
    2. Never ever think of using unit test cases to build your tests, it wont really help to catch bugs.
    3. Should  focus on writing Automated Sanity test cases as well as regression tests.
    4. Automation test results should be checked by a manual tester as they are able to quickly re test, if something goes wrong as automated test results can be wrong some times.

Leave a Reply

Your email address will not be published. Required fields are marked *