You are on page 1of 16

Agile Practices

Pair Programming

We help each other succeed. This practice comes


from XP.
Pair Programming
When you pair, one person codes—the driver. The other person is the
navigator, whose job is to think
The driver focuses on writing syntactically correct code.
The navigator sometimes works on understanding how the current work
fits in the over-all design and sometimes thinks of the next task.
Since we are trying to do simple design things are evolving the developers
require a lot of discipline and pair programming enforces this.

This form of development is very resilient to external interruptions.

Above all it allows and forces individuals to collaborate and share


knowledge.
Pair Programming- Challenges
Pair programming can be uncomfortable in the
beginning, especially if you are not used to
collaborating.

Comfort needs repeating.

Communication issues.

Organizational buy-in - Isn’t it more expensive?


Continuous Integration
The ultimate goal of continuous integration is to be able to deploy all code.

Although you won’t release in the middle of a sprint, the point is to be


technologically ready, even if you are not functionally.

With Continuous integration, you are integrating in short cycle and thus have
smaller changes to deal with as you integrate.

Continuous integration does not make sense unless it’s automated, has a short
turn around time (fast builds), and everyone owns the concept of Green Builds.

You need tests to fail or pass a build. Tests are the backbone that give you a
green or a red light to take a snapshot of your build.
Continuous Integration - Advantages

• Reduces to lengthy process


• Enables the Small Releases practice
Continuous Integration – Disadvantages

• The one day limit is not always practical


• Reduces the importance of a well-thought-out
architecture
Test Driven Development

We produce well-designed, well-tested, and


well-factored code in small, verifiable steps.
Test Driven Development
Test-driven development, or TDD, is a rapid cycle of testing, coding,
and refactoring

Why do this: Programming is demanding. It requires perfection and


consistency for months.

TDD cranks up the feedback on the execution of your code. Every


few minutes TDD verifies that the code does what you think it
should do.

If you do this correctly and in incremental steps you can reduce the
defects in your system.
Test Driven Development
Benefits
Makes finding mistakes easy.

Think of double-entry bookkeeping. You express your


intent twice, once with a testand another with
production code.

All these tests are checked in and become part of


your continuous integration.
Test Driven Development- Challenges
It will increase your effort. But should reduce effort at the
end of delivery cycle.

If you have legacy code extra effort and time is required to


place hooks for TDD.

The basic steps of TDD are easy to learn, but the mindset
takes a while to master.

This is a skill and requires continuous practice to get better.


Refactoring
Refactoring is the process of code improvement
where code is reorganised and rewritten to make it
more efficient, easier to understand, etc.
Refactoring is required because frequent releases
mean that code is developed incrementally and
therefore tends to become messy.
Refactoring should not change the functionality of the
system.
Automated testing simplifies refactoring as you can
see if the changed code still runs the tests
successfully.
Refactoring – Advantages
• Prompts developers to proactively improve
the product as a whole
• Increases developer knowledge of the system
Refactoring – Disadvantages
• Not everyone is capable of refactoring
• Refactoring may not always be appropriate
• Would upfront design eliminate refactoring?
Two views of agile testing
eXtreme Testing Exploratory Testing
 Automated unit testing  Manual testing by professional skilled
testers
◦ Developers write tests
 Freedom, flexibility and fun for testers
◦ Test first development
 Controllability, reliability and high
◦ Daily builds with unit tests always
quality for managers
100% pass
 Optimized to find bugs
 Functional testing
 Continually adjusting plans, re-
◦ Customer-owned focusing on the most promising risk
◦ Comprehensive areas
◦ Repeatable  Following hunches
◦ Automatic  Minimizing time spent on
◦ Timely documentation
◦ Public

Focus on automated Focus on manual


verification – enabling agile validation – making
software development testing activities agile
Definitions of Exploratory Testing
 To the extent that the next test we do is influenced by the result of
the last test we did, we are doing exploratory testing. James Bach,
2001
 Exploratory testing involves simultaneously learning, planning,
running tests, troubleshooting and reporting results. Cem Kaner, 2001

• In scripted testing, tests are first • In exploratory testing, tests are


designed and recorded. Then they designed and executed at the same
may be executed at some later time time, and they often are not
or by a different tester. recorded.

• You build a mental model of the


product while you test it. This model
includes what the product is and
how it behaves, and how it’s
supposed to behave.

You might also like