Agile Testing
Short Description
Download Agile Testing...
Description
AGILE TESTING
• Traditi Traditionally onally,, Testing esting is a phase in a softw software are developm development ent life life cycle cycle (SDLC). •
STLC generally begins with Test planning and ends with Test execution followed by Defect Analysis and reporting.
• Testin Testing g is always performe performed d after after Coding Coding is comple complete. te. •
Customers and end users are involved only in the Acceptance Testing
•
Critical Bugs are reported at the end of the phase and hence there is a delay in Release.
•
Effort & Cost overruns
•
Final Software is delivered late as a result of which it becomes less competitive.
• Traditi Traditionally onally,, Testing esting is a phase in a softw software are developm development ent life life cycle cycle (SDLC). •
STLC generally begins with Test planning and ends with Test execution followed by Defect Analysis and reporting.
• Testin Testing g is always performe performed d after after Coding Coding is comple complete. te. •
Customers and end users are involved only in the Acceptance Testing
•
Critical Bugs are reported at the end of the phase and hence there is a delay in Release.
•
Effort & Cost overruns
•
Final Software is delivered late as a result of which it becomes less competitive.
What is Agile Methodology? •
Agile methodology is an iterative incremental framework for managing complex work . Agile testing is the process of testing a software which focuses primarily on finding at point which the software works rather than finding where the software breaks, which proves this approach different from the traditional methodology.
• The develo developme pment nt and testing testing duratio duration n was divided divided into into number number of of iterations iterations (also called as Sprints) with each iteration duration varying from 15 days to 1 month (approx.). •
All the requirements are consolidated and divided into User Stories (User story is a collection of requirements).
•
Product Backlog contains the complete list of all the required stories prioritized by business value. Iteration backlog contains the list of all user stories for that iteration with the estimated working hours for each user story.
•
Both the Software Testing Life Cycle and Software Development Life Cycle work parallel in Agile Methodology.
•
Accelerate the realization of the benefits in business since developer, tester and business analyst work as a team.
•
Accommodate change which maintains the flexibility and continuity of business.
•
Reduction of risk
•
Increase visibility of risks, schedule, etc.
•
Improvement of quality – Address business needs. As a result of multidisciplinary team structure, the business needs are properly satisfied. – Helps in reducing missed and false features. – Fewer number of defects reported while testing. – Increase maintainability of the product.
•
Agile methodologies emphasize more on execution than on documentation. This helps in delivering flawless software.
•
It emphasizes more on client requirements, working of the software, clear communication, scrum calls and team work and better understanding of the main functionalities. This helps to a greater extent, designing the product as per client requirements.
•
It is a testing practice which adheres to the ‘Agile Manifesto’ treating the development team as the customer of testing.
•
As this development is an incremental approach, so there will be a small release on incremental basis for testing. Releases are therefore, dependent on each other.
• The further development is done on the previously released and tested piece of function or code. • This way the defects are identified at the earlier stage, analyzed and fixed and hence are not carried forward.
Contd… •
Having multidisciplinary team structure, client, developers and testers work together, interact and communicate often to capture the requirements correctly and efficiently. This communication helps in better understanding of the requirements and reduces misunderstandings between clients and developers to maintain a good business.
• The Development team and Test team are co-located so that the clarifications and defect fixes are done then and there itself. This reduces rework and ensures the delivery of the software on time. •
Sharing of updates is done on daily basis via stand up call or scrum call.
Why Testing Matters in Agile? • The success or failure of code to meet requirements or user stories must still be executed and documented in an auditable fashion.
•
Even with business value and cake slices being added in small increments, code still needs to be regression tested
Scope/Requirements
Code for Test
Client
Developer
Requirement clarifications
Tester
Defects reported & analyzed
Requirement issues & clarifications
•
Customer satisfaction by rapid, continuous delivery of usable software
•
Frequent delivery of bug free software
•
Changes in requirements are welcome at any point of time.
•
Rapport between business people and developers
•
Discussion is the best form of communication.
•
Continuous attention to technical excellence and good design.
•
Self-organizing teams
Some of the most common agile methodologies used are:
• Extreme Programming • Dynamic Systems Development Method (DSDM) • SCRUM • Adaptive Software Development(ASD) • Feature Driven Development(FDD)
Extreme Programming teams use a simple form of planning and tracking to decide what should be done next and to predict when the project will be done. Focused on business value, the team produces the software in a series of small fully-integrated releases that pass all the tests the Customer has defined. Extreme Programming Practices: • Test Driven Development •
Pair Programming
•
Short Iterations and Releases
•
Refactoring and User Stories
•
Acceptance Testing
• Team Code Ownership
•
When the customer does not have a clear understanding of the detailed features of the new system. Customer may not have clear idea about the new features of the latest technology used.
•
When the technology used to develop the system is new compared to other technologies. Some product needs development with the latest version of the technology used.
•
When we are able to create automated unit and functional tests.
•
When the team size is small (usually 2 to 12 people).
Note: Extreme Programming is one of the most widely used approaches.
• This is an extension of Rapid Application Development, which primarily focuses on Information Systems projects that are characterized by tight schedules and budgets. •
DSDM addresses the most common failures of information systems projects, which includes exceeding budgets, missing deadlines, and lack of user involvement and top-management commitment. This methodology is very useful for short term projects which are to be delivered in a very short span of time. Therefore, work should be exact and process-oriented.
DSDM consists of Three phases: pre-project phase, project life- cycle phase, and post-project phase. A project life-cycle phase subdivided into 5 stages: feasibility study, business study, functional model iteration, design and build iteration, and implementation
Feasibility
Functional Model Iteration DSDM LIFE CYCLE
Implementation
Design and Build Iteration
Major Roles: Scrum master: One of the team member of scrum team becomes the Scrum master. Scrum team: Developers and Testers comprises the scrum team. Product owner: Customers or the business users who own the product.
24 Hours
30 Days
Product Backlog
Sprint Backlog
Sprint
Working Increment of the Software
The role of testing in SCRUM is that of an integrated approach. The testers will be more closely associated with the developers to provide more immediate feedback to the developers and the team.
Core Scrum practices are: •
Backlog. Product, Release, Sprint Backlog - lists of all requested/required functionality for the product, release and sprint respectively. Product Owner/Manager responsible for the backlog management and maintenance.
•
Iterative development. The whole project gets divided into sprints usually 2 to 4 weeks duration each. Sprints have fixed duration to enable regular deliveries and helps development teams to focus on a shippable product in the end of each sprint.
•
Scrum meetings. Daily time boxed meetings where team members answers the following questions: What you did yesterday? What has impeded your work? What you plan to do today?
•
Burn Down Charts. Scrum Sprint Burn Down chart shows implementation progress during a single sprint. It provides answers on the following questions: When sprint could be completed based on previous progress? What is the most possible scrum team Velocity in future sprints?
•
Sprint review meeting. Provides an inspection of project progress at the end of the every Sprint. The goal is to improve development
Elements of Scrum Process. Product Backlog: The clients who are involved in defining the process, key user scenarios and features for the development of the product, give feedbacks which are used to prioritize the features and enhancements of the product, are logged into Product Backlog. Sprint Backlog: This is a repository of the tasks and features to be implemented in the incoming release. Sprint: Work done in the last scrum, tasks for the next scrum and the impediments comprise the Sprint. This phase usually lasts for minimum of 24 hours to a maximum of 4 weeks.
•
Adaptive Software development works on the principle of continuous adaptation of ideas while developing a software.
•
It uses repeated series of speculate, collaborate and learn cycles to develop the application which is based on requirement changes and client expectations from the product. These series help in adapting the approaches and latest technologies.
• The main purpose of this testing is to deliver the customer a tangible, working software without any delay.
• The development process involves 5 activities: Develop Overall Model, Build Features List, Plan by feature, Design by feature, Build by feature.
•
Milestones are identified and progress is tracked on basis of the achievement of milestone. Milestone Reports are prepared as well.
THE TESTER AND THE TEAM •
An agile tester will contribute to the team from the time the story is presented to the team to when it’s completed.
• The Specific contribution during the phase of work for the tester are:
1. Story Exploration 2. Estimation 3. Story Planning 4. Story Progression 5. Story Acceptance
Story Exploration • The product owner shares this information through: 1. Visible product roadmap 2. Release overviews 3. Iteration planning
Estimation • Estimation is another team activity to which agile testers should contribute.
• Estimate does not equal hours of effort .Estimate is the relative size of a story w.r.t other stories.
• If significant additional testing needs to be performed then that is factored into the estimate also.
Story Planning The Agile tester actively participates in story Planning. • Detailed story planning occurs after a story has been estimated and placed in iteration. • The team identifies the tasks that need to be performed and assigns detailed effort estimates to the story. • The tasks include the standard work of the team that is applicable to the story. • For Testing activities, tasks for standard work are 1.Prepare test data 2.Extend acceptance tests 3.Execute manual tests 4.Conduct exploratory testing sessions 5.Automate testing for the scenarios which are feasible.
Story Progression • Unit testing is done by developers and then the application is send for testing to the testing team. • Testers can review unit test coverage and testers can monitor failed unit tests. • Testers will also conduct exploratory tests as the features become functional. • During this phase, agile tester will also actively communicate information about testing status and progress like: a) Expresses the acceptance criteria of the story in test form. b) Visually indicates the status of story. c) Highlights testing constraint. d) Giving targeted information regarding problem areas and blocking issues.
Story Acceptance • Developers aren’t done when all the code is written; testers aren’t done when all the tests pass or when all the tests are automated. The team is done when story is done.
• Testers contribute both to the team discussion and the team definition.
Automated Testing In Agile • Automated testing still fills an important role in the world of Agile Development • The benefits of automation still apply: repeatability, consistency, better coverage through data driving. • There is also the regression testing that will be required as an iterative approach is developed
Traditional approach •
Requirement and Detailed design documents are mandatory.
•
Processes are defined well ahead.
•
•
•
Agile approach •
Requirement and Design documents are not required and are optional.
•
No processes involved.
Development and Testing teams are rarely co-located.
•
Development and Testing teams are co-located for better communication.
Unit testing and integration testing are handled internally between the testing and development team.
•
Clients are involved in each and every small unit of deliverables and are updated on daily happenings.
•
There will be scrum call or stand up call on daily basis with all the stakeholders.
No scrum calls are conducted on daily basis.
Agile approach Agile approach
Traditional approach •
•
•
•
Face to face communication is limited and mostly not possible. Emphasize more on requirement document, detailed design, weekly reports and review calls process and tools.
•
Face to face communication is highly possible and plays a vital role.
•
Emphasize on client requirements, working software, collaboration, people communication, scrum calls and team work.
•
Saves lot of time since there is lot of interaction among the stakeholders on daily basis.
•
Reduces the time to market cost.
Time consuming in understanding the scope and requirement, getting the defect fix and for the sign-off. Time to market cost is unpredictable
•
Since changes are welcomed at anytime in agile development, change control is common place.
•
In agile testing, no formal test planning is required, instead a detailed test plan is preferred.
• There is no predefined entry or exit criterion as there is no stipulated time frame allotted for testing.
•
Focus would be on priorities, client needs, critical functionalities rather than focusing on the documentation.
•
Very much flexible and adaptable which make these practices more helpful and simpler.
•
Progress can be so closely tracked and can be reported to top management at a very early stage in the process, resulting in
Substituting unit tests for acceptance tests or vice versa. • Acceptance tests are not totally automated. • Automated tests are thought to be sufficient. • Non-functional tests are never taken into execution such as performance, volume, reliability, usability, scalability, memory usage, etc.
The reason behind the success of agile testing is the co-location of the developers, testers and business analysts, which contributes to the delivery for quality software in a very short span of time. Communication becomes the most important for developing a bug free, working software. Discussions, both formal and informal, form the backbone of agile testing. Hence, it will be exceptionally beneficial to follow agile testing methodologies especially in projects where there are frequent changes in requirements and the time to live is short.
www.testing.com/agile BOKs from KShop
Any Questions?
View more...
Comments