TESTERS AND CODERS:
BLURRING THE LINES
Noam Kfir
Consultant & Trainer
noam@kfir.cc | http://noam.kfir.cc | @NoamKfir
NOAM KFIR
• Consultant and Trainer
• Telerik Developer Expert
• Ranorex Professional
• ISTQB Reviewer
• Agile Practitioners Meetup Co-organizer
• Specialize in test automation for
both testers and coders
• Ranorex, Selenium…
• TDD, BDD, Unit & Integration Testing…
• JavaScript, C#…
TESTERS AND CODERS
MUST LEARN FROM EACH OTHER
BULWORTH
a little warning about language
BUT WHY?
Mutual
respect
Effective
Collaboration
Quality
MANIFESTO FOR AGILE SOFTWARE DEVELOPMENT
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
http://agilemanifesto.org/
AGILE PROGRAMINĖS ĮRANGOS KŪRIMO MANIFESTAS
Kurdami programinę įrangą ir padėdami ją kurti kitiems,
mes randame geresnius būdus tai daryti.
Dirbdami mes vertiname:
Žmones ir jų bendravimą labiau nei procesus ir įrankius
Veikiančią programinę įrangą labiau nei išsamią dokumentaciją
Bendradarbiavimą su klientu labiau nei derybas dėl kontraktų
Reagavimą į pokyčius labiau nei plano vykdymą
Be abejo, teiginiai dešinėje svarbūs,
tačiau mes labiau vertiname teiginius kairėje.
http://agilemanifesto.org/iso/lt/manifesto.html
PRINCIPLES BEHIND THE AGILE MANIFESTO
1. Our highest priority is to satisfy the customer
through early and continuous delivery of valuable
software.
2. Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
3. Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
4. Business people and developers must work
together daily throughout the project.
5. Build projects around motivated individuals. Give
them the environment and support they need,
and trust them to get the job done.
6. The most efficient and effective method of
conveying information to and within a
development team is face-to-face conversation.
7. Working software is the primary measure of
progress.
8. Agile processes promote sustainable
development. The sponsors, developers, and
users should be able to maintain a constant pace
indefinitely.
9. Continuous attention to technical excellence and
good design enhances agility.
10. Simplicity--the art of maximizing the amount of
work not done--is essential.
11. The best architectures, requirements, and
designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to
become more effective, then tunes and adjusts its
behavior accordingly.
http://agilemanifesto.org/principles.html
QUALITY
WE’RE MISSING SOMETHING…
Why do we need Agile to begin
with?
QUALITY
satisfy the
customer
working
software
technical
excellence
good design simplicity …
ROLES & RESPONSIBILITIES
WE’RE MISSING SOMETHING ELSE…
It’s a bit more subtle…
ROLES & RESPONSIBILITIES
we customers
business
people
developers
individuals teams sponsors users
THE CHICKEN AND THE PIG
A Pig and a Chicken are walking down the road.
Chicken: Hey Pig, I was thinking we should open a restaurant!
Pig: Hm, maybe, what would we call it?
Chicken: How about 'ham-n-eggs'?
Pig: No thanks. I'd be committed, but you'd only be involved.
https://en.wikipedia.org/wiki/The_Chicken_and_the_Pig
WE ARE ALL DEVELOPERS
Programmers
(Coders)
Quality Professionals
(Testers)
Designers
Architects Product Managers
Support
😎
DEVELOPERS == PROGRAMMERS
• Everybody else is just support
• Reflected in culture, salaries, work
conditions, growth potential, personal
relations, etc.
• Do you participate in every important
meeting: spec, planning, daily…?
• Fight entrenched perceptions
• Do not use “developers” as an eponym
TAKE DOWN THE WALL
• Between coding and testing teams
• And within cross-functional teams
• Focus on “individuals and interactions” and “face-to-face conversations”
• Be kind, insistent and professional, not aggressive
• The organization is a facilitator for change
• Responsible for culture, work conditions, personal mindsets, involvement…
• Change your place of work…
DISSONANCE PARADIGMS
THE ANNOYING BUGGER PARADIGM
• Testers seen as incompetent
• Unexpected environments and configurations considered improper
usage
• Trivial issues considered pedantic, annoying, critical or even insulting
• Testers faulted for “no repros” – their inability to reproduce bugs
• Testers considered solely responsible for bugs
Annoying
Bugger
incompetent
THE OUT IN THE COLD PARADIGM
• Testers generally seen as nonessential
• Not “builders”, so can’t contribute much
• Can never reach full coverage, so collaboration considered wasteful
• Insightful feedback reported as defects often ignored
• Testing seen as mundane and repetitive, lacking creativity
• Often unappreciated and regarded as insignificant and unskilled
Out in the
Cold
nonessential
THE NECESSARY EVIL PARADIGM
• Testers seen as gatekeepers, a safety net, a necessary evil
• Often seen as the last line of defense, and become the only line of
defense
• Responsible for the impossible feat of catching every bug before it gets
to production… and inevitably ruins the company
• Sign-offs may entail repercussions
• Don’t want them, but can’t live without them…
Necessary
Evil
lone
gatekeeper
PARADIGM SHIFTS
ANNOYING BUGGER REVISITED
• Testers accepted as quality experts
• Bugs reported and evaluated by consensus
• The team tracks down “no repros” together
• Testers share authority and collaborate with coders and other team
members
Annoying
Bugger
incompetent
quality
expert
OUT IN THE COLD REVISITED
• Testers accepted as active collaborators
• Quality perspective expected in every meeting
• Feedback given face-to-face
• Prioritized coverage preferred to full coverage as system evolves
• Reliance on automation and tooling grows
• Testing recognized as creative, challenging and essential
Out in the
Cold
nonessential
active
collaborator
NECESSARY EVIL REVISITED
• Testers accepted as full-fledged team members
• Testers are no longer lone gatekeepers
• The “last link” in the chain no longer blamed for everybody else’s
failures
• Everybody takes responsibility together
• Safety net provided by proper planning, tools and collaboration
• Automation and reflection replace sign-offs and repercussions
Necessary
Evil
lone
gatekeeper
team
member
TESTERS ARE DEVELOPERS
Annoying
Bugger
incompetent
quality
expert
Out in the
Cold
nonessential
active
collaborator
Necessary
Evil
lone
gatekeeper
team
member
EVOLUTION
Agile testing is finally catching up with Agile
programming
CONVERGING ROLES
Coders are writing tests
Testers are writing
MANY PARALLELS AND SIMILARITIES
• Reliance on tests
• Iterative work patterns
• Focus on preventing regressions
• Verifying correctness
• …
• Solving problems
• Creativity
• Satisfaction
NOT ENOUGH SHARING
• Coders and testers both have rich tomes of knowledge
• Each has its own culture, educational material, best practices, heroes,
career paths, tools, humor…
• They are slowly converging, but not benefitting from each other’s
maturity
INEFFECTIVE CONVERGENCE
Coders are writing poor tests
Testers are writing poor code
CODERS MUST IMPROVE THEIR
TESTING SKILLS
SOME SYMPTOMS
Overlapping tests Wholes in coverage
Only one or two
types of test
Missing boundary
value tests
Unhandled
exceptions
Swallowed
exceptions
No repros
Consistent difficulty
debugging
Obvious use cases
untested
All tests in one file
Legacy code black
holes
High cyclomatic
complexity
TESTING SKILLS
Boundary analysis and equivalence partitioning
Test design techniques
Exploratory testing
Assessing risk and prioritizing tests
TESTERS MUST IMPROVE THEIR
CODING SKILLS
SOME SYMPTOMS
Scripts Magic strings
Buggy test
code
Unreadable
code
Not reusable
Purely
imperative
Parameterless
functions
One test
machine
Different
languages
Lack of
structure
Require
intervention
No
modularity
CODING SKILLS
Apply SOLID principles and design patterns
Refactor (safely!)
Write atomic, resilient maintainable tests
Be lazy (in a good way…)
ELIMINATE
PROGRAMMERS
AND
TESTERS
We need a
voluntary
free-spirited
open-ended
program of
procreative racial
deconstructionMetaphorically…
DECONSTRUCTING CULTURE
Take down the wall
All pigs are developers
Break the dissonance paradigms
• quality experts, active collaborators, team members
DECONSTRUCTING COLLABORATION
Motivate individuals to take ownership of expertise
• Let individuals self-select areas of expertise
Build up cross-functional and self-organizing teams
Encourage face-to-face conversations
DECONSTRUCTING SKILLS
Train all developers together
• On an ongoing basis
Share knowledge and skills across professional boundaries
• Teach the rudiments of each role to all developers
Encourage pairing as needed
• To solve problems and to train
QUALITY
IS A SHARED RESPONSIBILITY!
Specialization
Collaboration
Common ground
QUESTIONS?
Testers and Coders: Blurring the Lines
Noam Kfir
Consultant & Trainer
noam@kfir.cc | http://noam.kfir.cc | @NoamKfir

Testers and Coders - Blurring the Lines

  • 1.
    TESTERS AND CODERS: BLURRINGTHE LINES Noam Kfir Consultant & Trainer [email protected] | http://noam.kfir.cc | @NoamKfir
  • 2.
    NOAM KFIR • Consultantand Trainer • Telerik Developer Expert • Ranorex Professional • ISTQB Reviewer • Agile Practitioners Meetup Co-organizer • Specialize in test automation for both testers and coders • Ranorex, Selenium… • TDD, BDD, Unit & Integration Testing… • JavaScript, C#…
  • 3.
    TESTERS AND CODERS MUSTLEARN FROM EACH OTHER
  • 4.
  • 6.
  • 7.
    MANIFESTO FOR AGILESOFTWARE DEVELOPMENT We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. http://agilemanifesto.org/
  • 8.
    AGILE PROGRAMINĖS ĮRANGOSKŪRIMO MANIFESTAS Kurdami programinę įrangą ir padėdami ją kurti kitiems, mes randame geresnius būdus tai daryti. Dirbdami mes vertiname: Žmones ir jų bendravimą labiau nei procesus ir įrankius Veikiančią programinę įrangą labiau nei išsamią dokumentaciją Bendradarbiavimą su klientu labiau nei derybas dėl kontraktų Reagavimą į pokyčius labiau nei plano vykdymą Be abejo, teiginiai dešinėje svarbūs, tačiau mes labiau vertiname teiginius kairėje. http://agilemanifesto.org/iso/lt/manifesto.html
  • 9.
    PRINCIPLES BEHIND THEAGILE MANIFESTO 1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 4. Business people and developers must work together daily throughout the project. 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. 7. Working software is the primary measure of progress. 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. 9. Continuous attention to technical excellence and good design enhances agility. 10. Simplicity--the art of maximizing the amount of work not done--is essential. 11. The best architectures, requirements, and designs emerge from self-organizing teams. 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. http://agilemanifesto.org/principles.html
  • 10.
    QUALITY WE’RE MISSING SOMETHING… Whydo we need Agile to begin with?
  • 11.
  • 12.
    ROLES & RESPONSIBILITIES WE’REMISSING SOMETHING ELSE… It’s a bit more subtle…
  • 13.
    ROLES & RESPONSIBILITIES wecustomers business people developers individuals teams sponsors users
  • 14.
    THE CHICKEN ANDTHE PIG A Pig and a Chicken are walking down the road. Chicken: Hey Pig, I was thinking we should open a restaurant! Pig: Hm, maybe, what would we call it? Chicken: How about 'ham-n-eggs'? Pig: No thanks. I'd be committed, but you'd only be involved. https://en.wikipedia.org/wiki/The_Chicken_and_the_Pig
  • 15.
    WE ARE ALLDEVELOPERS Programmers (Coders) Quality Professionals (Testers) Designers Architects Product Managers Support 😎
  • 16.
    DEVELOPERS == PROGRAMMERS •Everybody else is just support • Reflected in culture, salaries, work conditions, growth potential, personal relations, etc. • Do you participate in every important meeting: spec, planning, daily…? • Fight entrenched perceptions • Do not use “developers” as an eponym
  • 17.
    TAKE DOWN THEWALL • Between coding and testing teams • And within cross-functional teams • Focus on “individuals and interactions” and “face-to-face conversations” • Be kind, insistent and professional, not aggressive • The organization is a facilitator for change • Responsible for culture, work conditions, personal mindsets, involvement… • Change your place of work…
  • 18.
  • 19.
    THE ANNOYING BUGGERPARADIGM • Testers seen as incompetent • Unexpected environments and configurations considered improper usage • Trivial issues considered pedantic, annoying, critical or even insulting • Testers faulted for “no repros” – their inability to reproduce bugs • Testers considered solely responsible for bugs Annoying Bugger incompetent
  • 20.
    THE OUT INTHE COLD PARADIGM • Testers generally seen as nonessential • Not “builders”, so can’t contribute much • Can never reach full coverage, so collaboration considered wasteful • Insightful feedback reported as defects often ignored • Testing seen as mundane and repetitive, lacking creativity • Often unappreciated and regarded as insignificant and unskilled Out in the Cold nonessential
  • 21.
    THE NECESSARY EVILPARADIGM • Testers seen as gatekeepers, a safety net, a necessary evil • Often seen as the last line of defense, and become the only line of defense • Responsible for the impossible feat of catching every bug before it gets to production… and inevitably ruins the company • Sign-offs may entail repercussions • Don’t want them, but can’t live without them… Necessary Evil lone gatekeeper
  • 22.
  • 23.
    ANNOYING BUGGER REVISITED •Testers accepted as quality experts • Bugs reported and evaluated by consensus • The team tracks down “no repros” together • Testers share authority and collaborate with coders and other team members Annoying Bugger incompetent quality expert
  • 24.
    OUT IN THECOLD REVISITED • Testers accepted as active collaborators • Quality perspective expected in every meeting • Feedback given face-to-face • Prioritized coverage preferred to full coverage as system evolves • Reliance on automation and tooling grows • Testing recognized as creative, challenging and essential Out in the Cold nonessential active collaborator
  • 25.
    NECESSARY EVIL REVISITED •Testers accepted as full-fledged team members • Testers are no longer lone gatekeepers • The “last link” in the chain no longer blamed for everybody else’s failures • Everybody takes responsibility together • Safety net provided by proper planning, tools and collaboration • Automation and reflection replace sign-offs and repercussions Necessary Evil lone gatekeeper team member
  • 26.
    TESTERS ARE DEVELOPERS Annoying Bugger incompetent quality expert Outin the Cold nonessential active collaborator Necessary Evil lone gatekeeper team member
  • 27.
    EVOLUTION Agile testing isfinally catching up with Agile programming
  • 28.
    CONVERGING ROLES Coders arewriting tests Testers are writing
  • 29.
    MANY PARALLELS ANDSIMILARITIES • Reliance on tests • Iterative work patterns • Focus on preventing regressions • Verifying correctness • … • Solving problems • Creativity • Satisfaction
  • 30.
    NOT ENOUGH SHARING •Coders and testers both have rich tomes of knowledge • Each has its own culture, educational material, best practices, heroes, career paths, tools, humor… • They are slowly converging, but not benefitting from each other’s maturity
  • 31.
    INEFFECTIVE CONVERGENCE Coders arewriting poor tests Testers are writing poor code
  • 32.
    CODERS MUST IMPROVETHEIR TESTING SKILLS
  • 33.
    SOME SYMPTOMS Overlapping testsWholes in coverage Only one or two types of test Missing boundary value tests Unhandled exceptions Swallowed exceptions No repros Consistent difficulty debugging Obvious use cases untested All tests in one file Legacy code black holes High cyclomatic complexity
  • 34.
    TESTING SKILLS Boundary analysisand equivalence partitioning Test design techniques Exploratory testing Assessing risk and prioritizing tests
  • 35.
    TESTERS MUST IMPROVETHEIR CODING SKILLS
  • 36.
    SOME SYMPTOMS Scripts Magicstrings Buggy test code Unreadable code Not reusable Purely imperative Parameterless functions One test machine Different languages Lack of structure Require intervention No modularity
  • 37.
    CODING SKILLS Apply SOLIDprinciples and design patterns Refactor (safely!) Write atomic, resilient maintainable tests Be lazy (in a good way…)
  • 38.
  • 39.
    DECONSTRUCTING CULTURE Take downthe wall All pigs are developers Break the dissonance paradigms • quality experts, active collaborators, team members
  • 40.
    DECONSTRUCTING COLLABORATION Motivate individualsto take ownership of expertise • Let individuals self-select areas of expertise Build up cross-functional and self-organizing teams Encourage face-to-face conversations
  • 41.
    DECONSTRUCTING SKILLS Train alldevelopers together • On an ongoing basis Share knowledge and skills across professional boundaries • Teach the rudiments of each role to all developers Encourage pairing as needed • To solve problems and to train
  • 42.
    QUALITY IS A SHAREDRESPONSIBILITY! Specialization Collaboration Common ground
  • 43.
    QUESTIONS? Testers and Coders:Blurring the Lines Noam Kfir Consultant & Trainer [email protected] | http://noam.kfir.cc | @NoamKfir