6
Agile Methodology Most software development life cycle methodologies are either iterative or follow a sequential model (as the waterfall model does). As software development becomes more complex, these models cannot efficiently adapt to the continuous and numerous changes that occur. Agile methodology was developed to respond to changes quickly and smoothly. Although the iterative methodologies tend to remove the disadvantage of sequential models, they still are based on the traditional waterfall approach. Agile methodology is a collection of values, principles, and practices that incorporates iterative developme nt, test, and feedback into a new style of development. For an overview of agile methodology, see the Agile Modeling site at http://www.agilemodeling.com/ . The key differences between agile and traditional methodologies are as follows: Development is incremental rather than sequential. Software is developed in incrementa l, rapid cycles. This results in small, incremental releases, with each release building on previous functionality . Each release is thorough ly tested, which ensures that all issues are addressed in the next iteration. People and interactions are emphasized, rather than processes and tools. Customers, developers, and testers constantly interact with each other. This interaction ensures that the tester is aware of the requirements for the features being developed during a particular iteration and can easily identify any discrepancy between the system and the requirements. Working software is the priority rather than detailed documentat ion. Agile methodologies rely on face-to- face communication and collaboration, with people working in pairs. Because of the extensive communication with customers and among team members, the project does not need a comprehensive requirements document. Customer collaboration is used, rather than contract negotiation. All agile projects include customers as a part of the team. When developers have questions about a requirement, they immediately get clarification from customers. Responding to change is emphasized, rather than extensive planning. Extreme Programming does not preclude planning your project. However, it suggests changing the plan to accommodate any changes in assumptions for the plan, rather than stubbornly trying to follow the original plan. Agile methodology has various derivate approaches, such as Extreme Programming, Dynamic Systems Development Method (DSDM), and SCRUM. Extreme Programming is one of the most widely used approaches. Extreme Programming In Extreme Programming, rather than designing whole of the system at the start of the project, the preliminary design work is reduced to solving the simple tasks that have already been identified. The developers communicate directly with customers and other developers to understand the initial requiremen ts. They start with a very simple task and then get feedback by testing their software as soon as it is developed. The system is delivered to the customers as soon as possible, and the requirements are refined or added based on customer feedback. In this way, requirements evolve over a period of time, and developers are able to respond quickly to changes. The real design effort occurs when the developers write the code to fulfill the specific engineering task. The engineering task is a part of a greater user story (which is similar to a use case). The user story concerns itself with how the overall system solves a particular problem. It represents a part of the functionality of the overall system. A group of user stories is capable of describing the system as a whole. The developers refactor the previous code iteration to establish the design needed to implement the functionality.

45415674-Agile-Methodology

Embed Size (px)

Citation preview

8/7/2019 45415674-Agile-Methodology

http://slidepdf.com/reader/full/45415674-agile-methodology 1/6

Agile Methodology

Most software development life cycle methodologies are either iterative or follow a sequential model (as thewaterfall model does). As software development becomes more complex, these models cannot efficiently adapt tothe continuous and numerous changes that occur. Agile methodology was developed to respond to changes quicklyand smoothly. Although the iterative methodologies tend to remove the disadvantage of sequential models, theystill are based on the traditional waterfall approach. Agile methodology is a collection of values, principles, and

practices that incorporates iterative development, test, and feedback into a new style of development. For anoverview of agile methodology, see the Agile Modeling site at http://www.agilemodeling.com/.

The key differences between agile and traditional methodologies are as follows:

• Development is incremental rather than sequential. Software is developed in incremental, rapid

cycles. This results in small, incremental releases, with each release building on previous

functionality. Each release is thoroughly tested, which ensures that all issues are addressed in

the next iteration.

• People and interactions are emphasized, rather than processes and tools. Customers, developers, and

testers constantly interact with each other. This interaction ensures that the tester is aware of the

requirements for the features being developed during a particular iteration and can easily identify any

discrepancy between the system and the requirements.

• Working software is the priority rather than detailed documentation. Agile methodologies rely on face-to-

face communication and collaboration, with people working in pairs. Because of the extensive

communication with customers and among team members, the project does not need a comprehensive

requirements document.

• Customer collaboration is used, rather than contract negotiation. All agile projects include customers as a

part of the team. When developers have questions about a requirement, they immediately get clarification

from customers.

• Responding to change is emphasized, rather than extensive planning. Extreme Programming does not

preclude planning your project. However, it suggests changing the plan to accommodate any changes in

assumptions for the plan, rather than stubbornly trying to follow the original plan.

Agile methodology has various derivate approaches, such as Extreme Programming, Dynamic Systems

Development Method (DSDM), and SCRUM. Extreme Programming is one of the most widely used approaches.

Extreme Programming

In Extreme Programming, rather than designing whole of the system at the start of the project, the preliminarydesign work is reduced to solving the simple tasks that have already been identified.

The developers communicate directly with customers and other developers to understand the initial requirements.They start with a very simple task and then get feedback by testing their software as soon as it is developed. Thesystem is delivered to the customers as soon as possible, and the requirements are refined or added based on

customer feedback. In this way, requirements evolve over a period of time, and developers are able to respondquickly to changes.

The real design effort occurs when the developers write the code to fulfill the specific engineering task. Theengineering task is a part of a greater user story (which is similar to a use case). The user story concerns itself with how the overall system solves a particular problem. It represents a part of the functionality of the overall

system. A group of user stories is capable of describing the system as a whole. The developers refactor theprevious code iteration to establish the design needed to implement the functionality.

8/7/2019 45415674-Agile-Methodology

http://slidepdf.com/reader/full/45415674-agile-methodology 2/6

During the Extreme Programming development life cycle, developers usually work in pairs. One developer writesthe code for a particular feature, and the second developer reviews the code to ensure that it uses simple solutionsand adheres to best design principles and coding practices.

Discussion of the core practices of Extreme Programming is beyond the scope of this chapter. For moreinformation, see the links referred to in "More Information" later in this section.

Test-driven development, which is one of the core practices in Extreme Programming, is discussed in greater detaillater in this chapter.

When to Use Extreme Programming

Extreme Programming is useful in the following situations:

• When the customer does not have a clear understanding of the details of the new system. The developers

interact continuously with the customer, delivering small pieces of the application to the customer for

feedback, and taking corrective action as necessary.

• When the technology used to develop the system is new compared to other technologies. Frequent test

cycles in Extreme Programming mitigate the risk of incompatibility with other existing systems.

• When you can afford to create automated unit and functional tests. In some situations, you may need to

change the system design so that each module can be tested in isolation using automated unit tests.

• When the team size is not very large (usually 2 to 12 people). Extreme Programming is successful in part

because it requires close team interaction and working in pairs. A large team would have difficulty in

communicating efficiently at a fast pace. However, large teams have used Extreme Programming

successfully.

Agile Testing: ExampleAgile methodology with Extreme Programming and test-driven development was used to develop the Smart ClientOffline Application Block. The following are highlights of the approach taken on the project:

• The test team and the development team were not formally separated. The developers worked in pairs,

with one person developing the test cases and the other writing the functionality for the module.

• There was much more interaction among team members than there is when following a traditional

development model. In addition to using the informal chat-and-develop mode, the team held a 30 minute

daily standup meeting, which gave team members a forum for asking questions and resolving problems,

and weekly iterative review meetings to track the progress for each iterative cycle.

• Project development began without any formal design document. The specifications were in the form of 

user stories that were agreed upon by the team members. In the weekly iterative review meetings, team

members planned how to complete these stories and how many iterations to assign for each story.

• Each story was broken down into several tasks. All of the stories and corresponding tasks were written

down on small cards that served as the only source of design documentation for the application block.

• While developing each task or story, NUnit test suites were written to drive the development of features.

• No formal test plans were developed. The testing was primarily based on the tasks or stories for feature

development. The development team got immediate feedback from the test team. Having the test team

create the quick start samples gave the development team a perspective on the real-life usage of the

application block.

8/7/2019 45415674-Agile-Methodology

http://slidepdf.com/reader/full/45415674-agile-methodology 3/6

• After the task or story passed all of the NUnit test cases and was complete, quick start samples were

developed to showcase the functionality. The quick start samples demonstrated the usage of the

application block and were useful for further testing the code in the traditional way (functional and

integration tests). Any discrepancies found in this stage were reported immediately and were fixed on a

case-by-case basis. The modified code was tested again with the automated test suites and then was

handed over to be tested again with the quick start samples.

Programme testingOn many programmes and large projects, testing will take up a significant portion of the budget. But it will receive lessmanagement attention than an activity of this size warrants. At Acutest, we help programme and project managersdefine what they want to achieve from testing; deliver the testing benefits and maximise the return on the resourcesused.

And testing is not just about reducing risk - it is also about increasing control. By aligning the testing objectives withthe business objectives and by increasing the effectiveness of testing both can be delivered.

For example:

including testing expertise in the contractual definitions for the system or service and theacceptance processes can significantly reduce the delivery risks

providing objective and accurate information on risks, issues and milestones throughout the projectlifecycle can significantly increase control.

And this clarity enables managers to make informed and timely choices as the project proceeds. Effective testingservices improve the outcome and the journey to create it.

Background:

To understand the Testing Process in an Agile Development Methodology, it is important to

understand the Agile Development paradigm.

Agile Development paradigm is not very new. Although the Agile Software Development

Manifesto came into existence in February 2001, the concepts existed long before that and wereexpressed in different ways. Spiral Development Methodology is one such example.

Understanding Agile Software Development:

The Agile Software Development primarily focuses on an iterative method of development and

delivery.

The developers and end users communicate closely and the software is built. A working piece of 

software is delivered in a short span of time and based on the feedback more features and

capabilities are added.The focus is on satisfying the customer by delivering working software quickly with minimum

features and then improvising on it based on the feedback. The customer is thus closely involvedin the Software Design and Development Process.

The delivery timelines are short and the new code is built on the previous one.

Despite this, high quality of the product cannot be comprised.

This creates a different set of challenges for Software Testing.

8/7/2019 45415674-Agile-Methodology

http://slidepdf.com/reader/full/45415674-agile-methodology 4/6

How is Testing approach different in an Agile Development Scenario?

The Testing Strategy and Approach in Agile Development could be very different from

traditional bureaucratic methods. In fact it could vary with project needs and the project team.

In many scenarios, it may make sense to not have a separate testing team.The above statement should be understood carefully. By not having a testing team we do not

consider testing to be any less important. In fact testing can done more effectively in short turnaround times, by people who know the system and its objectives very well.

For example in certain teams Business Analysts could be doing a few rounds of testing each time

the software version is released. Business Analysts understand the Business Requirements of the

Software and test it to verify if it meets the requirements.

Developers may test the software. They tend to understand the system better and can verify the

test results in a better way. Testing for AGILE Software Development requires innovativethinking and the right mix of people should be chosen for doing the testing.

What to test?

Given the relatively short turn around times in this methodology it is important that the team isclear on what needs to be tested. Even though close interaction and innovation is advocated

rather than processes, sufficient emphasis is given to the testing effort.

While each team may have its own group dynamics based on the context, each code has to be

unit tested. The developers do the unit testing to ensure that the software unit is functioning

correctly.Since the development itself is iterative it is possible that the next release of code was built by

modifying the previous one. Hence Regression Testing gains significant importance in thesesituations.

The team tests if the newly added functionality works correctly and that the previously released

functionality still works as expected.

Test Automation also gains importance due to short delivery timelines. Test Automation may

8/7/2019 45415674-Agile-Methodology

http://slidepdf.com/reader/full/45415674-agile-methodology 5/6

 prove effective in ensuring that everything that needs to be tested was covered.

It is not necessary that costly tools be purchased to automate testing. Test Automation can be

achieved in a relatively cost effective way by utilizing the various open source tools or bycreating in-house scripts. These scripts can run one or more test cases to exercise a unit of code

and verify the results or to test several modules.

This would vary with the complexity of the Project and the experience of the Team

Typical bugs found when doing agile testing?

Although nothing is typical about any Agile Development Project and each project may have its

own set of complexities, by the very nature of the paradigm bugs may be introduced in thesystem when a piece of code is modified/enhanced/changed by one or more Developers.

Whenever a piece of code is changed it is possible that bugs have been introduced to it or 

 previously working code is now broken. New bugs/defects can be introduced at every change or old bugs/defects may be reopened.

Steps Taken to Effectively Test in Agile Development Methodology:

As a wise person once said there is no substitute to hard work.The only way one can effectively test is by ensuring Sufficient Test Coverage and Testing Effort

Automated or otherwise.

The challenge could be lack of documentation, but the advantage could be close communication between team members thereby resulting in greater clarity of thought and understanding of the

system.

Each Time Code is changed Regression Testing is done. Test Coverage is ensured by havingAutomated Scripts and the right mix/combination of People executing the Test Cases.

Exploratory Testing may also be encouraged. Exploratory Tests are not pre-designed or pre-

defined. The Tests are designed and executed immediately. Similarly ad hoc testing may also beencouraged. Ad-hoc testing is done based on the tester’s experience and skills.

While automated Test Cases will ensure that the Test Cases scripted are executed as defined, theteam may not have enough time to design and script all the test cases.

Ensuring software test coverage

To ensure that delivered product meets the end user’s requirements it is important that sufficient

testing is done and all scenarios are tested.

Sufficient Test Coverage in an Agile Development Scenario may be tricky but with close

8/7/2019 45415674-Agile-Methodology

http://slidepdf.com/reader/full/45415674-agile-methodology 6/6

cooperation and the right team dynamics it may not be impossible.

The objectives of the Project should be clear to the entire team. Many teams advocate TestDriven Development. At every stage the Software is tested if it meets the Requirements. Every

Requirement is translated to a Test Case and Software is validated/ verified. While the Processes

and Documentation are not stressed upon sufficient steps are taken to ensure that the software isdelivered as per the User Expectations. This implies that each Software delivery should be tested

thoroughly before it is released.

The timelines being short requires that the person testing the software has sufficient knowledge

about the system and its objectives