Fundamentals of Testing

Fundamentals of Testing

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. 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

No comments:

Post a Comment