Software Testing: What It Is and What It Does?

Software Testing / Chapter 01 01 / 06

What Testing
Is · What
It Does.

Debugging · Process · Techniques
An activity used to reduce risk and improve quality.
◉ ISTQB FOUNDATION · SECTION 1.6
The distinction · testing versus debugging 02 / 06
Different kinds of activity, both very important
Debugging

Identify
cause.
Correct.

The process developers go through to identify the cause of bugs or defects in code and undertake corrections. Ideally some check of the correction is made, but may not extend to checking other areas.

&
Testing

Systematic
exploration.
Report.

A systematic exploration with the main aim of finding and reporting defects. Does not include correction — but ensures changes are checked for their effect on other parts of the system.

Debugging does not give confidence that the system meets its requirements completely. Testing makes a rigorous examination and reports all defects found. Both are needed.
The activity · testing as a process 03 / 06
Much more than test execution

Before, during, and after.

We have already seen that there is much more to testing than test execution. Even more important is deciding what we are trying to achieve and setting clear objectives. A test designed to give confidence that a program functions correctly will be quite different from one designed to find as many defects as possible.

PHASE / 01
Before
Preparatory work: design the tests, set them up, decide what we are trying to achieve, and set clear objectives for each test.
PHASE / 02
During
Test execution: the systematic exploration of the component or system with the main aim of finding and reporting defects.
PHASE / 03
After
Record the results, check whether the tests are complete, and ensure defect corrections have been effective.
The objective · confidence vs. defects 04 / 06
Setting clear objectives for each test

A test designed to give confidence is quite different from one designed to find defects.

Objective A

Give
confidence.

A test designed to demonstrate that a program functions according to its specification. Seeks reassurance that the system works as intended.

Objective B

Find
defects.

A test designed to find as many defects as possible. Actively probes weak points, edge cases, and failure modes. Destructive intent.

The method · testing as a set of techniques 05 / 06
The paradox of a good test

A good test is one that finds a defect if one is present.

It might seem paradoxical, but a test that finds no defect has consumed resources but added no value; a test that finds a defect has created an opportunity to improve the quality of the product.

How do we design tests that find defects? We actually do two things to maximise the effectiveness of the tests.

01Well-proven test design techniquesMETHOD
02Documented testing principlesGUIDE
Even when we cannot apply rigorous test design for some reason, we can still apply the general principles to guide our testing.
Conclusion · what testing does 06 / 06
We define a test process to ensure

We do not miss critical steps.

— ROLE / 01
Debugging
— ROLE / 02
Process
— ROLE / 03
Techniques
Testing does not include correction of defects — these are passed on to the developer. Testing does, however, ensure that changes and corrections are checked for their effect on other parts of the system. Both are needed to achieve a quality result.