DEVELOPMENT WITHOUT TESTERS:
    MYTH OR REAL OPTION?
        Mikalai Alimenkou
      http://xpinjection.com
            29.10.2011
Background
• Java Technical Lead/Scrum Master at Zoral
  Labs
• 7+ years in software development
• 5+ years of working by Agile
  methodologies
• Expert in Agile engineering practices
• Founder and coach at XP Injection
  (http://xpinjection.com)
• Organizer of Selenium Camp, JEEConf and
  XP Days Ukraine conferences
Before start doing something you need to understand it properly

I. WRONG VISION OF TESTING
ACTIVITY
Why so many testers?



Too many bugs                 “Brave” automation team

 Endless regression testing    Very quick development
What is the “ideal”
           dev/tester ratio?
    Dev      Tester ?

      Devs        Tester ?
              Devs        Tester ?

X     Devs    Y         Testers ?
Where may problems
happen?      Can’t implement
                            what they want

            Can’t explain
            requirements

 Customer
        Existing functionality is   Dev Team

       broken when new is ready
Developer is the root of evil!
Instead of
control
lets fix it!
People can’t read minds and any communication channels lose data

II. BROKEN REQUIREMENTS
CHANNEL
Divide work in small pieces
Discuss everything in details
before start implementing
Use prototypes and mockups
Make customers accept
results of development
            responsibly
Even very good developer can make stupid mistake

III. DEVELOPERS MAKE MISTAKES
Team design session
before implementation
100% Code Review
Pair programming for the
      most complex parts
Detailed static code analysis
Stable releasable trunk
Strong definition of DONE
                        Can I start testing
                        this new feature?



     Yes, it is done!




                        But I can’t even build
                            the product…


   Ops, I forgot to
 commit some files...
TDD at all levels
           ATDD                                     TDD
Customer’s Tests                           Programmers’ Tests




  Acceptance       Fixtures   Production     Unit     Integration
    Tests                       Code        Tests        Tests
Existing functionality must never be broken

IV. IMPLEMENTED ONCE, WORKING
FOREVER
Build safety net from
completely automated tests
Global Continuous
       Integration
This role is always needed, but can be played by different people

V. TESTER IS A ROLE, NOT A PERSON
Magic happens when
   everybody know
       that there are
           no testers
Team members can
play different roles
Shared
responsibility
  for quality
    is built
Give development process what it really needs

VI. HOW TO SURVIVE? PLAY RIGHT
ROLE!
Help developers to do
 slicing development
Perform much
exploratory testing
Help customer to
express his minds
@xpinjection
             http://xpinjection.com
mikalai.alimenkou@xpinjection.com

Development without Testers: Myth or Real Option?