crafting quality software
TRANSCRIPT
Crafting Quality Software
Best Good Practices
Intro - Tarcio
Intro - Adam
What is Quality?
What is Quality?
Meets customer needs
and provides satisfaction
“Fitness for use”(Juran)
“Conformance to requirements”
(Crosby)
“Quality is pride of workmanship”
(Deming)
Freedom fromdefects of
deficiencies
Value of worthiness
Definition of quality
How good or bad something is?
What is Quality?
What is Quality?
What is Quality?
What is Quality?
● Perceptions● Preconditioned● Experiences● Education● Culture● Opinions
Individual Traits
A Historical Perspective of Quality
A Historical Perspective of Quality
A Historical Perspective of Quality
A Historical Perspective of Quality
A Historical Perspective of Quality
Integrate learningsRenew theoriesAdjust methodsDo we need to learn more?
Act
Study(Check)
Do
Plan
Monitor outcomes, test validityof theory. Test the plan. Examine success or unexpected outcomes. Look for new lessons or problems to solve.
Execute the plan, carry out the
activities, apply our best knowledge,
pursue the desired purpose and goals.
Identify purpose and goals. Formulate
theories and proposals. Define
measures of success (and how to measure them). Plan activities.
A Historical Perspective of Quality
● Team motivation.
● Increased customer satisfaction.
● Return on investment.
What are the Benefits of Quality?
● Individual and collective responsibility.
● Individuals can contribute in different ways.
● Starts when an idea is conceived and continues throughout a product’s lifecycle.
Who is Responsible?
Applying Quality
3 Aspects of Software Quality
Process
Structural Functional
What can we do to ensure quality?
Does the software do whatis supposed to do?
Is the software easy to modify and enhance?
Functional and Structural Traits
Correctness
Usability
Efficiency
Reliability
Integrity
Adaptability
Accuracy
Robustness
Maintainability
Flexibility
Portability
Reusability
Readability
Testability
Understandability
Security
FunctionalStructural
Process’ activities
Inception Iteration Zero
Iteration Kick Off
StoryKick Off
Story Walkthrough Release
Development Retrospective
Functional + Structural Quality
UnderstandabilityKnowledge share
PairingBetter
written software
Team Collaboration
Pair Programming
Nope, not like this
Pair Programming
Yeah, more like this
Pair Programming Traits
● Emotionally demanding● Constant learning● Conversational● Collaborative● High quality output● Costly (2 heads per problem)
TIME
Prod
uctiv
ity
Quality
Cost
Testing
Functional + Structural Quality
TestabilityValidates requirements
Confidence
Robustness
● Costs more● No real focus● Slow to run● Longer to write● Too Integrated
Testing Sad Reality
Testing IdealExploratory
Testing
Test Driven Development
Test Driven Development
● Not a silver bullet● Know when to use it● Understand first, TDD later
Unit Testing
Small
Fast
Isolated
Cost effective
Focused
Unit Testing
Helps design
Find issues early
Facilitate change
Facilitate integration
Integration Testing
Two unit tests, no integration test.
Acceptance Testing
Exploratory Testing
Test Design
Test Execution
Analysis
Learn
Other Types of Testing
“You never know what a customer will doto your product until they do it”
- Adam Crough
● Smoke testing.
● Penetration testing.
● Performance testing.
● User testing.
● Accessibility testing.
● Regression testing.
● A/B testing.
● Functional testing.
● Acceptance testing.
● Security testing.
Continuous Integration
● Automate code checks
● Exercise regression testing
● Improves team confidence
Visibility
Continuous Delivery
Plan Build
Release Test
One more thing
User Validation
User Validation - Types
Q & A Observation Prototyping Release early
User Validation - Benefits (Case Study)
18 Month Project
3 months 6 months 9 months
Final thoughts
Collaborate oftenTest, test, test
Automate checksVisualize results
Involve users early
Everyone is responsible for quality
Thank you!
@tarciosaraiva
http://bit.ly/acrough