Upload
noam-kfir
View
80
Download
1
Embed Size (px)
Citation preview
TESTERS AND CODERS:BLURRING THE LINES
Noam KfirConsultant & [email protected] | 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 forboth testers and coders• Ranorex, Selenium…• TDD, BDD, Unit & Integration Testing…• JavaScript, C#…
TESTERS AND CODERSMUST LEARN FROM EACH OTHER
BULWORTH
a little warning about language
BUT WHY?
Mutual respect
Effective Collaborati
onQuality
MANIFESTO FOR AGILE SOFTWARE DEVELOPMENT
We are uncovering better ways of developingsoftware 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 negotiationResponding to change over following a plan
That is, while there is value in the items onthe 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 įrankiusVeikianč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 sponsor
s 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 Profession
als(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 bugsAnnoying
Buggerincompet
ent
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 unskilledOut 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 gatekee
per
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
Buggerincompet
entquality 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 essentialOut in the Cold
nonessential
active collaborat
or
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 gatekee
perteam
member
TESTERS ARE DEVELOPERS
Annoying
Buggerincompet
entquality expert
Out in the Cold
nonessential
active collaborat
or
Necessary Evil
lone gatekeep
erteam
member
EVOLUTION
Agile testing is finally catching up with Agile programming
CONVERGING ROLES
Coders are writing testsTesters are writing code
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 testsTesters 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 partitioningTest design techniquesExploratory testingAssessing 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
functionsOne test machine
Different languages
Lack of structure
Require interventio
nNo
modularity
CODING SKILLS
Apply SOLID principles and design patternsRefactor (safely!)Write atomic, resilient maintainable testsBe lazy (in a good way…)
EL IMINATEPROGRAMMERS
ANDTESTERS
We need a
voluntaryfree-spiritedopen-endedprogram of
procreative racial deconstructionMetaphorically…
DECONSTRUCTING CULTURE
Take down the wallAll pigs are developersBreak the dissonance paradigms• quality experts, active collaborators,
team members
DECONSTRUCTING COLLABORATION
Motivate individuals to take ownership of expertise• Let individuals self-select areas of expertiseBuild up cross-functional and self-organizing teamsEncourage face-to-face conversations
DECONSTRUCTING SKILLS
Train all developers together• On an ongoing basisShare 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
QUALITYIS A SHARED RESPONSIBILITY!
SpecializationCollaboration
Common ground
QUESTIONS?
Testers and Coders: Blurring the Lines
Noam KfirConsultant & [email protected] | http://noam.kfir.cc | @NoamKfir