Requirement Driven Testing for Agile vs Waterfall process

I have worked on many projects for different organizations and found there are two main streams of project methodology: 1) waterfall and 2) agile process.  Other methodologies such as SCRUM share similar characteristics from either one of them.  People often asked “How different is the test approach between Waterfall and Agile methodology?”  Before we discuss the different lets quickly go through the characteristics for each methodology and here is the summary:

Waterfall methodology is a classically linear and sequential approach through the phases of requirements analysis, design, implementation, testing (validation), integration, and maintenance.  This method focuses on planning, time schedules, target dates, budgets and implementation of an entire system at one time (source: wikipedia.org).

Agile methodology on the other hand is an incremental software development emphasize on the following aspects:

  • Working software over documentations
  • Team and customer collaboration over contract negotiation i.e. Service Level Agreement (SLA)
  • Quick response to change i.e business requirements.. etc refer to wikipedia.org for more information

The above summary shows different values from each methodology.  How is this going to impact the test approach?  My short answer to this would be the same test approach can be used for Waterfall and Agile methodologies.  Regardless what method is used test cases should be derived from 1) business requirements (functional and non-functional) but can also 2) derived from business scenario (business process).  One of the main differences is the planning for each iteration is a lot smaller in Agile methodology compared to Waterfall.  For example, it might take ten iterations to complete a complete system in Agile methodology compared to two or three iterations in Waterfall methodology.

One of most common issues I have while working in Agile project is all testing work are left right the end of iteration which I think defeat the purpose of the “incremental software development” concept.  Just like development or business analysis work, testing is no exception requires incremental testable items to ensure the product being developed meet customer expectation.  Regardless which method is used testing should start as early as possible i.e. static testing is to validate the requirements or system specification.

In summary, one of the most important lessons I have learned is to always think of the exit criteria with testablable conditions for each development task.  This will prevent a situation where testing is left to the end of iteration and delay the discovery of defects.

Related Posts Plugin for WordPress, Blogger...