Keeping Software Under Control

Software Testing / Chapter 01 01 / 07

Keeping
Software
Under Control.

Exhaustive testing · Risk · Quality
More and better testing seems a reasonable aim.
◉ ISTQB FOUNDATION · SECTION 1.4
The theme · what went wrong 02 / 07
Identifying the pattern

Either insufficient testing, or the wrong type of testing.

With all of the examples we have seen so far, what common themes can we identify? There may be several, but one theme is clear.

More and better software testing seems a reasonable aim, but that aim is not quite as simple to achieve as we might expect.

✗Insufficient testing doneGAP
✗Wrong type of testingGAP
?Exhaustive testing possible?MYTH
Not enough testing was done — or the right sort of testing was not done because the problem had not been detected.
The principle · exhaustive testing 03 / 07
Revisited Case
A5
Unused functionality caused catastrophic failure.

Exhaustive testing is not possible.

A particular software module was reused from the Ariane 4 programme. Only part of the functionality was required, but the module was incorporated without changes. The unused functionality indirectly caused a directional nozzle to move in an uncontrolled way.

Conditions were encountered in the first few seconds after the launch that were not expected, and therefore had not been tested. If every possible test had been run, the problem would have been detected.

However, if every test had been run, the testing would still be running now, and the ill-fated launch would never have taken place.

Testing every combination
IMPOSSIBLETO COMPLETE
The driver · testing and risk 04 / 07
Risk is inherent in all software development
Low Risk System

Video
game.

Lower probability of failure in a less complex system. The impact of failure is limited — inconvenience, not catastrophe.

Testing intensityLow
versus
High Risk System

Automatic
flight
control.

Greater probability of failure in the more complex system. The impact of failure is also greater — lives are at stake.

Testing intensityVery High

What we test, and how much we test it, must be related in some way to the risk. Greater risk implies more and better testing. These uncertainties become more significant as the system complexity and the implications of failure increase.

The target · testing and quality 05 / 07
Quality is notoriously hard to define

If a system meets its users' requirements, that is a starting point.

Functional Failure
F

Online tax
returns breach.

An obvious functional weakness in allowing one user to view another user's details. Hard to imagine any user finding that acceptable.

Non-functional Failure
NF

Top 10
criminals crash.

No failure of functionality — the system was simply swamped by requests. It could not deliver services because it was not designed to handle the peak load after media coverage.

The constraint · triangle of resources 06 / 07
Competing demands for resources

Three vertices that consume each other.

The software development process, like any other, must balance competing demands. If we need to deliver a system faster, it will usually cost more. These three affect one another, and also influence the features that are or are not included in the delivered software.

VERTEX / 01

Time

Deliver faster and the other two vertices must shift. Less time means higher cost or lower quality.

VERTEX / 02

Money

Increased budget can buy more time or more quality — but resources are never infinite.

VERTEX / 03

Quality

The degree to which the system meets requirements. Squeezed when time or money run short.

Conclusion · the role of testing 07 / 07
What testing can and cannot do

Testing cannot directly remove defects.

— STEP / 01
Examine
— STEP / 02
Report
— STEP / 03
Rectify
— OUTCOME
Quality
Testing cannot directly enhance quality. By reporting defects it makes their removal possible and so contributes to enhanced quality. The systematic coverage of a software product allows at least some aspects of quality to be measured — one component in the overall quality assurance activity.