Fundamentals of Testing
Keywords:
Introduction; History of Testing; Differences between Error, fault and failure;
Necessity of Testing; 7 Testing Principles; Benefits of Testing; Traditional Vs
Modern Testing; Psychology of testing; Fundamental testing process;
What is Testing?
Software testing is a
process of evaluating a system. It can be:
·
Dynamic Testing – manual and automation testing.
Verifies against specified requirements.
· Measure Quality – collection of data and info
about quality of software to make informed decisions about releasing the
software product.
· Static Testing – Includes walkthroughs,
inspections and other structured reviews, designing and coding.
History of Testing?
Definition of Testing over
the years
Year – 1979: “Testing is the
process of executing a program or a system with the intent of finding errors.”
defined by Glenford Myers in the book “The Art of Software Testing”, Wiley,
1979.
Year – 1983: “Testing is any
activity aimed at evaluating an attribute of a program or system. Testing is
the measurement of software quality” defined by Bill Hetzel.
Year – 2002: “Testing is a
concurrent life-cycle process of engineering, using and maintaining testware in
order to measure and improve the quality of the software being tested.” defined
by Rick Craid and Stefan Jasklel.
Year – 2009: “Testing is the
process of exercising a program with the specific intent of finding errors
prior to delivery to the end user.” defined by Roger Pressman, McGrawHill,
2009.
Today: “The design of tests
for software and other engineering products can be as challenging as the
initial design of the product itself. Yet....software engineers often treat
testing as an afterthought, developing test cases that 'feel right' but have
little assurance of being complete. Recalling the objectives of testing, we
must design tests that have the highest likelihood of finding the most errors
with a minimum amount of time and effort.” defined by Roger Pressman,
McGrawHill.
Differences between Error
– Fault – Failure
In the context of Software:
Error: Its a human mistake
that results in an incorrect result.
Fault: Its known as
Bug/Defect, commonly due to manifestation of an 'error' in the software.
Failure: Its the deviation
of the actual result in the software from its expected service/result, due to
presence of fault.
Benefits of Testing?
Testing is needed because:
·
software will have faults
·
reliability of the software needs to be learned
·
failures can be extremely expensive, even
causing death or injury or monetory losses
·
to win trust of customers and avoid being sued
·
to stay in business
General Testing
Principles
Testing principles are aimed
at assisting all testers to test effectively.
1.
Exhausting Testing is impossible
2.
Testing shows presence of defects
3.
Defect Clustering
4.
Pestiside Paradox
5.
Early testing avoids fault multiplication
6.
Testing is context depemdent
7.
Absence of errors fallacy
How testing helps?
·
Builds confidence
·
Confirm result with respect to requirements
·
find faults in software
·
reduce costs
·
show that the system meets user needs
·
achieve software quality
Traditional Testing
versus Modern Testing
Traditional testing
·
aims at showing if the system works as it
should.
· easy test cases writing
·
faster test results
·
many faults remain undetected
· tests to pass test cases
Modern testing
·
aims at finding flaws and seeing where system
fails.
·
not so easy to write test cases
·
fast test results
·
only a few faults remain undetected
· tests to fail test cases
Psychology of Testing
·
Testing is not a glorious job
·
Its a destructive process
·
It brings bad news
·
It keeps you under pressure
·
Need a different mindset and view
·
Right communication of fault info to developers
and managers.
Fundamental Testing
Process
·
Test Planning and Control
·
Test Analysis and Design
·
Test Implementation and Execution
·
Evaluating exit criteria and reporting
·
Test Closure
About the author of this post:
Suparna Khamaru
I am a Software Test Engineer, who is quite passionate about testing and finding bugs. I am from Bangalore, India.
Feel free to reach me out on suggestions and improvements at My Linkedin Profile.
