Wednesday, June 15, 2011

AGILE TESTING DEMAND

WHAT IS AGILE TESTING

Agile - means quick/rapid/speedy

Agile testing is used whenever customer requirements are changing dynamically.
The Agile methodology was introduced in year 2001.There are many agile development methods most minimize risk by developing software in short amounts of time. Software developed during one unit of time is referred to as an iteration, which may last from one to four weeks. Each Iteration is an entire software project: including planning, requirements analysis, design, coding, testing, and documentation.
Agile methods produce very little written documentation relative to other methods. Agile methods are a family of development processes, not a single approach to software development. Agile follows ‘adaptive’ planning rather than ‘predictive’ planning in conventional Waterfall Process.
Agile testing is executed in a very different way from the traditional ones. It basically consists of a continuous process throughout the SDLC as the testing provides information about the new software’s performance as well as the functionality. As a result there is no time for detailed testing of the software at a later stage let alone doing the necessary corrections, since it is an iterative process. Therefore the first sprint is developed and tested. Then the second is developed and tested in isolation, before being integration tested with the first sprint. This goes on and on till the software has been completely developed.

Involvement of Testers at Every Stage

In agile testing, a tester is a key person, whose skills are used throughout the process of software development. When requirements are well understood at the planning stage, it is easier to later accurately estimate project costs as well as deliver within the given time frames. During the development stage, agile testers will work with the developers to write the code in such a way that it will be easier to test later on. Hence time is saved again. By the time the testing stage starts, the testers are completely aware of the user requirements and what the system is expected to do.

PRINCIPLE OF AGILE METHOD

Customer satisfaction by rapid, continuous delivery of useful software.
Working software is delivered frequently (weeks rather than months)
Quality software is the principal measure of progress.
Even late changes in requirements can be implemented easily.
Close, daily, cooperation between stakeholders, project management team, developers and Quality Assurance team.
Projects are built around motivated individuals.
Continuous attention to technical excellence and good design.
Simplicity
Self-organizing teams
Regular adjustment to changing circumstances

WHY AGILE?


·         Sometimes customers want project quickly then Agile Methodology is used.
·         In this after development, testing process is done in a small amount of time.
·         It takes less time in delivering projects that’s why it is in demand.

DIFFERENT AGILE DELIVERY METHODS

 AGILE SCRUM PROCESS

In today’s rapid world stakeholders want immediate ROI (Returns on Investments). They don’t want to wait for longer periods to get full featured product.
Scrum is one of the most admired Agile delivery methods. In Agile Expedition, we refer to many Scrum terms, including sprints, Product Owner, and Scrum Master. One of Scrum’s strengths is that it is a well defined and extensively documented delivery methodology.
In scrum, projects are divided in small features to be developed and tested in specific time-frames called as sprint (small cycles). Features should get developed and tested in specified small time-frames. This agile scrum team is handled by scrum master.

 EXTREME PROGRAMMING (XP)


 Similar to Scrum in that it emphasizes short, iterative, and incremental development cycles, short feedback loops, close customer collaboration, and work prioritized by highest business value.
One of the fundamental ideas of XP is that no one process fits every project, but rather the processes should be tailored according to the needs of individual projects.
Extreme Programmers constantly communicate with their customers and fellow programmers. They keep their design simple and clean. They get feedback by testing their software starting on day one. They deliver the system to the customers as early as possible and implement changes as suggested. Every small success deepens their respect for the unique contributions of each and every team member.

XP operates on the following values:
1. Simplicity
2. Communication
3. Feedback
4. Respect
5. Courage


 TEST-DRIVEN DEVELOPMENT (TDD)

Practice of writing a unit test before writing any code. This can be done relatively quickly, with the developer writing the test, then writing the code, and then running the test in small increments. TDD ensures the code is consistently refactored for a better design.


TDD  is a software development technique that relies on the repetition of a very short development cycle: First the developer writes a quality test case that defines a desired improvement or new function, then produces code to pass that test and finally refractors the new code to acceptable standards. Here once our unit is ready we will take a customer feedback and if Customer wants some changes into that unit of software we will do it and do a final release.
The suite of unit tests provides constant feedback that each component is still working. Test-driven development forces critical analysis and design because the developer cannot create the production code without truly understanding what the desired result should be and how to test it.
The test suite acts as a regression safety net on bugs: If a bug is found, the developer should create a test to reveal the bug and then modify the production code so that the bug goes away and all other tests still pass. On each successive test run, all previous bug fixes are verified.
TDD has the following distinct benefits:
1. It contributes to better overall system design by reducing code duplication and other anomalies.
2. It forces programmers to think about end results first, which increases the likelihood that the code will meet customer needs.

 FEATURE-DRIVEN DEVELOPMENTS (FDD)

Like XP and Scrum, is focused on delivering customer value by identifying and delivering the features with the highest business value first, in an iterative and incremental fashion. FDD is a model-driven Agile process that puts emphasis on first identifying the problem domain using Unified Modeling Language  then digging into feature development on an iterative and incremental basis. Because FDD is model driven, it has additional roles such as Class Owner to support the modeling function.


FDD emphasizes the following activities as part of its process:
1. Develop an overall model
2. Build a features list
3. Plan by feature
4. Design by feature
5. Build by feature


Pair Programming:
As name indicates programming done in pairing. In pain programming two developer works on same module of code. The basic idea behind pair programming is that programming / writing code is -above all- intellectual work. So two brains working together through a specific task perform better with desired quality.

Benefits
1. Development time is reduced and software quality is higher.
2. Teams doing pair programming tend to have more fun than teams working individually.
3. Pair programming is that it can push people well outside their comfort zones.
4. By discussing the code or knowledge leads to increase number of generalists



 CHALLENGES IN AGILE TESTING

  • Adequate/Detailed test planning is not possible due to tight timelines/deadlines
  • There are too many changes in the software requirements and development which conflict with the test planning.
  • The testing phase is not specified. That is, it is not clear when tests start and end.
  • Since testing starts when the first iteration is complete, judging at that stage whether it will lead to working software is difficult.

 BENEFITS


Delivers highest business values early on in the project.
Promotes customer satisfaction
Provides customer driven approach
Focuses on speed of delivery
Provides openness and visibility to customers
Improves employee retention by empowering employees and by promoting self-management, team communication, learning, and value-building

DISADVANTAGE

The stakeholders will be tempted to keep demanding new functionality is delivered.
If a task is not well defined, estimating project costs and time will not be accurate. In such a case, the task can be spread over several sprints.
If the team members are not committed, the project will either never complete or fail.
It is good for small, fast moving projects as it works well only with small team.
This methodology needs experienced team members only. If the team consists of people who are novices, the project cannot be completed in time.
If any of the team members leave during a development it can have a huge inverse effect on the project development.