It is a common belief that increasing the amount of testing, hiring more testers or increasing the skill/experience of the existing testers will improve the quality of the software being produced. Testing professionals are held accountable as gate keepers of quality, often given the title “Quality Assurance”, which can imply that others are not responsible for quality. This term also gets used for testing activity rather than the testers themselves. “Have we done QA on that?”.
But the truth is, quality is not really about testing per se, or at least it is not determined by it. The whole testing paradigm is different in Agile because it removes the emphasis from checking and inspecting quality to designing and building in quality, including building the right thing for the customer in the first place, and this is something everyone needs to be involved in, not just testers. In an Agile ecosystem, quality is affected both positively and negatively by many factors in sales and marketing through to product and portfolio management, what the customer actually wants/needs, the mindset of the stakeholders involved, and beyond.
This talk will call out these factors, and explain how rejecting the “QA” concept and taking a fresh outlook on what “Agile testing” actually is can help improve the quality of what is being built. I hope this will enable testers and other folks in development teams to look upstream – and those outside the team to look downstream – at collaborative ways to increase the chances of building high quality software for our customers.
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
QA? Not the way! You can't test quality into a product
1. QA? Not the way!
You can’t test quality into a product
@neil_killick
2. What is Quality Assurance (QA)?
“…the maintenance of a desired level of quality in a service or
product, especially by means of attention to every stage of the
process of delivery or production.”
~ Google
“…a way of preventing mistakes or defects in manufactured products
and avoiding problems when delivering solutions or services to
customers… This defect prevention in quality assurance differs subtly
from defect detection and rejection in quality control, and has been
referred to as a shift left as it focuses on quality earlier in the process.”
~ Wikipedia
@neil_killick
3. When something is important across your business,
creating a role for it is generally a bad idea.
@neil_killick
5. What do you need to do a
good job?
@neil_killick
6. What do you need to do a
good job?
Desire - Tools - Capacity - Understanding
@neil_killick
7. Product Development
Build the right thing, build the thing right?
Yeah right!
Projects/PMO
“You must get these
features/projects done on
time! Including all the new
stuff!”
Revenue and KPI’s
“You must deliver $25 million in
revenue this year!”
Marketing
“You must get these features in by May
10th - we promised the market!”
Recruitment
• “I’m a gun, ninja for hire coder - I don’t need
to test my code, that’s what testers are for!”
• Hire quickly, hire for skills and experience,
meet head count
Technical environment/competency
• “We don’t have the time/$$ to invest in CD tools
- just speed up!”
• “We can’t afford that technology!”
• “We don’t have budget for training (and it takes
you away from your work!)”
Mindset
• Tolerance for defects
• Hand-off mentality (“it’s
someone else’s problem!”)
@neil_killick
8. The Manifesto for Shitty Software Development
We are uncovering shittier ways of developing software
by doing feature death marches and helping others do it.
Through this work we have come to value:
Getting shit out the door over doing a good job
Quantity of features over quality of product
Being on schedule over building the right thing
Being busy over having time to build quality in
That is, while there is value in the items on the right,
we value the items on the left more.
@neil_killick
9. “I wasn’t sure whether to do a good
job or meet the deadline…”
~ New starter
@neil_killick
10. The further away the customer, the less
we care, or are accountable for, quality
@neil_killick
15. Receive and understand requirement
Acceptance test - Write failing feature test
Code test - Write failing unit test
Write code
Refactor MY code
Integrate my code
Refactor THE code supporting the feature
Agree all product tests to support feature
Ensure all tests pass
Agility - Ensure THE code is easy to change, delete and extend
Does MY code
do what I expect
it to do?
Does THE code
do what the
USER expects it
to do?
@neil_killick
16. Building in quality to
software products
A guide for managers
and stakeholders
@neil_killick
26. Building in quality to
software products
A guide for product
developers
@neil_killick
27. Working system at all
times - software runs
where it should
Test your own and other’s
code!
No hand-offs - working
together increases quality
Don’t pull too much
work into sprints -
respect capacity
Continuous biz
involvement
(requirements +
feedback)
Make time for
continuous
improvement,
continuously!@neil_killick
28. What is Quality Assurance (QA)?
“…the maintenance of a desired level of quality in a service or
product, especially by means of attention to every stage of the
process of delivery or production.”
~ Google
“…a way of preventing mistakes or defects in manufactured products
and avoiding problems when delivering solutions or services to
customers… This defect prevention in quality assurance differs subtly
from defect detection and rejection in quality control, and has been
referred to as a shift left as it focuses on quality earlier in the process.”
~ Wikipedia
@neil_killick