Wednesday, January 27, 2010

Advantages and Disadvantages of Agile Testing

excerpt from research paper - 12/7/09 |  I have chosen a segment of my paper to address Agile Testing.  If you would like to see complete paper please request by email at lucaslshaffer@gmail.com

How is Agile testing used?
Standalone Testing
Agile testing consists more of a method in which to handle the testing process and does not test a certain aspect of the project itself.  It is more of a concept.
The concept of “the team being responsible for quality” or “the whole team concept” and not just the testing team is a key value of agile methods.  Agile methods need the development team writing unit tests and/or following Test First Design (TDD) practices.  This is not to be confused as a test activity as in fact it is a mechanism to help with designing the code [1]. The goal is to get as much feedback on code and build quality as early as possible [6].
The desire for information earlier in the development phases is to monitor what the current code and build quality of the latest checked code are. This requirement leads to the use of continuous build and integration practices which provide feedback every time code is checked into the code repository and the system is built, usually on a daily basis [2].
In Conjunction with Other Testing
After the code has been unit tested, there are several testing phases, such as system, integration and regression testing.  Although these layers of testing do exist in agile projects, agile testing is integrated throughout the lifecycle [1], with each feature being fully tested as it's developed.  Rather than doing most testing at the end of all the development, testing phases are used appropriately as the developer moves along [6].

Advantage of Agile Testing
Agile testing is becoming the popular method of testing because it allows the developers to change course on a moment’s notice and keep the knowledge that the code already written before the turn, is quality code.  This is a powerful notion as the former required extensive responses from the developer and a tester.
Moving fast is an advantage of Agile testing. In my experience, the entire team has the responsibility to make sure their code is quality and no longer lean on the backs of testers if requirements change.   Another bonus is working with the customers or end users.  This occurrence that was once rare is now common place [1].  Developers are equipping themselves with etiquettes that extend outside the cubicle and sometimes receive the feedback directly from the customer themselves.  And of course, who doesn’t like a job that has a tendency to change from time to time.  Testing on the fly allows you to be flexible and learn your limits on your own.  It’s amazing how well you work when you manage your own time and is allowed affordances to ‘live’ with your code.  It makes it feel more personal.
Documentation is always carries a negative connotation with some developers and others are happy to summarize.  An advantage to the agile methodology is that documentation is low priority over the overall “working software” [5].  As we will see, this also can be a disadvantage.


Disadvantages of Agile Testing
As mentioned above, documentation can be slim and sometimes non-existent [4].   This is a loss for any tester.  Testing happens on the fly so there is little time to document every move and documentation takes time which is against agile preferences.  The problem lies in having to work with someone who is unfamiliar with the project.  In a worst case scenario, handing it over to someone who has never seen it before can be disastrous [6]
Agile testing principles are very demanding on the developers’ time and require a big commitment for collaboration on the duration of the project.  This commitment is very engaging, rewarding and ensures delivery of the right product. It's the fundamental principle of the agile atmosphere that ensures expectations are well managed. And since the definition of failure is not meeting expectations, these are critical success factors for any project and they fall on the multitasking developer [5].
The potential for scope creep, which we all know can create the risk of ever-lasting projects, can become an issue [3]  I have seen this first hand.  Customers always bring the what-if dialogue to feedback sessions and this has a tendency to dilute the original purpose but again, this is the nature of being agile.  There is much less predictability, at the start of the project and duringabout what the project is actually going to deliver so testing can be interrupted or modified to fit the need of the situation [6].
Also, agile testing requires more effort.  Through this methodology, development time suffers as the project halts while the developer tests the previous unit of code before moving on to the next section.  This is double the work!  It helps to ensure quality throughout the project without the need for a lengthy and unpredictable test phase at the end of the project but testers and developers spend a lot of time working through the iterations [4].


Summary
It is complicated to speak on Agile testing and not sound like we are speaking of Agile development.  They are in tandem and together complete the ideas of agile methodology.  The many types of testing a developer is involved in throughout the development life-cycle are an enormous aspect of an applications’ life.  Agile testing is the approach at which utilizing the correct test to accomplish the goal quickly allowing the developer to stay flexible and continue on while creating quality products.  Testing frequently and along the lines of the iterative guidelines are the benchmarks of agile testing.




[1] Crispin, Lisa, Gregory, Janet. Agile Testing: A Practical Guide For Testers And Agile Teams. Publisher: Addison-Wesley Professional. Date Published: 01/09/2009.

[2] Desikan S.Ramesh. Software Testing: Principles and Practices. Pearson Education. 2009.

[3] "Agile testing." Wikipedia, the free encyclopedia3 December 2009. Wikipedia. 3 December 2009 http://en.wikipedia.org/wiki/Agile_testing>.

[4] "Agile methods and software testing." Agile Testing. 30 September 2009 < http://agiletesting.com.au/agile-methodology/agile-methods-and-software-testing/ >.

[5Manifesto for Agile Software Development2001. < http://www.agilemanifesto.org/ >.

[6Pettichord, Bret. "Agile Testing What is it? Can it work?"http://www.io.com/~wazmo/papers/agile_testing_20021015.pdf>. Retrieved 2009-12-2.




0 comments Click On COMMENTS To Post: