SlideShare a Scribd company logo
Heuristics of Software Testability
                                      by James Bach, Satisfice, Inc.


                                       The better we can control it, the more the testing can be auto-
Controllability                        mated and optimized.
   •   A scriptable interface or test harness is available.
   •   Software and hardware states and variables can be controlled directly by the test engineer.
   •   Software modules, objects, or functional layers can be tested independently.

                                     What you see is what can be tested.
Observability
   •   Past system states and variables are visible or queriable (e.g., transaction logs).
   •   Distinct output is generated for each input.
   •   System states and variables are visible or queriable during execution.
   •   All factors affecting the output are visible.
   •   Incorrect output is easily identified.
   •   Internal errors are automatically detected and reported through self-testing mechanisms.

                                     To test it, we have to get at it.
Availability
   •   The system has few bugs (bugs add analysis and reporting overhead to the test process).
   •   No bugs block the execution of tests.
   •   Product evolves in functional stages (allows simultaneous development and testing).
   •   Source code is accessible.

                                     The simpler it is, the less there is to test.
Simplicity
   •   The design is self-consistent.
   •   Functional simplicity (e.g., the feature set is the minimum necessary to meet requirements)
   •   Structural simplicity (e.g., modules are cohesive and loosely coupled)
   •   Code simplicity (e.g. the code is not so convoluded that an outside inspector can’t effectively
       review it)

                                     The fewer the changes, the fewer the disruptions to testing.
Stability
   •   Changes to the software are infrequent.
   •   Changes to the software are controlled and communicated.
   •   Changes to the software do not invalidate automated tests.

                                     The more information we have, the smarter we will test.
Information
   •   The design is similar to other products we already know.
   •   The technology on which the product is based is well understood.
   •   Dependencies between internal, external and shared components are well understood.
   •   The purpose of the software is well understood.
   •   The users of the software are well understood.
   •   The environment in which the software will be used is well understood.
   •   Technical documentation is accessible, accurate, well organized, specific and detailed.
   •   Software requirements are well understood.




Copyright © 2003 James Bach
Heuristics ofsoftwaretestability

More Related Content

PPTX
Testing Plan
PPTX
Software testability slide share
PPTX
Testing Technique
PPT
Lecture 1
PPTX
Empirically Detecting False Test Alarms Using Association Rules @ ICSE 2015
PPTX
Software engineering 23 software reliability
PPTX
Continuous integration with Drone.IO
PPTX
Regression and performance testing
Testing Plan
Software testability slide share
Testing Technique
Lecture 1
Empirically Detecting False Test Alarms Using Association Rules @ ICSE 2015
Software engineering 23 software reliability
Continuous integration with Drone.IO
Regression and performance testing

What's hot (20)

PPTX
Testability: Factors and Strategy
PPTX
Quality & Reliability in Software Engineering
PPTX
Installation testing
PDF
Bug hunting through_reverse_engineering
PPT
Manual testing - Introduction to Manual Software testing
PPT
Software and Hardware Reliability
PPTX
Adressing nonfunctional requirements with agile practices
PPT
Installation testing
PPT
Fundamentals of Software Engineering
PPTX
The Art of Testing Less without Sacrificing Quality @ ICSE 2015
PPTX
Why do we test software?
PPT
Introduction to Software Engineering 1
PPTX
Software reliability tools and common software errors
PPTX
Fundamentals of Software Engineering
PDF
Introduction to Non Functional Requirement (NFR)
PPTX
Test Strategies in Microservices
PPTX
Software testing
PPT
Fundamentals of Software Engineering
PPTX
System testing
PPT
Software testing
Testability: Factors and Strategy
Quality & Reliability in Software Engineering
Installation testing
Bug hunting through_reverse_engineering
Manual testing - Introduction to Manual Software testing
Software and Hardware Reliability
Adressing nonfunctional requirements with agile practices
Installation testing
Fundamentals of Software Engineering
The Art of Testing Less without Sacrificing Quality @ ICSE 2015
Why do we test software?
Introduction to Software Engineering 1
Software reliability tools and common software errors
Fundamentals of Software Engineering
Introduction to Non Functional Requirement (NFR)
Test Strategies in Microservices
Software testing
Fundamentals of Software Engineering
System testing
Software testing
Ad

Viewers also liked (7)

PPTX
2 d studio art carolyn monastra
PPTX
How Asp.Net Developers Can Leverage Share Point
PDF
PPTX
PDF
PPTX
Share point 2013 on azure
PDF
Joanne Motta: Aussies Love British Columbia
2 d studio art carolyn monastra
How Asp.Net Developers Can Leverage Share Point
Share point 2013 on azure
Joanne Motta: Aussies Love British Columbia
Ad

Similar to Heuristics ofsoftwaretestability (20)

PPT
Design testabilty
PPTX
Software testing
PDF
Testing Theories & Methodologies
PPT
Software quality
PPT
factors
PPT
Product Quality: Metrics, Verification, Validation, Testing
PDF
Peter Zimmerer - Evolve Design For Testability To The Next Level - EuroSTAR 2012
PPT
Chapter 8 Testing Tactics.ppt
PPT
Chapter 8 Testing Tactics.ppt Software engineering
PPT
ISTQB / ISEB Foundation Exam Practice -1
PPTX
DOCX
Se unit 4
PPTX
Test analysis identifying test conditions
PDF
Flexibility a key factor to testability
PPTX
SOFTWARE TESTING.pptx
PPT
1 sqa and testing concepts
PPT
ISTQB, ISEB Lecture Notes
DOCX
Softwaretestingstrategies
PPTX
History Class - For software testers
PPTX
Unit 8 software quality and matrices
Design testabilty
Software testing
Testing Theories & Methodologies
Software quality
factors
Product Quality: Metrics, Verification, Validation, Testing
Peter Zimmerer - Evolve Design For Testability To The Next Level - EuroSTAR 2012
Chapter 8 Testing Tactics.ppt
Chapter 8 Testing Tactics.ppt Software engineering
ISTQB / ISEB Foundation Exam Practice -1
Se unit 4
Test analysis identifying test conditions
Flexibility a key factor to testability
SOFTWARE TESTING.pptx
1 sqa and testing concepts
ISTQB, ISEB Lecture Notes
Softwaretestingstrategies
History Class - For software testers
Unit 8 software quality and matrices

Recently uploaded (20)

PPTX
Orientation - ARALprogram of Deped to the Parents.pptx
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PPTX
Cell Types and Its function , kingdom of life
PDF
Complications of Minimal Access Surgery at WLH
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
Trump Administration's workforce development strategy
PDF
A systematic review of self-coping strategies used by university students to ...
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PPTX
UV-Visible spectroscopy..pptx UV-Visible Spectroscopy – Electronic Transition...
PDF
Weekly quiz Compilation Jan -July 25.pdf
PDF
LNK 2025 (2).pdf MWEHEHEHEHEHEHEHEHEHEHE
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PPTX
Cell Structure & Organelles in detailed.
PDF
Updated Idioms and Phrasal Verbs in English subject
PPTX
History, Philosophy and sociology of education (1).pptx
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Orientation - ARALprogram of Deped to the Parents.pptx
Microbial diseases, their pathogenesis and prophylaxis
Cell Types and Its function , kingdom of life
Complications of Minimal Access Surgery at WLH
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Trump Administration's workforce development strategy
A systematic review of self-coping strategies used by university students to ...
Chinmaya Tiranga quiz Grand Finale.pdf
UV-Visible spectroscopy..pptx UV-Visible Spectroscopy – Electronic Transition...
Weekly quiz Compilation Jan -July 25.pdf
LNK 2025 (2).pdf MWEHEHEHEHEHEHEHEHEHEHE
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
Cell Structure & Organelles in detailed.
Updated Idioms and Phrasal Verbs in English subject
History, Philosophy and sociology of education (1).pptx
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Practical Manual AGRO-233 Principles and Practices of Natural Farming
2.FourierTransform-ShortQuestionswithAnswers.pdf
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...

Heuristics ofsoftwaretestability

  • 1. Heuristics of Software Testability by James Bach, Satisfice, Inc. The better we can control it, the more the testing can be auto- Controllability mated and optimized. • A scriptable interface or test harness is available. • Software and hardware states and variables can be controlled directly by the test engineer. • Software modules, objects, or functional layers can be tested independently. What you see is what can be tested. Observability • Past system states and variables are visible or queriable (e.g., transaction logs). • Distinct output is generated for each input. • System states and variables are visible or queriable during execution. • All factors affecting the output are visible. • Incorrect output is easily identified. • Internal errors are automatically detected and reported through self-testing mechanisms. To test it, we have to get at it. Availability • The system has few bugs (bugs add analysis and reporting overhead to the test process). • No bugs block the execution of tests. • Product evolves in functional stages (allows simultaneous development and testing). • Source code is accessible. The simpler it is, the less there is to test. Simplicity • The design is self-consistent. • Functional simplicity (e.g., the feature set is the minimum necessary to meet requirements) • Structural simplicity (e.g., modules are cohesive and loosely coupled) • Code simplicity (e.g. the code is not so convoluded that an outside inspector can’t effectively review it) The fewer the changes, the fewer the disruptions to testing. Stability • Changes to the software are infrequent. • Changes to the software are controlled and communicated. • Changes to the software do not invalidate automated tests. The more information we have, the smarter we will test. Information • The design is similar to other products we already know. • The technology on which the product is based is well understood. • Dependencies between internal, external and shared components are well understood. • The purpose of the software is well understood. • The users of the software are well understood. • The environment in which the software will be used is well understood. • Technical documentation is accessible, accurate, well organized, specific and detailed. • Software requirements are well understood. Copyright © 2003 James Bach