You are on page 1of 3

Introduction

Developing software starts with identifying a part of real worlds that we are not satisfied with. Then:
(1) Requirements – document what is unsatisfactory – why new software is needed
(2) Design – create a high level description of the solution architecture
(3) create a detailed design
(4) Implementation – create the solution components
(5) Deployment – delivery of the solution
We are now satisfied with that part of the real world.

Example: tax calculator application for desktop


What are the quality concerns?
What do we test?
Why do we test it?

Quality issues:
● Moving from algorithms to code is not always non-trivial
● Mistakes can be made
● The algorithms might not meet the specification
● The specification might not cover all requirements
Testing helps us improve software

Pandora’s box

We must also add management and evolution imperatives into consideration.


There are many artefacts to be managed and tested in a quality aware development regime.

Quality
The quality attributes of a system are called non-functional (operational) requirements. Some examples
are:
● Correctness
● Reliability
● Usability
● Re-usability
● Reliability
● Maintainability
● Testability
We must plan early to test these.
Quality is about having practices in place that:
● Promote reproducible standards of work
● Promote continuous improvement

Quality Assurance – maintenance of a desired level of quantity in a product or a service, especially by


means of attention to every stage of the production process.

Testing identifies faults, whose removal increases the software quality by increasing software’s potential
reliability.
Testing is the measurement of software quality. We measure how closely we have achieved quality by
testing the relevant factors such as correctness, reliability, usability, maintainability, reusability, testability
etc.
Other factors that may determine the testing performed may be contractual or legal requirements,
normally defined in industry-specific standards or based on agreed best practice.

Error is a human action that produces an incorrect result.


A fault is a manifestation of an error in software (also called defect or bug).
A fault, if encountered, may cause a failure, which is a deviation of the software from its expected
delivery of service.

Reliability is the probability that software will not cause the failure of a system for a specified time
under specified conditions.

Acceptable errors?
Errors occur because we are not perfect and even if we were, we are working under constraints, such as
delivery deadline.
Errors result in faults in the artefacts of software development.
Faults may lead to failures. A single failure can cost nothing or a lot (or anything in between):
Web-page script missing – simply reload
Failure in safety-critical software can cause death or injury – e.g. aircraft control software

Testing approaches
Testing is primarily done to find faults, rather than prove correctness. There are 2 different ways we can
discover faults:
● Execute the software and try to detect faults – dynamic testing
● Scrutinise development documents without running the software – static testing

Desirable attributes of a tester


● Good communication skills
● Methodical
● Tenacious – persistent
● Accurate
● Independent
● Confident of the positive value of testing
● Happy to discover faults
Developers and testers often have different approaches – developers may see finding faults as a
destructive activity

Errors cause faults, which can cause failures. Bearing in mind the architecture and management
concerns, we can identify a large number of artefacts – any can have faults.
However, establishing quality control regime and setting up testing resources is a cost to the organisation
– is it worth the investment?

Testing is worth it in many situations:


When there is a significant danger of:
● Litigation arising from software malfunction
● High development costs caused by unexpected reworking
● High support costs caused by unexpected reworking
When there is a need to:
● Comply with customers’ mandated quality procedures
● Comply with auditable mandates – e.g. safety and security
● Maintain recognised quality accreditation – e.g. ISO 9000
● Maintain a reputation for quality to attract businesses

You might also like