testers and coders - blurring the lines

43
TESTERS AND CODERS: BLURRING THE LINES Noam Kfir Consultant & Trainer [email protected] | http://noam.kfir.cc | @NoamKfir

Upload: noam-kfir

Post on 12-Apr-2017

80 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Testers and Coders - Blurring the Lines

TESTERS AND CODERS:BLURRING THE LINES

Noam KfirConsultant & [email protected] | http://noam.kfir.cc | @NoamKfir

Page 2: Testers and Coders - Blurring the Lines

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#…

Page 3: Testers and Coders - Blurring the Lines

TESTERS AND CODERSMUST LEARN FROM EACH OTHER

Page 4: Testers and Coders - Blurring the Lines

BULWORTH

a little warning about language

Page 5: Testers and Coders - Blurring the Lines
Page 6: Testers and Coders - Blurring the Lines

BUT WHY?

Mutual respect

Effective Collaborati

onQuality

Page 7: Testers and Coders - Blurring the Lines

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/

Page 8: Testers and Coders - Blurring the Lines

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

Page 9: Testers and Coders - Blurring the Lines

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

Page 10: Testers and Coders - Blurring the Lines

QUALITY

WE’RE MISSING SOMETHING…

Why do we need Agile to begin with?

Page 11: Testers and Coders - Blurring the Lines

QUALITY

satisfy the

customer

working software

technical

excellence

good design

simplicity …

Page 12: Testers and Coders - Blurring the Lines

ROLES & RESPONSIBILITIES

WE’RE MISSING SOMETHING ELSE…

It’s a bit more subtle…

Page 13: Testers and Coders - Blurring the Lines

ROLES & RESPONSIBILITIES

we customers

business people

developers

individuals teams sponsor

s users

Page 14: Testers and Coders - Blurring the Lines

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

Page 15: Testers and Coders - Blurring the Lines

WE ARE ALL DEVELOPERS

Programmers

(Coders)

Quality Profession

als(Testers)

Designers

Architects Product Managers

Support😎

Page 16: Testers and Coders - Blurring the Lines

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

Page 17: Testers and Coders - Blurring the Lines

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…

Page 18: Testers and Coders - Blurring the Lines

DISSONANCE PARADIGMS

Page 19: Testers and Coders - Blurring the Lines

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

Page 20: Testers and Coders - Blurring the Lines

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

Page 21: Testers and Coders - Blurring the Lines

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

Page 22: Testers and Coders - Blurring the Lines

PARADIGM SHIFTS

Page 23: Testers and Coders - Blurring the Lines

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

Page 24: Testers and Coders - Blurring the Lines

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

Page 25: Testers and Coders - Blurring the Lines

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

Page 26: Testers and Coders - Blurring the Lines

TESTERS ARE DEVELOPERS

Annoying

Buggerincompet

entquality expert

Out in the Cold

nonessential

active collaborat

or

Necessary Evil

lone gatekeep

erteam

member

Page 27: Testers and Coders - Blurring the Lines

EVOLUTION

Agile testing is finally catching up with Agile programming

Page 28: Testers and Coders - Blurring the Lines

CONVERGING ROLES

Coders are writing testsTesters are writing code

Page 29: Testers and Coders - Blurring the Lines

MANY PARALLELS AND SIMILARITIES

• Reliance on tests• Iterative work patterns• Focus on preventing regressions• Verifying correctness• …

• Solving problems• Creativity• Satisfaction

Page 30: Testers and Coders - Blurring the Lines

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

Page 31: Testers and Coders - Blurring the Lines

INEFFECTIVE CONVERGENCE

Coders are writing poor testsTesters are writing poor code

Page 32: Testers and Coders - Blurring the Lines

CODERS MUST IMPROVE THEIR TESTING SKILLS

Page 33: Testers and Coders - Blurring the Lines

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

Page 34: Testers and Coders - Blurring the Lines

TESTING SKILLS

Boundary analysis and equivalence partitioningTest design techniquesExploratory testingAssessing risk and prioritizing tests

Page 35: Testers and Coders - Blurring the Lines

TESTERS MUST IMPROVE THEIR CODING SKILLS

Page 36: Testers and Coders - Blurring the Lines

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

Page 37: Testers and Coders - Blurring the Lines

CODING SKILLS

Apply SOLID principles and design patternsRefactor (safely!)Write atomic, resilient maintainable testsBe lazy (in a good way…)

Page 38: Testers and Coders - Blurring the Lines

EL IMINATEPROGRAMMERS

ANDTESTERS

We need a

voluntaryfree-spiritedopen-endedprogram of

procreative racial deconstructionMetaphorically…

Page 39: Testers and Coders - Blurring the Lines

DECONSTRUCTING CULTURE

Take down the wallAll pigs are developersBreak the dissonance paradigms• quality experts, active collaborators,

team members

Page 40: Testers and Coders - Blurring the Lines

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

Page 41: Testers and Coders - Blurring the Lines

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

Page 42: Testers and Coders - Blurring the Lines

QUALITYIS A SHARED RESPONSIBILITY!

SpecializationCollaboration

Common ground

Page 43: Testers and Coders - Blurring the Lines

QUESTIONS?

Testers and Coders: Blurring the Lines

Noam KfirConsultant & [email protected] | http://noam.kfir.cc | @NoamKfir