AGILE TESTING
AGILE TESTING
AGILE TESTING
AGILE TESTING
•
• T Traditiraditionallyonally, T, Testinesting is a g is a phase phase in a sin a softwoftware are devedevelopmlopment lent life cife cycleycle (SDLC).
(SDLC).
•
• STLC generally begins with Test planning and ends with Test executionSTLC generally begins with Test planning and ends with Test execution followed by Defect Analysis and reporting.
followed by Defect Analysis and reporting.
•
• T Testinesting is g is always always perfoperformermed aftd after Coer Coding ding is cois complemplete.te.
•
• Customers and end users are involved only in the Acceptance TestingCustomers and end users are involved only in the Acceptance Testing
•
• Critical Bugs are reported at the end of the phase Critical Bugs are reported at the end of the phase and hence there is aand hence there is a delay in Release.
delay in Release. •
• Effort & Cost overrunsEffort & Cost overruns
•
• FFinal Software is delivered late as inal Software is delivered late as a result of a result of which it becomes lesswhich it becomes less competitive.
•
• T Traditiraditionallyonally, T, Testinesting is a g is a phase phase in a sin a softwoftware are devedevelopmlopment lent life cife cycleycle (SDLC).
(SDLC).
•
• STLC generally begins with Test planning and ends with Test executionSTLC generally begins with Test planning and ends with Test execution followed by Defect Analysis and reporting.
followed by Defect Analysis and reporting.
•
• T Testinesting is g is always always perfoperformermed aftd after Coer Coding ding is cois complemplete.te.
•
• Customers and end users are involved only in the Acceptance TestingCustomers and end users are involved only in the Acceptance Testing
•
• Critical Bugs are reported at the end of the phase Critical Bugs are reported at the end of the phase and hence there is aand hence there is a delay in Release.
delay in Release. •
• Effort & Cost overrunsEffort & Cost overruns
•
• FFinal Software is delivered late as inal Software is delivered late as a result of a result of which it becomes lesswhich it becomes less competitive.
•
• Agile methodology is an iterative Agile methodology is an iterative incremental framework for managing incremental framework for managing complexcomplex work . Agile testing is the
work . Agile testing is the process of testing a software whichprocess of testing a software which focuses primarilyfocuses primarily
on finding at point which the software works
on finding at point which the software works rather than finding where therather than finding where the software breaks, which proves this approach different from the traditional software breaks, which proves this approach different from the traditional methodology.
methodology. •
• The d The develoevelopmepment and nt and testtesting ding duratiouration was n was dividdivided ied into numnto number ober of itef iterations rations (also(also called as Sprints) with each iteration duration varying from 15 days to 1 month called as Sprints) with each iteration duration varying from 15 days to 1 month (approx.).
(approx.).
•
• All the requirements are consolidated and divided into User Stories (User All the requirements are consolidated and divided into User Stories (User story isstory is a collection of requirements).
a collection of requirements).
•
• Product Backlog contains the complete list of all the Product Backlog contains the complete list of all the required stories prioritizedrequired stories prioritized by business value. Iteration backlog contains the list of all user stories for that by business value. Iteration backlog contains the list of all user stories for that iteration with the estimated working hours for each user story.
iteration with the estimated working hours for each user story.
•
• Both the Software Testing Life Cycle and Software Development Life Cycle workBoth the Software Testing Life Cycle and Software Development Life Cycle work parallel in Agile Methodology.
parallel in Agile Methodology.
What is Agile Methodology?
What is 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.
• 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.
Contd
• 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
Client Developer Tester
Scope/Requirements Code for Test
Requirement issues & clarifications
Defects reported & analyzed
• 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
• 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 Design and Build Iteration Implementation DSDM LIFE CYCLE
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 Backlog
Sprint Backlog Sprint Working
Increment of the Software
30 Days 24 Hours
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
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
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
Agile approach
• Requirement and Detailed design documents are mandatory.
• Processes are defined well ahead. • Development and Testing teams are
rarely co-located.
• Unit testing and integration testing are handled internally between the testing and development team.
• No scrum calls are conducted on daily basis.
• Requirement and Design
documents are not required and are optional.
• No processes involved.
• Development and Testing teams are co-located for better communication. • 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.
Traditional approach
Agile 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.
• Time consuming in understanding the scope and requirement, getting the defect fix and for the sign-off. • Time to market cost is unpredictable
• 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.
• 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.